Commit Graph

52887 Commits

Author SHA1 Message Date
Sandeep Patel 7460e0822f Fix method name in comment, per Bob Wilson.
llvm-svn: 84017
2009-10-13 20:25:58 +00:00
Dan Gohman 2dc6f8de03 Use the new CodeMetrics class to compute code size instead of
manually counting instructions.

llvm-svn: 84016
2009-10-13 20:12:23 +00:00
Dan Gohman abb728d3f4 Compute a full cost value even when a setjmp call is found.
llvm-svn: 84015
2009-10-13 20:10:10 +00:00
Dan Gohman 2ccea5d13f Split code not specific to Function inlining out into a separate class,
named CodeMetrics. Move it to be a non-nested class. Rename RegionInfo
back to FunctionInfo.

llvm-svn: 84013
2009-10-13 19:58:07 +00:00
David Goodwin 4c98efb917 Add debugging output.
llvm-svn: 84011
2009-10-13 19:16:03 +00:00
Ted Kremenek 5d81cb2084 Provide a mode for ImmutableMap/ImmutableSet to not automatically canonicalize the internal functional AVL trees. This should speedup clients that use ImmutableMap/ImmutableSet but don't require fast comparisons of maps.
llvm-svn: 84010
2009-10-13 19:08:10 +00:00
Sandeep Patel 423e42b371 Add ARMv6T2 SBFX/UBFX instructions. Approved by Anton Korobeynikov.
llvm-svn: 84009
2009-10-13 18:59:48 +00:00
Ted Kremenek f34311779c Update CMake file (lexically order files).
llvm-svn: 84008
2009-10-13 18:57:27 +00:00
Devang Patel 78cb102490 Do not write empty METADATA_ATTACHMENT record.
llvm-svn: 84006
2009-10-13 18:51:28 +00:00
Devang Patel 0b26c9e0b3 Remove unnecessary assert.
llvm-svn: 84004
2009-10-13 18:51:03 +00:00
Benjamin Kramer a8d176d62f Update the other CMake file.
llvm-svn: 84003
2009-10-13 18:50:54 +00:00
Devang Patel 52b1745a96 Parse GEP with attached custom metadata. This happens during libprofile_rt.bca build.
llvm-svn: 84002
2009-10-13 18:49:55 +00:00
Ted Kremenek 113d959f1b Update CMake file.
llvm-svn: 84001
2009-10-13 18:48:07 +00:00
Evan Cheng f1f3dd3c3c Refactor some code. No functionality changes.
llvm-svn: 84000
2009-10-13 18:42:04 +00:00
Dan Gohman 54463e837a Commit the removal of this file, which is now moved to lib/Analysis.
llvm-svn: 83999
2009-10-13 18:37:20 +00:00
Dan Gohman 4552e3cd73 Move the InlineCost code from Transforms/Utils to Analysis.
llvm-svn: 83998
2009-10-13 18:30:07 +00:00
Dan Gohman 5b3e05bcaa Start refactoring the inline cost estimation code so that it can be used
for purposes other than inlining.

llvm-svn: 83997
2009-10-13 18:24:11 +00:00
Chris Lattner 19788ca686 change simplifycfg to not duplicate 'unwind' instructions. Hopefully
this will increase the likelihood of common code getting sunk towards
the unwind.

llvm-svn: 83996
2009-10-13 18:13:05 +00:00
Chris Lattner 8d6d09379d convert to filecheck
llvm-svn: 83995
2009-10-13 18:10:05 +00:00
Chris Lattner 6f55a81bb9 rename test
llvm-svn: 83994
2009-10-13 18:08:21 +00:00
Dan Gohman 71ca652475 Make LoopUnswitch's cost estimation count Instructions, rather than
BasicBlocks, so that it doesn't blindly procede in the presence of
large individual BasicBlocks. This addresses a class of code-size
expansion problems.

llvm-svn: 83992
2009-10-13 17:50:43 +00:00
Chris Lattner aa61f41e56 rename ReleaseNotes-2.6.html -> ReleaseNotes.html
llvm-svn: 83990
2009-10-13 17:48:04 +00:00
Chris Lattner 123dd67f76 add Zero
llvm-svn: 83988
2009-10-13 17:47:06 +00:00
Jeffrey Yasskin f98e981cd0 Make the ExecutionEngine automatically remove global mappings on when their
GlobalValue is destroyed.  Function destruction still leaks machine code and
can crash on leaked stubs, but this is some progress.

