Commit Graph

70929 Commits

Author SHA1 Message Date
Evan Cheng fb2d385221 Remove an irrelevant and poorly reduced test case.
llvm-svn: 85794
2009-11-02 07:11:54 +00:00
Chris Lattner 47837c5182 don't mark the arguments of prototype overdefined, they will never be queried.
llvm-svn: 85793
2009-11-02 06:34:04 +00:00
Chris Lattner 5503328332 restore some code I removed in r85788, refactor it into
a shared place instead of duplicating it 4 times.

llvm-svn: 85792
2009-11-02 06:28:16 +00:00
Chris Lattner 4910b656b2 remove some confused code that dates from when we had
"multiple return values" but not "first class aggregates"

llvm-svn: 85791
2009-11-02 06:17:06 +00:00
Chris Lattner 809aee2f40 avoid redundant lookups in BBExecutable, and make it a SmallPtrSet.
llvm-svn: 85790
2009-11-02 06:11:23 +00:00
Chris Lattner e77c9aa04a Use the libanalysis 'ConstantFoldLoadFromConstPtr' function
instead of reinventing SCCP-specific logic.  This gives us
new powers.

llvm-svn: 85789
2009-11-02 06:06:14 +00:00
Chris Lattner f548403989 switch the main 'ValueState' map from being an std::map to being
a DenseMap.  Doing this required being aware of subtle iterator
invalidation issues, but it provides a big speedup.  In a 
release-asserts build, this sped up optimizing 403.gcc from
1.34s -> 0.79s (IPSCCP) and 1.11s -> 0.44s (SCCP).

This commit also conflates in a bunch of general cleanups, sorry.

llvm-svn: 85788
2009-11-02 05:55:40 +00:00
Evan Cheng 1708b06c0e Unbreak ARMBaseRegisterInfo::copyRegToReg.
llvm-svn: 85787
2009-11-02 04:44:55 +00:00
Chris Lattner 4e849162ef fix a bug exposed by moving SRoA earlier which caused a crash building kc++
llvm-svn: 85786
2009-11-02 04:37:17 +00:00
Jim Grosbach 923cf49e6d Missing bit of universal built + hosted
llvm-svn: 85785
2009-11-02 03:46:35 +00:00
Chris Lattner e82b087ae6 only IPSCCP incoming arguments if the function is executable, this fixes
an assertion on the buildbot.

llvm-svn: 85784
2009-11-02 03:25:55 +00:00
Chris Lattner 9e97fbe114 add a new ValueState::getConstantInt() helper, use it to
simplify some code.

llvm-svn: 85783
2009-11-02 03:21:36 +00:00
Edward O'Callaghan 2c7457c0f1 Fix malloc.h is deprecated warning on DragonFly BSD.
llvm-svn: 85782
2009-11-02 03:20:57 +00:00
Edward O'Callaghan 0cc7777ce8 Fix for warning seen on DF-BSD, Victor, please fix this to use a shift instead of pow()
llvm-svn: 85781
2009-11-02 03:14:31 +00:00
Chris Lattner 7ccf1a6df6 tidy up some more: remove some extraneous inline specifiers, return harder.
llvm-svn: 85780
2009-11-02 03:03:42 +00:00
Edward O'Callaghan 78eedecade Apply fix for PR5135, Credit to Andreas Neustifter.
llvm-svn: 85779
2009-11-02 02:55:39 +00:00
Chris Lattner b5a13d4c90 eliminate the SCCPSolver::getValueMapping method.
llvm-svn: 85778
2009-11-02 02:54:24 +00:00
Chris Lattner c49ae9912a fix failures introduced in r85774
llvm-svn: 85777
2009-11-02 02:48:17 +00:00
Chris Lattner e405ed9651 factor duplicated code into a new DeleteInstructionInBlock
function, eliminate temporary (and pointless) smallvector.

llvm-svn: 85776
2009-11-02 02:47:51 +00:00
Chris Lattner a3c39d394d Chris used to use '...' instead of proper grammar.
llvm-svn: 85775
2009-11-02 02:33:50 +00:00
Chris Lattner 6df5cec72f remove some extraneous llvmcontext stuff.
llvm-svn: 85774
2009-11-02 02:30:06 +00:00
Chris Lattner efdd2bbce6 change LatticeVal to use PointerIntPair to save some space.
llvm-svn: 85773
2009-11-02 02:20:32 +00:00
Chris Lattner 3cd6a61b27 fix instcombine to only do store sinking when the alignments
of the two loads agree.  Propagate that onto the new store.

