Daniel Dunbar [Thu, 13 May 2010 03:19:36 +0000 (03:19 +0000)]
Fix -Asserts warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103694
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Thu, 13 May 2010 02:34:14 +0000 (02:34 +0000)]
MC: Switch to using explicit MCAlignFragments with OnlyAlignAddress bit instead
of manually doing padding/editing layout in LayoutSection().
- This probably seems like six-of-one and half-dozen of another, but there
is a method to my madness.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103693
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 13 May 2010 01:12:06 +0000 (01:12 +0000)]
Bring back VLD1q and VST1q and use them for reloading / spilling Q registers. This allows folding loads and stores into VMOVQ.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103692
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Thu, 13 May 2010 01:10:28 +0000 (01:10 +0000)]
MC/Mach-O: Add another zerofill test to improve coverage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103691
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Thu, 13 May 2010 01:10:26 +0000 (01:10 +0000)]
MC: Add MCAlignFragment::OnlyAlignAddress bit. This is a bit of magic that says the align fragment shouldn't contribute to the logical section size, it is will be used for cleaning up the code to handle section alignment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103690
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Thu, 13 May 2010 01:10:22 +0000 (01:10 +0000)]
MC: Add MCSectionData::AddressSize, which is the size of the address space consumed by the section. This can differ from both the section logical size, and the section size on disk (although the current code handles this without making an explicit distinction).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103689
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Thu, 13 May 2010 00:19:43 +0000 (00:19 +0000)]
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
Jakob Stoklund Olesen [Thu, 13 May 2010 00:19:39 +0000 (00:19 +0000)]
More asserts around physreg uses
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103685
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 13 May 2010 00:17:02 +0000 (00:17 +0000)]
Expand VMOVQQ into a pair of VMOVQ.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103684
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 13 May 2010 00:16:46 +0000 (00:16 +0000)]
Mark some pattern-less instructions as neverHasSideEffects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103683
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 13 May 2010 00:10:34 +0000 (00:10 +0000)]
fix rdar://
7965971 and a fixme: use ParseIdentifier in
ParseDirectiveDarwinZerofill instead of hard coding the
check for identifier. This allows quoted symbol names to
be used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103682
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 13 May 2010 00:02:47 +0000 (00:02 +0000)]
reapply r103668 with a fix. Never make "minor syntax changes"
after testing before committing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103681
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 13 May 2010 00:00:35 +0000 (00:00 +0000)]
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
Evan Cheng [Wed, 12 May 2010 23:59:42 +0000 (23:59 +0000)]
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
Chris Lattner [Wed, 12 May 2010 23:40:59 +0000 (23:40 +0000)]
revert r103668 for now, it is apparently breaking things.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103677
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 12 May 2010 23:13:36 +0000 (23:13 +0000)]
moffset forms of moves are x86-32 only, make the parser
lower them to the correct x86-64 instructions since we
don't have a clean way to handle this in td files yet.
rdar://
7947184
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103668
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 12 May 2010 23:13:12 +0000 (23:13 +0000)]
Fix some potential issues in the pseudo instruction expansion phase: copy implicit operands and memoperands. Also, expand instructions even if their defs are "dead" since they may have implicit kill operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103667
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 12 May 2010 22:56:23 +0000 (22:56 +0000)]
MC: Move MCAlignFragment::EmitNops value out of the constructor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103665
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 12 May 2010 22:51:38 +0000 (22:51 +0000)]
MC: Eliminate MCZeroFillFragment, it is no longer needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103664
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 12 May 2010 22:51:35 +0000 (22:51 +0000)]
MC: Explicitly check that only virtual fragments appear in virtual sections.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103663
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 12 May 2010 22:51:32 +0000 (22:51 +0000)]
MC: Switch MCFillFragment to storing total fill size instead of a count. This allows using ValueSize==0 to represent a virtual fill.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103662
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 12 May 2010 22:51:27 +0000 (22:51 +0000)]
MC: Drop support for alignment in ZeroFill fragment, we can just use
MCAlignFragments for this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103661
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 12 May 2010 22:48:24 +0000 (22:48 +0000)]
fix the encoding of the obscure "moffset" forms of moves, i386
part first. rdar://
7947184
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103660
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Wed, 12 May 2010 21:48:15 +0000 (21:48 +0000)]
Clear CachedFunctionInfo upon Pass::releaseMemory. Because ValueMap will abort
on RAUW of functions, this is a correctness issue instead of a mere memory
usage problem.
No testcase until the new MergeFunctions can land.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103653
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 12 May 2010 21:47:58 +0000 (21:47 +0000)]
lit: Fix a sh lexing bug which caused annotate-token.m to fail when run with the
internal shell parser; we weren't lexing the quotes in a command like::
clang -DFOO='hello'
correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103652
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 12 May 2010 21:47:55 +0000 (21:47 +0000)]
Simplify.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103651
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 12 May 2010 21:35:25 +0000 (21:35 +0000)]
MC: Factor out MCAssembler::LayoutFragment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103649
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 12 May 2010 21:35:22 +0000 (21:35 +0000)]
MC: Tweak section layout to not relying on accumulating address value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103648
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 12 May 2010 21:35:19 +0000 (21:35 +0000)]
ADT: Add ilist_node::get{Prev,Next}Node, which return the adjacent node or null.
- This provides a convenient alternative to using something llvm::prior or
manual iterator access, for example::
if (T *Prev = foo->getPrevNode())
...
instead of::
iterator it(foo);
if (it != begin()) {
--it;
...
}
- Chris, please review.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103647
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 12 May 2010 20:20:22 +0000 (20:20 +0000)]
Remove a dead fixme.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103642
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 12 May 2010 18:46:03 +0000 (18:46 +0000)]
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
Devang Patel [Wed, 12 May 2010 18:31:04 +0000 (18:31 +0000)]
Test case for r103633.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103634
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 12 May 2010 17:56:47 +0000 (17:56 +0000)]
MC: Simplify LayoutSection to just take the index of the section to layout.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103627
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 12 May 2010 17:56:44 +0000 (17:56 +0000)]
lit: Fix OneCommandPerFileTest format when tests are specified directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103626
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 12 May 2010 17:56:42 +0000 (17:56 +0000)]
lit: Add support for 'lit ... @foo', which reads a list of tests to run from
foo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103625
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 12 May 2010 15:42:59 +0000 (15:42 +0000)]
MC: Track section layout order explicitly, and use to simplify.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103616
91177308-0d34-0410-b5e6-
96231b3b80d8
Nathan Jeffords [Wed, 12 May 2010 07:36:03 +0000 (07:36 +0000)]
stylistic change to MCSectionCOFF::PrintSwitchToSection COMDAT handling
Made a stylistic changed to the code/comments related to the unsupported COMDAT selection type IMAGE_COMDAT_SELECT_LARGEST based on from Anton Korobeynikov.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103590
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Wed, 12 May 2010 07:11:33 +0000 (07:11 +0000)]
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
Rafael Espindola [Wed, 12 May 2010 05:16:34 +0000 (05:16 +0000)]
Add support for movi32 of global values to the new (MC) asm printer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103576
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Wed, 12 May 2010 05:04:20 +0000 (05:04 +0000)]
Testcase for llvm 103572 (
7898991).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103574
91177308-0d34-0410-b5e6-
96231b3b80d8
Nathan Jeffords [Wed, 12 May 2010 04:26:09 +0000 (04:26 +0000)]
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
Evan Cheng [Wed, 12 May 2010 01:42:50 +0000 (01:42 +0000)]
vst instructions are modeled as this:
v1024 = REG_SEQUENCE ...
v1025 = EXTRACT_SUBREG v1024, 5
v1026 = EXTRACR_SUBREG v1024, 6
= VSTxx <addr>, v1025, v1026
The REG_SEQUENCE ensures the sources that feed into the VST instruction
are getting the right register allocation so they form a large super-
register. The extract_subreg will be coalesced away all would just work:
v1024 = REG_SEQUENCE ...
= VSTxx <addr>, v1024:5, v1024:6
The problem is if the coalescer isn't run, the extract_subreg instructions
would stick around and there is no assurance v1025 and v1026 will get the
right registers.
As a short term workaround, teach the NEON pre-allocation pass to transfer
the sub-register indices over. An alternative would be do it 2addr pass
when reg_sequence's are eliminated. But that *seems* wrong and require
updating liveness information.
Another alternative is to do this in the scheduler when the instructions are
created. But that would mean somehow the scheduler this has to be done for
correctness reason. That's yucky as well. So for now, we are leaving this
in the target specific pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103540
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 12 May 2010 01:29:36 +0000 (01:29 +0000)]
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
Evan Cheng [Wed, 12 May 2010 01:27:49 +0000 (01:27 +0000)]
Code clean up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103538
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 12 May 2010 00:54:20 +0000 (00:54 +0000)]
MC/X86: Extend suffix matching hack to match 'q' suffix.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103535
91177308-0d34-0410-b5e6-
96231b3b80d8
Nathan Jeffords [Wed, 12 May 2010 00:52:54 +0000 (00:52 +0000)]
Added a trivial function to modify the flags field of MCSymbolData class. The function takes the value and a mask, and clears the mask bits before applying the value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103534
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 12 May 2010 00:38:17 +0000 (00:38 +0000)]
MC/Mach-O/x86_64: Add a new hook for checking whether a particular section can
be diced into atoms, and adjust getAtom() to take this into account.
- This fixes relocations to symbols in fixed size literal sections, for
example.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103532
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 12 May 2010 00:11:24 +0000 (00:11 +0000)]
Enable a bunch more -regalloc=fast tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103531
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 12 May 2010 00:11:19 +0000 (00:11 +0000)]
Avoid scoping issues, fix buildbots
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103530
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 11 May 2010 23:54:07 +0000 (23:54 +0000)]
Add initial kill flag support to FastISel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103529
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Tue, 11 May 2010 23:53:13 +0000 (23:53 +0000)]
Make Clang happy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103528
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Tue, 11 May 2010 23:53:11 +0000 (23:53 +0000)]
MC/Mach-O/x86_64: Fix PCrel adjustment for x86_64, which was using the fixup
offset instead of the fixup address as intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103527
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Tue, 11 May 2010 23:53:07 +0000 (23:53 +0000)]
MC/Mach-O: As Kevin pointed out, 'Address' is really an offset -- rename to clarify.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103526
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Tue, 11 May 2010 23:53:05 +0000 (23:53 +0000)]
MC/Mach-O: Fix a crash on invalid.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103525
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeffrey Yasskin [Tue, 11 May 2010 23:25:16 +0000 (23:25 +0000)]
Fix PR6951 by fixing Module leaks in bugpoint.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103523
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Tue, 11 May 2010 23:24:47 +0000 (23:24 +0000)]
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
Jakob Stoklund Olesen [Tue, 11 May 2010 23:24:45 +0000 (23:24 +0000)]
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
Dan Gohman [Tue, 11 May 2010 21:59:14 +0000 (21:59 +0000)]
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
Evan Cheng [Tue, 11 May 2010 21:07:36 +0000 (21:07 +0000)]
Avoid breaking vstd when reg_sequence is not used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103513
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Tue, 11 May 2010 20:51:07 +0000 (20:51 +0000)]
One more -regalloc=fast test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103509
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Tue, 11 May 2010 20:51:04 +0000 (20:51 +0000)]
Silence warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103508
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 11 May 2010 20:46:04 +0000 (20:46 +0000)]
Simplify this logic of creating a default Features object.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103507
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Tue, 11 May 2010 20:30:28 +0000 (20:30 +0000)]
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
Dan Gohman [Tue, 11 May 2010 20:30:00 +0000 (20:30 +0000)]
Revert r103493, materializing functions in the regular PassManager.
It works in simple cases, but it isn't a general solution.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103499
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 11 May 2010 20:16:09 +0000 (20:16 +0000)]
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
Dan Gohman [Tue, 11 May 2010 19:58:43 +0000 (19:58 +0000)]
Teach the regular pass manager how to materialize functions as needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103493
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 11 May 2010 19:57:55 +0000 (19:57 +0000)]
Remove the "WantsWholeFile" concept, as it's no longer needed. CBE
and the others use the regular addPassesToEmitFile hook now, and
llc no longer needs a bunch of redundant code to handle the
whole-file case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103492
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 11 May 2010 19:11:43 +0000 (19:11 +0000)]
Trim #includes and forward declarations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103489
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Tue, 11 May 2010 18:54:45 +0000 (18:54 +0000)]
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
Dan Gohman [Tue, 11 May 2010 18:03:41 +0000 (18:03 +0000)]
Fix a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103483
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 11 May 2010 17:31:57 +0000 (17:31 +0000)]
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
Daniel Dunbar [Tue, 11 May 2010 17:22:50 +0000 (17:22 +0000)]
MC/Mach-O x86_64: Switch to using fragment atom symbol.
- This eliminates getAtomForAddress() (which was a linear search) and
simplifies getAtom().
- This also fixes some correctness problems where local labels at the same
address as non-local labels could be assigned to the wrong atom.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103480
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Tue, 11 May 2010 17:22:45 +0000 (17:22 +0000)]
Test commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103479
91177308-0d34-0410-b5e6-
96231b3b80d8
Tanya Lattner [Tue, 11 May 2010 16:47:42 +0000 (16:47 +0000)]
Test commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103478
91177308-0d34-0410-b5e6-
96231b3b80d8
Tanya Lattner [Tue, 11 May 2010 16:46:45 +0000 (16:46 +0000)]
Test commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103477
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 11 May 2010 16:21:03 +0000 (16:21 +0000)]
Remove the TargetLowering::getSubtarget() virtual function, which
was unused. TargetMachine::getSubtarget() is used instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103474
91177308-0d34-0410-b5e6-
96231b3b80d8
Kalle Raiskila [Tue, 11 May 2010 11:00:02 +0000 (11:00 +0000)]
Make SPU backend not assert on jump tables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103466
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 11 May 2010 07:26:32 +0000 (07:26 +0000)]
Select @llvm.trap to the special B with 1111 condition (i.e. trap) instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103459
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Tue, 11 May 2010 06:17:44 +0000 (06:17 +0000)]
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
Bill Wendling [Tue, 11 May 2010 01:33:39 +0000 (01:33 +0000)]
Don't create a StringRef with a NULL value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103455
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Callanan [Tue, 11 May 2010 01:27:08 +0000 (01:27 +0000)]
Extended the edis "IsBranch" property to call
instructions as well. Added support for checking
this to the llvm-mc tester as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103454
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 11 May 2010 01:19:40 +0000 (01:19 +0000)]
Model some vst3 and vst4 with reg_sequence.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103453
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 11 May 2010 00:30:02 +0000 (00:30 +0000)]
The getDefaultSubtargetFeatures method of SubtargetFeature did actually return a
string of features for that target. However LTO was using that string to pass
into the "create target machine" stuff. That stuff needed the feature string to
be in a particular form. In particular, it needed the CPU specified first and
then the attributes. If there isn't a CPU specified, it required it to be blank
-- e.g., ",+altivec". Yuck.
Modify the getDefaultSubtargetFeatures method to be a non-static member
function. For all attributes for a specific subtarget, it will add them in like
normal. It will also take a CPU string so that it can satisfy this horrible
syntax.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103451
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 11 May 2010 00:20:03 +0000 (00:20 +0000)]
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
Evan Cheng [Tue, 11 May 2010 00:04:31 +0000 (00:04 +0000)]
Ensure REG_SEQUENCE source operands are unique.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103449
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Mon, 10 May 2010 23:15:20 +0000 (23:15 +0000)]
MC/Mach-O: Fix another mismatch with .weak_definition, we shouldn't use a
scattered relocation entry with a .weak_definition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103443
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Mon, 10 May 2010 23:15:13 +0000 (23:15 +0000)]
MC/Mach-O: Factor out doesSymbolRequireExternRelocation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103442
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 10 May 2010 23:08:19 +0000 (23:08 +0000)]
Indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103441
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 10 May 2010 22:49:55 +0000 (22:49 +0000)]
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
Daniel Dunbar [Mon, 10 May 2010 22:45:09 +0000 (22:45 +0000)]
MC/Mach-O: Explicitly track atoms, as represented by their defining symbol, for each fragment (not yet used).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103438
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 10 May 2010 21:26:24 +0000 (21:26 +0000)]
Model some vld3 instructions with REG_SEQUENCE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103437
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 10 May 2010 21:25:30 +0000 (21:25 +0000)]
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
Evan Cheng [Mon, 10 May 2010 21:24:55 +0000 (21:24 +0000)]
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
Chris Lattner [Mon, 10 May 2010 21:23:48 +0000 (21:23 +0000)]
this really is needed. :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103434
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 10 May 2010 21:01:47 +0000 (21:01 +0000)]
just remove this, it isn't needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103432
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 10 May 2010 20:59:18 +0000 (20:59 +0000)]
simplify more.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103431
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 10 May 2010 20:58:42 +0000 (20:58 +0000)]
Simplify by using startswith instead of substr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103430
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 10 May 2010 20:53:17 +0000 (20:53 +0000)]
fix PR7105 by enumerating MDNodes on all @llvm.foo
function calls, not just recognized intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103428
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 10 May 2010 20:51:06 +0000 (20:51 +0000)]
fix a pretty obvious typo. We test things before committing them, right?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103427
91177308-0d34-0410-b5e6-
96231b3b80d8
David Greene [Mon, 10 May 2010 20:24:27 +0000 (20:24 +0000)]
Fix PR6875:
This includes a patch by Roman Divacky to fix the initial crash.
Move the actual addition of passes from *PassManager::add to
*PassManager::addImpl. That way, when adding printer passes we won't
recurse infinitely.
Finally, check to make sure that we are actually adding a FunctionPass
to a FunctionPassManager before doing a print before or after it.
Immutable passes are strange in this way because they aren't
FunctionPasses yet they can be and are added to the FunctionPassManager.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103425
91177308-0d34-0410-b5e6-
96231b3b80d8