llvm-svn: 83987
2009-10-13 17:42:08 +00:00
Chris Lattner faa0320f27 don't use dead loads as tests.
llvm-svn: 83985
2009-10-13 17:39:29 +00:00
Devang Patel c5cc659cfa "there is not any instruction with attached debug info in this module" does not mean "there is no debug info in this module". :)
llvm-svn: 83984
2009-10-13 17:35:35 +00:00
Bob Wilson 453a06e3ac Add some ARM instruction encoding bits.
Patch by Johnny Chen.

llvm-svn: 83983
2009-10-13 17:35:30 +00:00
Bob Wilson d26a26ae7e Fix regression introduced by r83894.
llvm-svn: 83982
2009-10-13 17:29:13 +00:00
Devang Patel e6f26a7415 Copy metadata when value is RAUW'd. It is debatable whether this is the right approach for custom metadata data in general. However, right now the only custom data user, "dbg", expects this behavior while FE is constructing llvm IR with debug info.
llvm-svn: 83977
2009-10-13 17:00:54 +00:00
Devang Patel 9bd98a440b Disable this test for now.
llvm-svn: 83975
2009-10-13 16:32:09 +00:00
Bob Wilson 0bc673de0d Fix a tab. Thanks to Johnny Chen for pointing it out.
llvm-svn: 83973
2009-10-13 15:27:23 +00:00
Duncan Sands 1008612b36 The eh.exception intrinsic only reads from memory, it doesn't
write to it.

llvm-svn: 83963
2009-10-13 09:24:02 +00:00
Duncan Sands f7ad620c62 Pacify the compiler (signed with unsigned comparison) by making
these constants unsigned.

llvm-svn: 83962
2009-10-13 09:23:11 +00:00
Nick Lewycky 9bc890425a Force memory use markers to have a ConstantInt for the size argument.
llvm-svn: 83960
2009-10-13 07:57:33 +00:00
Nick Lewycky e2782c7614 Teach BasicAA a little something about the atomic intrinsics: they can only
modify through the pointer they're given.

llvm-svn: 83959
2009-10-13 07:48:38 +00:00
Nick Lewycky 6f7d8347c1 Add new "memory use marker" intrinsics. These indicate lifetimes and invariant
sections of memory objects.

llvm-svn: 83953
2009-10-13 07:03:23 +00:00
Daniel Dunbar cdf01b5d82 Fix a -Asserts warning.
llvm-svn: 83950
2009-10-13 06:47:08 +00:00
Chris Lattner 799dd8538e remove dead header.
llvm-svn: 83943
2009-10-13 05:33:26 +00:00
Chris Lattner 278c12e1af remove notcast, it is now dead!
llvm-svn: 83938
2009-10-13 04:27:02 +00:00
Chris Lattner a24b2b8c88 remove two old and nearly useless tests.
llvm-svn: 83937
2009-10-13 04:25:24 +00:00
Devang Patel bd9c3a074d XFAIL these tests for now.
llvm-svn: 83933
2009-10-13 01:51:29 +00:00
Dan Gohman c4e367b854 Add a ceilLogBase2 function to APInt.
llvm-svn: 83932
2009-10-13 01:49:02 +00:00
Victor Hernandez 70e8505eb1 Memory dependence analysis was incorrectly stopping to scan for stores to a pointer at bitcast uses of a malloc call.
It should continue scanning until the malloc call, and this patch fixes that.

