Chris Lattner
b0db161f5b
Start of a pass for recognizing memset and memcpy idioms.
...
No functionality yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122562 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-26 19:32:44 +00:00
Chris Lattner
687140c818
Move getOrEnforceKnownAlignment out of instcombine into Transforms/Utils.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122554 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-25 20:37:57 +00:00
Michael J. Spencer
43ee29d418
Support/PathV1: Deprecate makeAbsolute and remove Unix impl because it annoys people.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122553 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-25 20:10:11 +00:00
Eric Christopher
7853ae1d97
Header warning patrol.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122551 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-25 02:38:01 +00:00
Rafael Espindola
fea753b397
Merge IsFixupFullyResolved and IsSymbolRefDifferenceFullyResolved. We now
...
have a single point where targets test if a relocation is needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122549 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-24 21:22:02 +00:00
Andrew Trick
a75ce9f5d2
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
2010-12-24 07:10:19 +00:00
Andrew Trick
2da8bc8a5f
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
2010-12-24 05:03:26 +00:00
Andrew Trick
6e8f4c4048
whitespace
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122539 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-24 04:28:06 +00:00
Chris Lattner
036609bd7d
Flag -> Glue, the ongoing saga
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122513 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-23 18:28:41 +00:00
Chris Lattner
29d8f0cae4
flags -> glue for selectiondag
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122509 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-23 17:24:32 +00:00
Chris Lattner
a4359be032
sdisel flag -> glue.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122507 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-23 17:13:18 +00:00
Jeffrey Yasskin
8e68c38735
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
2010-12-23 00:58:24 +00:00
Dan Gohman
df3ee64d79
Constify.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122447 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-22 22:10:08 +00:00
Rafael Espindola
90a5a0cd7c
Rename NeedsSetToChangeDiffSize to HasAggressiveSymbolFolding which is a much
...
better name and matches what is used in the MachO writer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122443 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-22 21:51:29 +00:00
Rafael Espindola
33a38a1b5a
Use references and simplify.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122405 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-22 16:11:57 +00:00
Rafael Espindola
7a45903bf4
Don't relax org or align. They change size as the relaxation happens, but they
...
are not actually relaxed. For example, a section with only alignments will never
needs relaxation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122356 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-21 20:35:18 +00:00
Daniel Dunbar
e1feeb9da4
MC/Mach-O: Shuffle enums a bit to make it harder to inadvertently use the wrong
...
type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122334 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-21 15:26:45 +00:00
Duncan Sands
82fdab3358
Pull a few more simplifications out of instcombine (there are still
...
plenty left though!), in particular for multiplication.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122330 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-21 14:00:22 +00:00
Rafael Espindola
62b83b62f3
Layout one section until no relaxations are done and then move to the next
...
section.
This helps because in practice sections form a dag with debug sections pointing
to text sections. Finishing up the text sections first makes the debug section
relaxation trivial.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122314 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-21 04:22:09 +00:00
Chris Lattner
f1b4eafbfe
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
2010-12-21 02:38:05 +00:00
Jakob Stoklund Olesen
b907e8a2d4
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
2010-12-21 00:48:17 +00:00
Jakob Stoklund Olesen
2a6899c539
Add ADT/IntEqClasses.h as a light-weight implementation of EquivalenceClasses.h.
...
This implementation already exists as ConnectedVNInfoEqClasses in
LiveInterval.cpp, and it seems to be generally useful to have a light-weight way
of forming equivalence classes of small integers.
IntEqClasses doesn't allow enumeration of the elements in a class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122293 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-21 00:04:46 +00:00
Owen Anderson
3b77f56194
Revert r122114 (CallbackVH observing use-list changes) because it caused severe slowdowns on the Linux self-host configuration.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122279 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-20 22:28:03 +00:00
Bill Wendling
d7a0852464
This is still used and issuing an annoying warning. Don't deprecate something in
...
the library unless *all* uses have been converted over to the new form.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122267 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-20 21:14:18 +00:00
Duncan Sands
43ff68ded0
Add a new convenience pass for testing InstructionSimplify. Previously
...
it could only be tested indirectly, via instcombine, gvn or some other
pass that makes use of InstructionSimplify, which means that testcases
had to be carefully contrived to dance around any other transformations
that that pass did.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122264 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-20 20:54:37 +00:00
Michael J. Spencer
c41f4de754
Fix spelling.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122244 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-20 13:30:37 +00:00
Duncan Sands
0d7ce5ffa4
There is no need for isAssociative to take the type as an argument anymore.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122242 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-20 13:10:23 +00:00
Duncan Sands
8e4f4390bc
Discourage people from using isWeakForLinker when they should be using
...
mayBeOverridden.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122241 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-20 10:57:01 +00:00
Chris Lattner
4d8455ea4d
update comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122212 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-20 00:56:59 +00:00
Nick Lewycky
9d38acb254
Use the new way of silencing this warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122195 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-19 20:57:14 +00:00
Nick Lewycky
476b242fe7
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
2010-12-19 20:43:38 +00:00
Chris Lattner
cc3029acdd
add a version of IRBuilder::SetInsertPoint that takes an instruction.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122180 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-19 19:16:22 +00:00
Chris Lattner
43afe75ad0
remove dead header
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122169 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-19 04:49:11 +00:00
Michael J. Spencer
c3207d8b5a
Support/PathV1: Clarify deprecation warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122159 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-18 22:23:24 +00:00
Michael J. Spencer
7385509101
Support/PathV1: Deprecate get{Basename,Dirname,Suffix}.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122157 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-18 22:23:07 +00:00
Eric Christopher
9390983b08
Header warning patrol.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122152 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-18 10:54:29 +00:00
Roman Divacky
7529b16410
Add support for lexing single quotes like 'c'.
...
This fixed 8615.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122150 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-18 08:56:37 +00:00
Owen Anderson
fffa863536
Revert r122143 through r122140, which collectively broke the LLVMC tests on
...
the buildbots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122149 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-18 07:37:18 +00:00
Rafael Espindola
3132780a2e
Merge isAbsolute into IsSymbolRefDifferenceFullyResolved.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122148 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-18 06:27:54 +00:00
Rafael Espindola
1ec5bd31fe
Remove the MCObjectFormat class.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122147 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-18 05:37:28 +00:00
Michael J. Spencer
47e8ae6324
Support/PathV1: Clarify deprecation warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122143 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-18 04:13:54 +00:00
Michael J. Spencer
b9c767cce5
Support/PathV1: Deprecate get{Basename,Dirname,Suffix}.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122141 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-18 04:13:36 +00:00
Rafael Espindola
d076482ab7
Revert 122011, 122012, 122013, 122023 adding back an important optimization.
...
I added a note, but suggestions on how to add a test are really welcome.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122138 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-18 03:57:21 +00:00
Rafael Espindola
bff66a86e6
Move some data to the TargetWriter.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122134 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-18 03:27:34 +00:00
Michael J. Spencer
b3127bb06a
Support/PathV1: Deprecate getLast.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122116 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-18 00:19:10 +00:00
Owen Anderson
a479b23256
Add support to CallbackVH to receive notification when a Value's use-list changes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122114 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-18 00:07:15 +00:00
Jakob Stoklund Olesen
89cab93fe9
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
2010-12-18 00:06:56 +00:00
Jakob Stoklund Olesen
8d12140437
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
2010-12-17 23:16:38 +00:00
Jakob Stoklund Olesen
f428eb6c1b
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
2010-12-17 23:16:32 +00:00
Bill Wendling
976ef86689
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
2010-12-17 23:09:14 +00:00