Owen Anderson
2912df072d
Remove incorrect and poorly tested code for trying to reason about values on default edges of
...
switches. Just return the conservatively correct answer.
llvm-svn: 112876
2010-09-02 22:16:52 +00:00
Anton Korobeynikov
56291f7e53
Properly allocate win64 shadow reg area.
...
Patch by Jan Sjodin!
llvm-svn: 112875
2010-09-02 22:16:28 +00:00
Dan Gohman
3afbd60320
Remove obsolete comments about throwing exceptions.
...
llvm-svn: 112874
2010-09-02 22:14:51 +00:00
John McCall
7f55c258c6
After some discussion with djg, teach SmallVector to grow from a zero
...
capacity and remove the workaround in SmallVector<T,0>. There are some
theoretical benefits to a N->2N+1 growth policy anyway.
llvm-svn: 112870
2010-09-02 21:55:03 +00:00
Bruno Cardoso Lopes
814a69c330
Move decoding of insertps back to avoid unused warnings in x86 isel lowering, and fix movlhps/movhlps to decode 4 elements shuffles
...
llvm-svn: 112869
2010-09-02 21:51:11 +00:00
Devang Patel
3bffd52d78
Detect undef value early and save unnecessary NodeMap query.
...
llvm-svn: 112864
2010-09-02 21:29:42 +00:00
Dan Gohman
3c9b5f394b
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.
llvm-svn: 112861
2010-09-02 21:18:42 +00:00
Devang Patel
98d3edfe2a
Tidy up.
...
llvm-svn: 112858
2010-09-02 21:02:27 +00:00
Sandeep Patel
0ca17f7e8a
Fix an unnecessary XFAIL
...
llvm-svn: 112853
2010-09-02 20:19:24 +00:00
Jim Grosbach
b2a9025bad
trailing whitespace
...
llvm-svn: 112852
2010-09-02 19:52:39 +00:00
Owen Anderson
67dee4dcac
Fix typo. I accidentally edited the wrong file before my last commit.
...
llvm-svn: 112851
2010-09-02 19:52:06 +00:00
Benjamin Kramer
e39017cb97
Add AsmParser support for the ELF .previous directive. Patch by Roman Divacky.
...
llvm-svn: 112849
2010-09-02 18:53:37 +00:00
Jim Grosbach
6040995128
remove trailing whitespace
...
llvm-svn: 112847
2010-09-02 18:44:51 +00:00
Bruno Cardoso Lopes
c79f50170a
Move x86 specific shuffle mask decoding to its own header, it's also going to be used elsewhere. Also trim trailing whitespaces
...
llvm-svn: 112846
2010-09-02 18:40:13 +00:00
Jim Grosbach
35f3252036
The scavenger should just use getAllocatableSet() rather than reinventing it
...
locally.
llvm-svn: 112845
2010-09-02 18:29:04 +00:00
Dan Gohman
9e857449de
Apply a patch from Kees van Reeuwijk to add support for Minix.
...
Minix apparently doesn't like double-slash separators, and there's
no apparent need for them here.
llvm-svn: 112844
2010-09-02 18:24:46 +00:00
Owen Anderson
a8c896b704
Fix a bug in LazyValueInfo that CorrelatedValuePropagation exposed: In the LVI lattice, undef and the full set ConstantRange should not
...
be treated as equivalent.
llvm-svn: 112843
2010-09-02 18:23:58 +00:00
Jim Grosbach
aec776fd2a
handle case where a register class is specified
...
llvm-svn: 112842
2010-09-02 18:18:52 +00:00
Jim Grosbach
66c681a644
Now that register allocation properly considers reserved regs, simplify the
...
ARM register class allocation order functions to take advantage of that.
llvm-svn: 112841
2010-09-02 18:14:29 +00:00
Dan Gohman
b8cfcb05d4
Add a comment.
...
llvm-svn: 112836
2010-09-02 17:35:10 +00:00
Benjamin Kramer
5af02b0360
Allow MCSA_WeakRef in ELF. Patch by Roman Divacky.
...
llvm-svn: 112834
2010-09-02 17:18:32 +00:00
Jim Grosbach
944aece38a
Anti-dependency breaking needs to be careful not to use reserved regs
...
llvm-svn: 112832
2010-09-02 17:12:55 +00:00
Devang Patel
da3ef85460
Fix .debug_range for linux. Patch by Krister Wombell.
...
llvm-svn: 112830
2010-09-02 16:43:44 +00:00
Jim Grosbach
5d43a35e6d
Mask out reserved registers when constructing the set of allocatable regs.
...
llvm-svn: 112828
2010-09-02 16:31:21 +00:00
Bob Wilson
5a1df805e5
Fill in a missing comment.
...
llvm-svn: 112826
2010-09-02 16:17:29 +00:00
Bob Wilson
75a6408f88
Convert VLD1 and VLD2 instructions to use pseudo-instructions until
...
after regalloc.
llvm-svn: 112825
2010-09-02 16:00:54 +00:00
Mikhail Glushenkov
07457f0ed9
llvmc: .dylib support.
...
llvm-svn: 112818
2010-09-02 14:06:21 +00:00
Duncan Sands
8dda07428a
Print the number of uses of a function in the .ll since it can be informative
...
and there seems to be no reason not to.
llvm-svn: 112812
2010-09-02 08:52:23 +00:00
Lang Hames
9a6f8ee32c
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.
llvm-svn: 112811
2010-09-02 08:27:00 +00:00
Duncan Sands
6778149f7e
Reapply commit 112699, speculatively reverted by echristo, since
...
I'm sure it is harmless. Original commit message:
If PrototypeValue is erased in the middle of using the SSAUpdator
then the SSAUpdator may access freed memory. Instead, simply pass
in the type and name explicitly, which is all that was used anyway.
llvm-svn: 112810
2010-09-02 08:14:03 +00:00
Chandler Carruth
d30f8ec11e
Silence an ambiguous else warning from GCC.
...
llvm-svn: 112809
2010-09-02 07:08:05 +00:00
Nick Lewycky
3e19542ed3
Fix compile errors.
...
llvm-svn: 112808
2010-09-02 05:44:31 +00:00
Lang Hames
b59620f519
Added counters for PBQP reduction rules.
...
llvm-svn: 112807
2010-09-02 05:37:52 +00:00
Bruno Cardoso Lopes
489613f1e5
Replace unpckl_undef and unpckh_undef matching with target specific opcodes
...
llvm-svn: 112806
2010-09-02 05:23:12 +00:00
Bruno Cardoso Lopes
e4e4be3885
Move condition out to prepare for more matching
...
llvm-svn: 112805
2010-09-02 04:20:26 +00:00
Bruno Cardoso Lopes
bf7fd146c7
Remove checking for isUNPCKL_v_undef_Mask, the specific node is already emitted for it
...
llvm-svn: 112804
2010-09-02 03:57:58 +00:00
NAKAMURA Takumi
4fa39acb53
llvm::FindExecutable(): Retrieve the name with suffix.exe, if available.
...
bugpoint uses it.
llvm-svn: 112803
2010-09-02 03:46:04 +00:00
NAKAMURA Takumi
a224e5563e
test/loop-strength-reduce4: Add explicit triplet for Win32 host.
...
llvm-svn: 112802
2010-09-02 03:45:58 +00:00
NAKAMURA Takumi
54ce546865
test/twoaddr-coalesce: Do not use @main .
...
Win32 codegen emits implicit invoking __main into, to fail.
llvm-svn: 112801
2010-09-02 03:45:51 +00:00
Bruno Cardoso Lopes
6a7f634487
become more strict about when it's safe to use X86ISD::MOVLPS
...
llvm-svn: 112799
2010-09-02 02:35:51 +00:00
Eric Christopher
2020d69800
Clang's -ccc-host-triple was ignoring the arch specifier on my triple,
...
I don't need to implement this quite yet - and not for ConstantInt anyhow.
llvm-svn: 112798
2010-09-02 02:30:46 +00:00
Eric Christopher
92db201e23
This should be TargetMaterializeConstant instead.
...
llvm-svn: 112795
2010-09-02 01:48:11 +00:00
Eric Christopher
6a0333c1ed
One definition of isThumb is plenty, thanks.
...
llvm-svn: 112793
2010-09-02 01:39:14 +00:00
Jim Grosbach
8ee5cd99ef
Remove trailing whitespace
...
llvm-svn: 112790
2010-09-02 01:02:06 +00:00
Eric Christopher
74487fcbe7
Rework arm fast-isel load and store handling. Move offset computation
...
into the "address selection" routine and handle constant materialization
for stores.
llvm-svn: 112788
2010-09-02 00:53:56 +00:00
Jim Grosbach
64df92a9b2
Add a bit of debug output for register scavenging
...
llvm-svn: 112787
2010-09-02 00:51:37 +00:00
Chris Lattner
32eff0df9a
updates to make it clear that this applies to clang and other llvm subprojects.
...
llvm-svn: 112781
2010-09-02 00:09:17 +00:00
Jim Grosbach
6f2067659d
trivial cleanup
...
llvm-svn: 112779
2010-09-02 00:02:26 +00:00
Jim Grosbach
dffc9d328d
Simplify the tGPR register class now that the register allocators know not
...
to try to allocate reserved registers.
llvm-svn: 112774
2010-09-01 23:50:23 +00:00
Bob Wilson
38ab35a911
Remove NEON vmull, vmlal, and vmlsl intrinsics, replacing them with multiply,
...
add, and subtract operations with zero-extended or sign-extended vectors.
Update tests. Add auto-upgrade support for the old intrinsics.
llvm-svn: 112773
2010-09-01 23:50:19 +00:00
Dan Gohman
faa30f531a
Reword this comment. Don't mention outs(), as that's not what
...
this code is actually testing for.
llvm-svn: 112767
2010-09-01 23:33:02 +00:00
Chris Lattner
8af45a889d
deepen my MMX/SRoA hack to avoid hurting non-x86 codegen.
...
llvm-svn: 112763
2010-09-01 23:09:27 +00:00
Bruno Cardoso Lopes
04c25c15c7
Revert r112689, avoid those kind of checks cause they mess up with mmx
...
llvm-svn: 112760
2010-09-01 22:59:03 +00:00
Jim Grosbach
63a8eaf559
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.
llvm-svn: 112756
2010-09-01 22:48:34 +00:00
Dale Johannesen
092d3467bc
Recommit with changes. Comment out palignr for the
...
moment, as there's a testcase that uses it and expects it
to be subject to optimizations; we won't be doing that.
Some adjustments based on feedback from Bill.
llvm-svn: 112754
2010-09-01 22:43:48 +00:00
Bruno Cardoso Lopes
fea81b4831
Using target specific nodes for shuffle nodes makes the mask
...
check more strict, breaking some cases not checked in the
testsuite, but also exposes some foldings not done before,
as this example:
movaps (%rdi), %xmm0
movaps (%rax), %xmm1
movaps %xmm0, %xmm2
movss %xmm1, %xmm2
shufps $36, %xmm2, %xmm0
now is generated as:
movaps (%rdi), %xmm0
movaps %xmm0, %xmm1
movlps (%rax), %xmm1
shufps $36, %xmm1, %xmm0
llvm-svn: 112753
2010-09-01 22:33:20 +00:00
Eric Christopher
fde5a3d494
Some basic store support.
...
llvm-svn: 112752
2010-09-01 22:16:27 +00:00
Jakob Stoklund Olesen
4b6fd48bba
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.
llvm-svn: 112751
2010-09-01 22:15:35 +00:00
Dale Johannesen
78d95e0089
Apparently only Darwin passes long double misaligned. Compensate.
...
llvm-svn: 112748
2010-09-01 21:57:20 +00:00
Jim Grosbach
d5e72a1e84
tidy up trailing whitespace and an 80 column violation.
...
llvm-svn: 112746
2010-09-01 21:48:06 +00:00
Dan Gohman
0ad7d9c24e
Fix loop unswitching's assumption that a code path which either
...
infinite loops or exits will eventually exit. This fixes PR5373.
llvm-svn: 112745
2010-09-01 21:46:45 +00:00
Dale Johannesen
a1a33fc252
Revert 112740, it broke some clang tests somehow...
...
llvm-svn: 112744
2010-09-01 21:36:44 +00:00
Jim Grosbach
9dce31438d
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.
llvm-svn: 112743
2010-09-01 21:34:41 +00:00
Jim Grosbach
b070ddf6b4
The register allocator shouldn't consider allocating reserved registers. PBQP version.
...
llvm-svn: 112742
2010-09-01 21:23:03 +00:00
Jim Grosbach
5ccf18c2fc
The register allocator shouldn't consider allocating reserved registers.
...
r112728 did this for fast regalloc.
llvm-svn: 112741
2010-09-01 21:04:27 +00:00
Dale Johannesen
973ddaa088
Add a few more missing MMX operations. This should be it.
...
llvm-svn: 112740
2010-09-01 21:03:03 +00:00
Chris Lattner
44ab470c8e
update the tutorial to use CreateFAdd to create fp operations.
...
llvm-svn: 112733
2010-09-01 20:09:20 +00:00
Jim Grosbach
df6b67bf85
The register allocator shouldn't consider allocating reserved registers.
...
llvm-svn: 112728
2010-09-01 19:28:41 +00:00
Owen Anderson
5925053b32
Disable CorrelatedValuePropagation while I track down selfhost failures.
...
llvm-svn: 112727
2010-09-01 19:20:46 +00:00
Jim Grosbach
cb2e56fa82
tidy up a few 80-column and trailing whitespace bits.
...
llvm-svn: 112726
2010-09-01 19:16:29 +00:00
Bill Wendling
6456efaffd
The output of opt -stats must be sent to stderr. Patch by NAKAMURA Takumi!
...
llvm-svn: 112724
2010-09-01 18:32:56 +00:00
Owen Anderson
c637c49c11
Tentatively add correlated value propagation to the set of standard passes.
...
llvm-svn: 112723
2010-09-01 18:30:15 +00:00
Owen Anderson
73f988cafa
JumpThreading keeps LazyValueInfo up to date, so we don't need to rerun it
...
if we schedule another LVI-using pass afterwards.
llvm-svn: 112722
2010-09-01 18:27:22 +00:00
Eric Christopher
3ce9c4a65f
Add some more load types in.
...
llvm-svn: 112721
2010-09-01 18:01:32 +00:00
Eric Christopher
a5d315c665
Speculatively revert 112699 and 112702, they seem to be causing
...
self host errors on clang-x86-64.
llvm-svn: 112719
2010-09-01 17:29:10 +00:00
Chris Lattner
c19eaaa9d4
have the makefiles check the llvm-config error code instead of charging
...
on an producing weird link errors. Patch by Yuri Gribov!
llvm-svn: 112714
2010-09-01 16:11:17 +00:00
Chris Lattner
49a79412de
dead code patrol
...
llvm-svn: 112713
2010-09-01 16:06:39 +00:00
Chris Lattner
94f834348f
zap dead code.
...
llvm-svn: 112712
2010-09-01 16:04:34 +00:00
Chris Lattner
39eccb4754
temporarily revert r112664, it is causing a decoding conflict, and
...
the testcases should be merged.
llvm-svn: 112711
2010-09-01 16:00:50 +00:00
Chris Lattner
2333b12c8a
zap dead code.
...
llvm-svn: 112708
2010-09-01 15:44:05 +00:00
Chris Lattner
ec8724f250
remove dead code.
...
llvm-svn: 112707
2010-09-01 15:39:31 +00:00
Dan Gohman
a2233f2801
Make tool_output_file's raw_ostream instance a member variable instead
...
of a base class.
This makes it possible to unregister the file from FilesToRemove when
the file is done. Also, this eliminates the need for
formatted_tool_output_file.
llvm-svn: 112706
2010-09-01 14:20:41 +00:00
Dan Gohman
e201c07d23
Add an interface for unregistering a file from the FilesToRemove list.
...
llvm-svn: 112705
2010-09-01 14:17:34 +00:00
Michael J. Spencer
d8e5dfccc1
COFF: Update tests to reflect changes in last commit.
...
llvm-svn: 112704
2010-09-01 14:15:31 +00:00
Michael J. Spencer
c582c7b5c9
COFF: Fix incorrect SCT_COMPLEX_TYPE_SHIFT. Add a few constants.
...
llvm-svn: 112703
2010-09-01 14:09:36 +00:00
Duncan Sands
4d51e3fd17
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 :)
llvm-svn: 112702
2010-09-01 14:07:47 +00:00
Dan Gohman
858806fb8b
Make the iterator form of erase return void, since it always succeeds,
...
and since this is what std::map and std::set do.
llvm-svn: 112701
2010-09-01 14:00:35 +00:00
Duncan Sands
2afaef80e9
Define LLVM_GLOBAL_VISIBILITY to be __declspec(dllexport) on
...
windows systems.
llvm-svn: 112700
2010-09-01 13:07:11 +00:00
Duncan Sands
f7b18437b5
If PrototypeValue is erased in the middle of using the SSAUpdator
...
then the SSAUpdator may access freed memory. Instead, simply pass
in the type and name explicitly, which is all that was used anyway.
llvm-svn: 112699
2010-09-01 10:29:33 +00:00
Duncan Sands
5e2e7d7ff3
Add convenience class for working with eh.exception calls.
...
llvm-svn: 112698
2010-09-01 09:26:00 +00:00
Dale Johannesen
e13c04d6da
Attempt to fix buildbot.
...
llvm-svn: 112697
2010-09-01 05:19:06 +00:00
Chris Lattner
34e5361eb5
add a gross hack to work around a problem that Argiris reported
...
on llvmdev: SRoA is introducing MMX datatypes like <1 x i64>,
which then cause random problems because the X86 backend is
producing mmx stuff without inserting proper emms calls.
In the short term, force off MMX datatypes. In the long term,
the X86 backend should not select generic vector types to MMX
registers. This is being worked on, but won't be done in time
for 2.8. rdar://8380055
llvm-svn: 112696
2010-09-01 05:14:33 +00:00
Chris Lattner
b9ed4f252f
filecheckize
...
llvm-svn: 112695
2010-09-01 05:10:14 +00:00
Bruno Cardoso Lopes
b3825216ce
Use movlps, movlpd, movss and movsd specific nodes instead of pattern matching with movlp pattern fragment
...
llvm-svn: 112694
2010-09-01 05:08:25 +00:00
Dan Gohman
110ed64fbb
Revert 112442 and 112440 until the compile time problems introduced
...
by 112440 are resolved.
llvm-svn: 112692
2010-09-01 01:45:53 +00:00
Bruno Cardoso Lopes
6aaebe877b
minor change, simplify some logic
...
llvm-svn: 112689
2010-09-01 00:57:08 +00:00
Bruno Cardoso Lopes
2b025707a2
Move some functions around so they can be used for some other to come function
...
llvm-svn: 112687
2010-09-01 00:51:36 +00:00
Dale Johannesen
56661c5011
Add some MMX intrinsics that duplicate functionality
...
available in normal llvm operators. We aren't going to
use those for MMX any more because it's unsafe for the
optimizers to synthesize new MMX instructions.
llvm-svn: 112685
2010-09-01 00:40:09 +00:00
Devang Patel
ea63639da5
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.
llvm-svn: 112678
2010-08-31 23:50:19 +00:00
Dale Johannesen
52bd0dc3bb
Testcase for llvm checkin 112674.
...
llvm-svn: 112675
2010-08-31 23:43:55 +00:00
Benjamin Kramer
1835c13fc2
Remove noisy semicolon.
...
llvm-svn: 112673
2010-08-31 23:38:13 +00:00
Chris Lattner
030f02021b
licm is wasting time hoisting constant foldable operations,
...
instead of hoisting them, just fold them away. This occurs in the
testcase for PR8041, for example.
llvm-svn: 112669
2010-08-31 23:00:16 +00:00
Kevin Enderby
d94dacf829
This is the second of three patches to implement support for the .loc directive
...
and output the dwarf line number tables. This takes the current loc info after
an instruction is assembled and saves the needed info into an object that has
vector and for each section. These objects will be used for the final patch to
build and emit the encoded dwarf line number tables. Again for now this is only
in the Mach-O streamer but at some point will move to a more generic place.
llvm-svn: 112668
2010-08-31 22:55:11 +00:00
Dan Gohman
47308d5da3
Reapply r112432, now that the real problem is addressed.
...
llvm-svn: 112667
2010-08-31 22:53:17 +00:00
Dan Gohman
f01a5eed1e
Reapply r112433, now that the real problem is addressed.
...
llvm-svn: 112666
2010-08-31 22:52:12 +00:00
Dan Gohman
aabfc52790
Revert r110916. This patch is buggy because the code inside the
...
inner loop doesn't update all the variables in the outer loop.
llvm-svn: 112665
2010-08-31 22:50:31 +00:00
Bill Wendling
6789f8b6ae
We have a chance for an optimization. Consider this code:
...
int x(int t) {
if (t & 256)
return -26;
return 0;
}
We generate this:
tst.w r0, #256
mvn r0, #25
it eq
moveq r0, #0
while gcc generates this:
ands r0, r0, #256
it ne
mvnne r0, #25
bx lr
Scandalous really!
During ISel time, we can look for this particular pattern. One where we have a
"MOVCC" that uses the flag off of a CMPZ that itself is comparing an AND
instruction to 0. Something like this (greatly simplified):
%r0 = ISD::AND ...
ARMISD::CMPZ %r0, 0 @ sets [CPSR]
%r0 = ARMISD::MOVCC 0, -26 @ reads [CPSR]
All we have to do is convert the "ISD::AND" into an "ARM::ANDS" that sets [CPSR]
when it's zero. The zero value will all ready be in the %r0 register and we only
need to change it if the AND wasn't zero. Easy!
llvm-svn: 112664
2010-08-31 22:41:22 +00:00
Anton Korobeynikov
4e7351d2ba
Some fixes for NetBSD
...
llvm-svn: 112662
2010-08-31 22:38:00 +00:00
Bruno Cardoso Lopes
4b56d87290
Use x86 specific MOVSLDUP node, add more patterns to match it and remove useless load nodes
...
llvm-svn: 112661
2010-08-31 22:35:05 +00:00
Devang Patel
86ec8b3a3f
Reapply r112623. Included additional check for unused byval argument.
...
llvm-svn: 112659
2010-08-31 22:22:42 +00:00
Bruno Cardoso Lopes
61996ef835
Use x86 specific MOVSHDUP node and add more patterns to match it
...
llvm-svn: 112657
2010-08-31 22:22:11 +00:00
Bill Wendling
d657d82597
And ANDS pattern to match the t2ANDS pattern.
...
llvm-svn: 112654
2010-08-31 22:05:37 +00:00
Jakob Stoklund Olesen
94e90b9406
Stack slot access methods are in TargetInstrInfo.
...
llvm-svn: 112653
2010-08-31 22:01:07 +00:00
Dale Johannesen
9b7fdc0483
Comment typo.
...
llvm-svn: 112652
2010-08-31 21:53:15 +00:00
Jakob Stoklund Olesen
33e9fce2d6
Make %EFLAGS unallocatable.
...
No CCR virtual registers should exist, and %EFLAGS is used in ways that can
surprise RegAllocFast.
llvm-svn: 112650
2010-08-31 21:51:07 +00:00
Jakob Stoklund Olesen
7993dae7bd
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.
llvm-svn: 112649
2010-08-31 21:51:05 +00:00
Bruno Cardoso Lopes
5de15ce468
Use MOVHLPS node instead of matching using movhlps and movhlps_undef pattern fragments
...
llvm-svn: 112644
2010-08-31 21:38:49 +00:00
Chris Lattner
daca6f3483
tidy up
...
llvm-svn: 112643
2010-08-31 21:21:25 +00:00
Bruno Cardoso Lopes
03e4c35302
Use MOVLHPS and MOVHLPS x86 nodes whenever possible. Also remove some useless nodes
...
llvm-svn: 112642
2010-08-31 21:15:21 +00:00
Dan Gohman
90f29bcd90
Revert r112432. It appears to be exposing a problem in the emacs build.
...
llvm-svn: 112638
2010-08-31 20:58:44 +00:00
Owen Anderson
a5e6b3eca4
Merge 2010-08-31-InfiniteRecursion.ll into crash.ll.
...
llvm-svn: 112635
2010-08-31 20:27:17 +00:00
Owen Anderson
3c84ecb067
More cleanups of my JumpThreading transforms, including extracting some duplicated code into a helper function.
...
llvm-svn: 112634
2010-08-31 20:26:04 +00:00
Jakob Stoklund Olesen
2c325dc907
Ignore unallocatable registers in RegAllocFast.
...
llvm-svn: 112632
2010-08-31 19:54:25 +00:00
Devang Patel
529f248eb4
Revert r112623. It is causing self host build failures.
...
llvm-svn: 112631
2010-08-31 19:41:03 +00:00
Duncan Sands
11c23fc349
Update the Ada instructions to LLVM 2.7 (from LLVM 2.5).
...
llvm-svn: 112630
2010-08-31 19:40:21 +00:00
Owen Anderson
6fdcb172a9
Add an RAII helper to make cleanup of the RecursionSet more fool-proof.
...
llvm-svn: 112628
2010-08-31 19:24:27 +00:00
Owen Anderson
048efbe225
Only try to clean up the current block if we changed that block already.
...
llvm-svn: 112625
2010-08-31 18:55:52 +00:00
Jim Grosbach
9ce9210e47
SP relative offsets need to be adjusted by the local allocation size when
...
determining if they're likely to be in range of the SP when resolving
frame references.
llvm-svn: 112624
2010-08-31 18:52:31 +00:00
Devang Patel
8559932d36
Remember byval argument's frame index during argument lowering and use this info to emit debug info.
...
Fixes Radar 8367011.
llvm-svn: 112623
2010-08-31 18:50:09 +00:00
Jim Grosbach
6f6b590b99
this assert should just be a condition, since this function is just asking if
...
the offset is legally encodable, not actually trying to do the encoding.
llvm-svn: 112622
2010-08-31 18:49:31 +00:00
Owen Anderson
799a08ae48
Add a test for the duplicated-conditional situation illutrated by PR5652.
...
llvm-svn: 112621
2010-08-31 18:49:12 +00:00
Owen Anderson
cd4de7f399
Refactor my fix for PR5652 to terminate the predecessor lookups after the first failure.
...
llvm-svn: 112620
2010-08-31 18:48:48 +00:00
Chris Lattner
e2295f1c80
merge two tests.
...
llvm-svn: 112617
2010-08-31 18:44:03 +00:00
Owen Anderson
3931c85956
Manually reduce this testcase.
...
llvm-svn: 112615
2010-08-31 18:16:29 +00:00
Chris Lattner
fbcd165b59
merge two tests and convert to filecheck.
...
llvm-svn: 112613
2010-08-31 18:05:08 +00:00
Owen Anderson
ada0623725
Add a micro-test for the transforms I added to JumpThreading.
...
I have not been able to find a way to test each in isolation, for a few reasons:
1) The ability to look-through non-i1 BinaryOperator's requires the ability to look through non-constant
ICmps in order for it to ever trigger.
2) The ability to do LVI-powered PHI value determination only matters in cases that ProcessBranchOnPHI
can't handle. Since it already handles all the cases without other instructions in the def-use chain
between the PHI and the branch, it requires the ability to look through ICmps and/or BinaryOperators
as well.
llvm-svn: 112611
2010-08-31 17:59:07 +00:00
Jim Grosbach
ad9b6de3b6
Update test for 112609
...
llvm-svn: 112610
2010-08-31 17:58:47 +00:00
Jim Grosbach
365e931f7b
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.)
llvm-svn: 112609
2010-08-31 17:58:19 +00:00
Dan Gohman
444c24a9f0
Speculatively revert r112433.
...
llvm-svn: 112608
2010-08-31 17:56:47 +00:00
Benjamin Kramer
4226198a1d
Allow creation of SHT_NULL sections, from Roman Divacky.
...
llvm-svn: 112605
2010-08-31 17:03:33 +00:00
Duncan Sands
bb8a3f9f6d
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.
llvm-svn: 112597
2010-08-31 09:05:06 +00:00
Nick Lewycky
68984ede5c
Fix an infinite loop; merging two functions will create a new function (if the
...
two are weak, we make them thunks to a new strong function) so don't iterate
through the function list as we're modifying it.
Also add back the outermost loop which got removed during the cleanups.
llvm-svn: 112595
2010-08-31 08:29:37 +00:00
Owen Anderson
ce401be792
Don't perform an extra traversal of the function just to do cleanup. We can safely simplify instructions after each block has been processed without worrying about iterator invalidation.
...
llvm-svn: 112594
2010-08-31 07:55:56 +00:00
Bill Wendling
b70dc8777e
- Cleanup some whitespaces.
...
- Convert {0,1} and friends into 0b01, which is identical and more consistent.
llvm-svn: 112593
2010-08-31 07:50:46 +00:00
Owen Anderson
064b139c8d
Rename test directory to reflect new pass name.
...
llvm-svn: 112592
2010-08-31 07:50:31 +00:00
Owen Anderson
48d58ad64c
Rename ValuePropagation to a more descriptive CorrelatedValuePropagation.
...
llvm-svn: 112591
2010-08-31 07:48:34 +00:00
Owen Anderson
d2918a07bd
Rename file to something more descriptive.
...
llvm-svn: 112590
2010-08-31 07:41:39 +00:00
Owen Anderson
3997a07fb9
More Chris-inspired JumpThreading fixes: use ConstantExpr to correctly constant-fold undef, and be more careful with its return value.
...
This actually exposed an infinite recursion bug in ComputeValueKnownInPredecessors which theoretically already existed (in JumpThreading's
handling of and/or of i1's), but never manifested before. This patch adds a tracking set to prevent this case.
llvm-svn: 112589
2010-08-31 07:36:34 +00:00
Michael J. Spencer
618d21978d
Cleanup Whitespace.
...
llvm-svn: 112587
2010-08-31 06:36:46 +00:00
Michael J. Spencer
18f5005eb0
System: Fix getMagicNumber on windows.
...
getMagicNumber was treating the _binary_ data it read in as a
null terminated string. This resulted in the std::string
calculating the length, and causing an assert in other code that
assumed that the length it passed was the same as the length of
the string it would get back.
llvm-svn: 112586
2010-08-31 06:36:33 +00:00