llvm-svn: 83931
2009-10-13 01:42:53 +00:00
Edward O'Callaghan a5314b83d1 Regenerate configure for rev. 83823 putback.
llvm-svn: 83930
2009-10-13 01:01:38 +00:00
Devang Patel 9da3cc2b2d Enable "debug info attached to an instruction" mode.
llvm-svn: 83925
2009-10-12 23:22:09 +00:00
Devang Patel 0f58bec599 Find enclosing subprogram info.
llvm-svn: 83922
2009-10-12 23:11:24 +00:00
Devang Patel 0af2a420cd Set default location for a function if it is not set.
llvm-svn: 83921
2009-10-12 23:10:55 +00:00
Kevin Enderby 11b32384f2 Fix two warnings about unused variables that are only used in assert() calls.
llvm-svn: 83917
2009-10-12 22:51:49 +00:00
Bob Wilson 5b07a903d4 Delete a comment that makes no sense to me. The statement that moving a CPE
before its reference is only supported on ARM has not been true for a while.
In fact, until recently, that was only supported for Thumb.  Besides that,
CPEs are always a multiple of 4 bytes in size, so inserting a CPE should have
no effect on Thumb alignment.

llvm-svn: 83916
2009-10-12 22:49:05 +00:00
Kevin Enderby 3f0b9b3db4 Fix a problem in the code where ARMAsmParser::ParseShift() second argument
should have been a pointer to a reference.

llvm-svn: 83915
2009-10-12 22:39:54 +00:00
Evan Cheng f815861591 Make licm debug message readable.
llvm-svn: 83908
2009-10-12 22:25:23 +00:00
Bob Wilson 3250e7769f Change CreateNewWater method to return NewMBB by reference.
llvm-svn: 83905
2009-10-12 21:39:43 +00:00
Bob Wilson cc121aa750 Last week, ARMConstantIslandPass was failing to converge for the
MultiSource/Benchmarks/MiBench/automotive-susan test.  The failure has
since been masked by an unrelated change (just randomly), so I don't have
a testcase for this now.  Radar 7291928.

The situation where this happened is that a constant pool entry (CPE) was
placed at a lower address than the load that referenced it.  There were in
fact 2 CPEs placed at adjacent addresses and referenced by 2 loads that were
close together in the code.  The distance from the loads to the CPEs was
right at the limit of what they could handle, so that only one of the CPEs
could be placed within range.  On every iteration, the first CPE was found
to be out of range, causing a new CPE to be inserted.  The second CPE had
been in range but the newly inserted entry pushed it too far away.  Thus the
second CPE was also replaced by a new entry, which in turn pushed the first
CPE out of range.  Etc.

Judging from some comments in the code, the initial implementation of this
pass did not support CPEs placed _before_ their references.  In the case
where the CPE is placed at a higher address, the key to making the algorithm
terminate is that new CPEs are only inserted at the end of a group of adjacent
CPEs.  This is implemented by removing a basic block from the "WaterList"
once it has been used, and then adding the newly inserted CPE block to the
list so that the next insertion will come after it.  This avoids the ping-pong
effect where CPEs are repeatedly moved to the beginning of a group of
adjacent CPEs.  This does not work when going backwards, however, because the
entries at the end of an adjacent group of CPEs are closer than the CPEs
earlier in the group.

To make this pass terminate, we need to maintain a property that changes can
only happen in some sort of monotonic fashion.  The fix used here is to require
that the CPE for a particular constant pool load can only move to lower
addresses.  This is a very simple change to the code and should not cause
any significant degradation in the results.

llvm-svn: 83902
2009-10-12 21:23:15 +00:00
Bob Wilson e4adae267e Another minor clean-up.
llvm-svn: 83897
2009-10-12 20:45:53 +00:00
Chris Lattner bf43817408 allow this testcase to pass with recent changes. The test hasn't been
producing any stores at all for a long time, but ".store." was in some
IR instruction names until recently.  This removal caused the test to
start failing.  Just make it reject any stores.

llvm-svn: 83895
2009-10-12 20:42:35 +00:00
Bob Wilson 196bf32ab0 Remove redundant parameter.
llvm-svn: 83894
2009-10-12 20:37:23 +00:00
Bob Wilson 3a7326e705 Use early exit to reduce indentation.
llvm-svn: 83874
2009-10-12 19:04:03 +00:00
Bob Wilson 3af34312d4 Change to return a value by reference.
llvm-svn: 83873
2009-10-12 19:01:12 +00:00
Bob Wilson c7a3cf4066 Add a typedef for an iterator.
llvm-svn: 83872
2009-10-12 18:52:13 +00:00
Dale Johannesen 06243d7bf2 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.