llvm-svn: 85772
2009-11-02 02:06:37 +00:00
Chris Lattner db3311edc7 merge a test into store.ll
llvm-svn: 85771
2009-11-02 02:00:18 +00:00
Chris Lattner d263dbec7a convert to filecheck
llvm-svn: 85770
2009-11-02 01:58:03 +00:00
Bill Wendling 33fef7e4e5 Add missing end-tag.
llvm-svn: 85769
2009-11-02 00:25:26 +00:00
Bill Wendling 7f4a336785 Some formatting changes.
llvm-svn: 85768
2009-11-02 00:24:16 +00:00
Anton Korobeynikov 4d23754b14 Handle splats of undefs properly. This includes the testcase for PR5364 as well.
llvm-svn: 85767
2009-11-02 00:12:06 +00:00
Anton Korobeynikov 0f38d989bd Do not infer the target type for COPY_TO_REGCLASS from dest regclass, this won't work if it can contain several types. Require explicit result type for the node for now. This fixes PR5364.
PS: It seems that blackfin usage of copy_to_regclass is completely bogus!
llvm-svn: 85766
2009-11-02 00:11:39 +00:00
Anton Korobeynikov 8cce1eb6aa 64-bit FP loads & stores operate on both NEON and VFP pipelines.
llvm-svn: 85765
2009-11-02 00:11:06 +00:00
Anton Korobeynikov 14635da94b Use NEON reg-reg moves, where profitable. This reduces "domain-cross" stalls, when we used to mix vfp and neon code (the former were used for reg-reg moves)
llvm-svn: 85764
2009-11-02 00:10:38 +00:00
Evan Cheng ea68c7c9a8 Add PseudoSourceValue::mayAlias. It returns true if the object can ever alias any LLVM IR value.
llvm-svn: 85762
2009-11-01 23:50:04 +00:00
Nick Lewycky e0856c5f40 Line this up as well.
llvm-svn: 85748
2009-11-01 22:08:51 +00:00
Nick Lewycky b244909ad4 Fix whitespace.
llvm-svn: 85747
2009-11-01 22:07:54 +00:00
Evan Cheng 1a4492be97 Fix a couple more places where we are creating ld / st instructions without memoperands.
llvm-svn: 85746
2009-11-01 22:04:35 +00:00
Evan Cheng 43219997b6 Make use of imm12 version of Thumb2 ldr / str instructions more aggressively.
llvm-svn: 85743
2009-11-01 21:12:51 +00:00
Chris Lattner ef94654363 fix two strange things in the default passmgr:
1. we'd run simplifycfg at the very start, even though
the per function passes have already cleaned this up.

2. In the main per-function pipeline that is interlaced with inlining 
   etc, we would do instcombine, jump threading, simplifycfg *before*
   doing SROA.  SROA is much more likely to expose opportunities for
   these passes than they are for SROA, so move SRoA up earlier.

also add some comments.

llvm-svn: 85742
2009-11-01 20:41:59 +00:00
Douglas Gregor 0840cc02ce When determining whether a reference to a static data member is an
integral constant expression, make sure to find where the initializer
was provided---inside or outside the class definition---since that can
affect whether we have an integral constant expression (and, we need
to see the initializer itself).

llvm-svn: 85741
2009-11-01 20:32:48 +00:00
Chris Lattner 3e6398baa5 merge phi-merge.ll into phi.ll
I don't know what Dan wants to do with phi-merge-gep.ll, I'll let
him deal with it because instcombine may end up sinking these.

llvm-svn: 85739
2009-11-01 20:10:11 +00:00
Chris Lattner 328ef89bd1 when merging two loads, make sure to take the min of their alignment,
not the max.  This didn't matter until the previous patch because
instcombine would refuse to sink loads with differenting alignments.

llvm-svn: 85738
2009-11-01 20:07:07 +00:00
Chris Lattner 2a249e267a split load sinking out to its own function, like gep sinking.
llvm-svn: 85737
2009-11-01 20:04:24 +00:00
Chris Lattner 0b40a8bc0e fix a bug noticed by inspection: when instcombine sinks loads through
phis, it didn't preserve the alignment of the load.  This is a missed
optimization of the alignment is high and a miscompilation when the
alignment is low.

llvm-svn: 85736
2009-11-01 19:50:13 +00:00
Chris Lattner 2805f116f6 IPSCCP apparently is not a superset of IPCP, this is bad,
but I'll investigate it separately.  This unbreaks 
test/FrontendC/weak_constant.c

llvm-svn: 85735
2009-11-01 19:29:12 +00:00
Chris Lattner d162b5c955 convert to filecheck.
llvm-svn: 85734
2009-11-01 19:22:20 +00:00
Duncan Sands f5e4342f45 Improve the other instance of the comment.
llvm-svn: 85733
2009-11-01 19:16:21 +00:00
Duncan Sands f25d301311 Add a missing closing parenthesis, and tweak to fit in 80
columns.

llvm-svn: 85732
2009-11-01 19:12:43 +00:00
Chris Lattner 649f4e9e8f only run GlobalDCE at -O3 and run it late instead of early.
GlobalOpt already deletes trivially dead functions/globals,
so GlobalDCE only adds values for cycles of dead things.

llvm-svn: 85731
2009-11-01 19:09:12 +00:00
Chris Lattner b5d9c8c708 cleanups, switch GlobalDCE to SmallPtrSet instead of std::set
llvm-svn: 85730
2009-11-01 19:03:42 +00:00
Chris Lattner 2fa61f8427 We currently only run ipsccp at LTO time, which is silly. It subsumes
ipconstprop and doesn't take much time.  Just run it in its place.

This adds a testcase for it, which I plan to expand to cover other
"integration" cases, where we expect the optimizer to be able to
eliminate various things.  Due to phase order issues we've regressed
in a number of areas and integration tests are the only way I see to
prevent this.

llvm-svn: 85729
2009-11-01 18:57:49 +00:00
Chris Lattner 37536b90e1 remove a bunch of locking from LLVMContextImpl. Since only one thread
can be banging on a context at a time, this isn't needed.  Owen, please
review.

llvm-svn: 85728
2009-11-01 18:42:03 +00:00