llvm-svn: 83871
2009-10-12 18:49:00 +00:00
Dale Johannesen 4c9f0e8f53 Fix warning.
llvm-svn: 83870
2009-10-12 18:45:32 +00:00
Chris Lattner 6208bc171a fix validation error pointed out by gabor (and the w3c :)
llvm-svn: 83868
2009-10-12 18:33:33 +00:00
Chris Lattner 7c6e0f22ad Improve bugpoint doc, patch by Timo Lindfors!
llvm-svn: 83865
2009-10-12 18:12:47 +00:00
Jeffrey Yasskin 406ac811ab Fix http://llvm.org/PR5160, to let CallbackVHs modify other ValueHandles on the
same Value without breaking things.

llvm-svn: 83861
2009-10-12 17:43:32 +00:00
Gabor Greif 001d74c312 another bunch of <tt>s
llvm-svn: 83860
2009-10-12 16:50:25 +00:00
Dan Gohman 32eed95a78 Remove a redundant member variable.
llvm-svn: 83857
2009-10-12 16:44:10 +00:00
Dan Gohman a8bacea11b Delete some obsolete declarations.
llvm-svn: 83856
2009-10-12 16:43:44 +00:00
Gabor Greif af28f0be41 even more <tt>s
llvm-svn: 83854
2009-10-12 16:40:25 +00:00
Dan Gohman a698d7ac3c Don't forget to mark RAX as live-out of the function when arranging for
it to hold the address of an sret return value, for x86-64 ABI purposes.

Also, fix the test that was originally intended to test this to actually
test it, using FileCheck.

llvm-svn: 83853
2009-10-12 16:36:12 +00:00
Gabor Greif a80c5df3ea more typewriter face
llvm-svn: 83852
2009-10-12 16:27:44 +00:00
Gabor Greif 1a093f3022 fix three validation errors, I leave the fourth to sabre :-)
llvm-svn: 83851
2009-10-12 16:13:36 +00:00
Gabor Greif aa9b0ba7db set some options in typewriter font
llvm-svn: 83850
2009-10-12 16:08:52 +00:00
Benjamin Kramer 0f4203861f Documentation: Perform automated correction of common typos.
llvm-svn: 83849
2009-10-12 14:46:08 +00:00
Torok Edwin 7630f105a1 Fix typo, patch from Timo Juhani Lindfors.
llvm-svn: 83848
2009-10-12 13:37:29 +00:00
Benjamin Kramer 258c7fa33a Eliminate some redundant llvm-as calls.
llvm-svn: 83837
2009-10-12 09:31:55 +00:00
Edward O'Callaghan 1c591f74c7 Missing CHECK: lines makes test exit abnormally.
llvm-svn: 83835
2009-10-12 09:01:26 +00:00
Edward O'Callaghan 8720e8c8f3 FileCheck not CheckFile, oops.
llvm-svn: 83834
2009-10-12 08:51:28 +00:00
Edward O'Callaghan 6d01608662 Convert InstCombine/call.ll to CheckFile.
llvm-svn: 83833
2009-10-12 08:46:47 +00:00
Edward O'Callaghan cbf75a5dc3 Convert the rest of the InstCombine tests from notcast to FileCheck.
llvm-svn: 83828
2009-10-12 07:18:14 +00:00
Nick Lewycky 31a57ea0dd Remove this part of the test, it never actually tested anything anyways. This
unbreaks make check after evocallaghan's changes.

llvm-svn: 83827
2009-10-12 06:32:42 +00:00
Edward O'Callaghan 940da903e2 Fix syntax error missed in converting zext.ll test. Convert 2003-11-13-ConstExprCastCall.ll to FileCheck from notcast.
llvm-svn: 83826
2009-10-12 06:23:56 +00:00
Edward O'Callaghan 484b6c2cfc Convert InstCombine tests from notcast to FileCheck.
llvm-svn: 83825
2009-10-12 06:14:06 +00:00
Nate Begeman a3ed9edd40 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%

llvm-svn: 83824
2009-10-12 05:53:58 +00:00
Edward O'Callaghan 8227b0512f Haiku porting patches, Credit to Paul Davey.
llvm-svn: 83823
2009-10-12 04:57:20 +00:00
Chris Lattner 0840c823e4 Fix PR5087, patch by Jakub Staszak!
llvm-svn: 83822
2009-10-12 04:22:44 +00:00
Chris Lattner 40cf28d6eb add some more hooks to the C bindings, patch by Kenneth Uildriks!
llvm-svn: 83821
2009-10-12 04:01:02 +00:00
Douglas Gregor 3a66952bea Make ParallelJIT pthreads linking with CMake slightly less broken
llvm-svn: 83820
2009-10-12 04:00:13 +00:00
Edward O'Callaghan 396ed2bcaa Fix LLVM CMake build system so that it may now work on Solaris and AuroraUX.
llvm-svn: 83819
2009-10-12 04:00:11 +00:00
Chris Lattner 8abd572dae populate instcombine's initial worklist more carefully, causing
it to visit instructions from the start of the function to the
end of the function in the first path.  This greatly speeds up
some pathological cases (e.g. PR5150).

Try #3, this time with some unneeded debug info stuff removed
which was causing dead pointers to be added to the worklist.

llvm-svn: 83818
2009-10-12 03:58:40 +00:00
Chris Lattner 8ce6b36c86 revert r83814 for now, it is making the llvm-gcc bootstrap unhappy.
llvm-svn: 83817
2009-10-11 23:56:08 +00:00
Chris Lattner 2caacfa7e1 pic16 uses 16 bit pointers, but is 8 bit.
llvm-svn: 83815
2009-10-11 23:19:44 +00:00
Chris Lattner 78d6310429 populate instcombine's initial worklist more carefully, causing
it to visit instructions from the start of the function to the
end of the function in the first path.  This greatly speeds up
some pathological cases (e.g. PR5150). 

llvm-svn: 83814
2009-10-11 23:17:43 +00:00
Nick Lewycky f8dd676a50 Fix Makefile to build correctly on Darwin. Patch by Sandeep Patel!
llvm-svn: 83813
2009-10-11 23:10:09 +00:00
Anton Korobeynikov 4b38ce9f25 Add missed mem-mem move patterns
llvm-svn: 83812
2009-10-11 23:03:53 +00:00
Anton Korobeynikov 415c3dc501 Add MSP430 mem-mem insts support. Patch by Brian Lucas with some my refinements
llvm-svn: 83811
2009-10-11 23:03:28 +00:00
Chris Lattner 2c2deae5ac remove some harmful code that would turn an insertelement on an undef
into a shuffle even if it was used by another insertelement.  If the
visitation order of instcombine was wrong, this would turn a chain of
insertelements into a chain of shufflevectors, which was quite painful.

Since CollectShuffleElements handles these cases, the code can just
be nuked.

llvm-svn: 83810
2009-10-11 23:02:46 +00:00
Anton Korobeynikov da0508fe15 Add bunch of MSP430 'feature' tests. Patch by Brian Lucas with some my refinements
llvm-svn: 83809
2009-10-11 23:02:38 +00:00
Chris Lattner 06462efb47 reduce vec_shuffle2 and merge into vec_shuffle.
llvm-svn: 83807
2009-10-11 22:54:48 +00:00
Chris Lattner 6373045e7d filecheckize vec_shuffle.ll and merge shuffle.ll into it.
llvm-svn: 83806
2009-10-11 22:52:15 +00:00
Chris Lattner 79a2f91f65 filecheckize
llvm-svn: 83805
2009-10-11 22:45:17 +00:00
Chris Lattner 8308fd9aab rename test
llvm-svn: 83804
2009-10-11 22:44:16 +00:00
Chris Lattner e660ee0a3b remove old testcase
llvm-svn: 83803
2009-10-11 22:42:06 +00:00
Chris Lattner 1fe15dbbbb merge test into shift.ll, this also eliminates awful grepping on -stats output
llvm-svn: 83802
2009-10-11 22:39:58 +00:00
Chris Lattner d7969a2796 convert to filecheck.
llvm-svn: 83801
2009-10-11 22:36:59 +00:00
Chris Lattner c6cdbfbfdd teach instcombine to simplify xor's harder, catching the
new testcase.

llvm-svn: 83799
2009-10-11 22:22:13 +00:00
Chris Lattner 6e6ac47125 cleanups
llvm-svn: 83797
2009-10-11 22:00:32 +00:00
Chris Lattner 7db5b7893d convert xor2 to filecheck, merge in a random regtest
llvm-svn: 83796
2009-10-11 21:42:08 +00:00
Chris Lattner 1639234775 cleanup, no functionality change.
llvm-svn: 83795
2009-10-11 21:36:10 +00:00
Chris Lattner fd27f8a5b3 generalize a transformation even more: we don't care whether the
input the the mul is a zext from bool, just that it is all zeros
other than the low bit.  This fixes some phase ordering issues
that would cause us to miss some xforms in mul.ll when the worklist
is visited differently.

llvm-svn: 83794
2009-10-11 21:29:45 +00:00
Chris Lattner 406cb75c6b simplify a transformation by making it more general.
llvm-svn: 83792
2009-10-11 21:22:21 +00:00
Chris Lattner f39f4f928a temporarily revert previous patch
llvm-svn: 83791
2009-10-11 21:05:34 +00:00
Chris Lattner bb058d3a23 populate instcombine's initial worklist more carefully, causing
it to visit instructions from the start of the function to the
end of the function in the first path.  This greatly speeds up
some pathological cases (e.g. PR5150). 

llvm-svn: 83790
2009-10-11 21:04:37 +00:00
Torok Edwin 8b3081350e Remove CleanupDbgInfo, instcombine does this and its not worth duplicating it
here.

llvm-svn: 83789
2009-10-11 19:58:35 +00:00
Duncan Sands 5f6aa105f5 More DragonEgg verbiage.
llvm-svn: 83788
2009-10-11 19:40:38 +00:00
Duncan Sands dcea7e921b Remove spurious brackets.
llvm-svn: 83787
2009-10-11 19:30:56 +00:00
Torok Edwin 907ec36943 LICM shouldn't sink/delete debug information. Fix this and add a testcase.
For now the metadata of sinked/hoisted instructions is still wrong, but that'll
be fixed when instructions will have debug metadata directly attached.

llvm-svn: 83786
2009-10-11 19:15:54 +00:00
Anton Korobeynikov 6bce6bbf40 Implement 'm' memory operand properly
llvm-svn: 83785
2009-10-11 19:14:21 +00:00
Anton Korobeynikov a58a3f930a Implement proper asmprinting for the globals. This eliminates bogus "call" modifier and also adds support for offsets wrt globals.
llvm-svn: 83784
2009-10-11 19:14:02 +00:00
Anton Korobeynikov 3525a4a268 Implement asm printing for inline asm memory operands
llvm-svn: 83783
2009-10-11 19:13:34 +00:00
Chris Lattner c04812c035 add PR5004 as a known problem.
llvm-svn: 83782
2009-10-11 19:07:23 +00:00
Chris Lattner 70fdca4b7f duncan points out that llvm-gcc doesn't do the right thing with -fverbose-asm yet.
llvm-svn: 83781
2009-10-11 19:02:54 +00:00
Nick Lewycky c7cf0b223b Fix typo.
llvm-svn: 83780
2009-10-11 18:53:09 +00:00
Nick Lewycky 5246987a76 Fix typo.
llvm-svn: 83779
2009-10-11 18:47:33 +00:00
Chris Lattner 85c85c5e04 when folding duplicate conditions, delete the
now-probably-dead instruction tree feeding it.

llvm-svn: 83778
2009-10-11 18:39:58 +00:00
Chris Lattner 94ac58d99a some notes from Anton
llvm-svn: 83777
2009-10-11 18:21:32 +00:00
Gabor Greif ccdf5fdfc1 catch some other serial commas that my earlier grep did not spot
llvm-svn: 83772
2009-10-11 11:44:34 +00:00
Gabor Greif c51ca75468 eliminate some instances of serial comma. sabre, if you feel strong about this, feel free to revert this rev
llvm-svn: 83771
2009-10-11 11:23:40 +00:00
Duncan Sands bc3f7c9229 Fix typo.
llvm-svn: 83770
2009-10-11 11:20:26 +00:00
Gabor Greif 39635acfc1 apply some tweaks
llvm-svn: 83769
2009-10-11 10:44:44 +00:00
Gabor Greif e9fc6c982e fix some obvious typos
llvm-svn: 83768
2009-10-11 10:27:57 +00:00
Duncan Sands 2dccb8571e Add an outline of the DragonEgg gcc plugin.
llvm-svn: 83765
2009-10-11 09:07:15 +00:00
Chris Lattner e374382b8f implement rdar://7293527, a trivial instcombine that llvm-gcc
gets but clang doesn't, because it is implemented in GCC's
fold routine.

llvm-svn: 83761
2009-10-11 07:53:15 +00:00
Chris Lattner d1d23e1949 add a helper for matching "1".
llvm-svn: 83760
2009-10-11 07:51:25 +00:00
Chris Lattner 97b1405207 implement a transformation in jump threading that is currently
done by condprop, but do it in a much more general form.  The
basic idea is that we can do a limited form of tail duplication
in the case when we have a branch on a phi.  Moving the branch
up in to the predecessor block makes instruction selection
much easier and encourages chained jump threadings.

llvm-svn: 83759
2009-10-11 07:24:57 +00:00
Chris Lattner 4140d8bd5c another testcase jump threading shouldn't crash on.
llvm-svn: 83758
2009-10-11 07:11:11 +00:00
Chris Lattner ece16f2335 rename a file, remove a poorly reduced testcase.
llvm-svn: 83757
2009-10-11 07:10:28 +00:00
Chris Lattner 6ce85e85f5 restructure some code, no functionality change.
llvm-svn: 83756
2009-10-11 04:40:21 +00:00
Chris Lattner f466bc84c9 factor some code better and move a function, no functionality change.
llvm-svn: 83755
2009-10-11 04:33:43 +00:00
Chris Lattner f99a74e24b make jump threading on a phi with undef inputs happen.
llvm-svn: 83754
2009-10-11 04:18:15 +00:00
Chris Lattner 09677258e5 there is no need to run mem2reg after jump threading at LTO time now.
llvm-svn: 83753
2009-10-11 04:17:33 +00:00
Chris Lattner bb094e12f2 fix a bunch of bad formatting, delete the dead
ConstantInt::TheTrueVal/TheFalseVal members.

llvm-svn: 83752
2009-10-11 04:03:22 +00:00
Chris Lattner 8d186bfafb merge two tests.
llvm-svn: 83751
2009-10-11 03:55:30 +00:00
Chris Lattner 041c1dca8b simplify some run lines, convert a test to filecheck.
llvm-svn: 83750
2009-10-11 03:54:21 +00:00
Ted Kremenek e959a1cd0e Update release notes blurb on the static analyzer.
llvm-svn: 83749
2009-10-11 03:10:25 +00:00
Chris Lattner 71d353dd48 rewrite LCSSA to use SSAUpdate, to only return true if it modifies
the IR, and to implement the FIXME'd optimization.

llvm-svn: 83748
2009-10-11 02:53:37 +00:00
Chris Lattner 101dde30ed clean up and simplify some code. Don't use setvector when things will be
inserted only once, just use vector.  Don't compute ExitBlocks unless we
need it, change std::sort to array_pod_sort.

llvm-svn: 83747
2009-10-11 01:07:15 +00:00
Chris Lattner b6c65faa64 switch GVN to use SSAUpdater. Besides removing a lot of complexity
from GVN, this also speeds it up, inserts fewer PHI nodes (see the
testcase) and allows it to remove more loads (due to fewer PHI nodes
standing in the way).

llvm-svn: 83746
2009-10-10 23:50:30 +00:00
Chris Lattner 9c382cebc5 add a simple helper method.
llvm-svn: 83745
2009-10-10 23:41:48 +00:00
Chris Lattner 249265de06 add ability for clients of SSAUpdater to find out about the
PHI nodes inserted.

llvm-svn: 83744
2009-10-10 23:15:24 +00:00
Chris Lattner 472330d5d2 clarify
llvm-svn: 83743
2009-10-10 23:05:42 +00:00