oota-llvm.git
14 years agoRevert r85049, it is causing PR5367
Anton Korobeynikov [Tue, 3 Nov 2009 00:24:48 +0000 (00:24 +0000)]
Revert r85049, it is causing PR5367

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85847 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRevert previous change to a comment. The BlockAddresses go in the
Bob Wilson [Tue, 3 Nov 2009 00:02:05 +0000 (00:02 +0000)]
Revert previous change to a comment.  The BlockAddresses go in the
constant pool so they don't get wrapped separately.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85844 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agofix a nasty iterator invalidation bug from my conversion from
Chris Lattner [Mon, 2 Nov 2009 23:25:39 +0000 (23:25 +0000)]
fix a nasty iterator invalidation bug from my conversion from
std::map to DenseMap, exposed on release llvm-gcc bootstrap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85840 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRevert 85799 for now. It might be breaking llvm-gcc driver.
Evan Cheng [Mon, 2 Nov 2009 21:49:14 +0000 (21:49 +0000)]
Revert 85799 for now. It might be breaking llvm-gcc driver.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85827 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoPut BlockAddresses into ARM constant pools.
Bob Wilson [Mon, 2 Nov 2009 20:59:23 +0000 (20:59 +0000)]
Put BlockAddresses into ARM constant pools.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85824 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix ARMAsmParser::ParseMemoryOffsetReg() where the parameter OffsetRegNum should
Kevin Enderby [Mon, 2 Nov 2009 20:14:39 +0000 (20:14 +0000)]
Fix ARMAsmParser::ParseMemoryOffsetReg() where the parameter OffsetRegNum should
have been passed as a reference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85823 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agorevert r8579[56], which are causing unhappiness in buildbot land.
Chris Lattner [Mon, 2 Nov 2009 19:31:10 +0000 (19:31 +0000)]
revert r8579[56], which are causing unhappiness in buildbot land.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85818 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoCMake: Report an error if there is an unknown .cpp file in a source
Oscar Fuentes [Mon, 2 Nov 2009 19:11:03 +0000 (19:11 +0000)]
CMake: Report an error if there is an unknown .cpp file in a source
directory.

This is useful in case someone who works with the config&make build
system forgot to add a file to its CMakeLists.txt. Instead of
obtaining undefined references at link time, cmake will complain at
configure time on the first build after a svn update.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85817 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSet bit instead of calling pow() to compute 2 << n
Victor Hernandez [Mon, 2 Nov 2009 18:51:28 +0000 (18:51 +0000)]
Set bit instead of calling pow() to compute 2 << n

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85814 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agotypo
Chris Lattner [Mon, 2 Nov 2009 18:28:45 +0000 (18:28 +0000)]
typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85812 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agomerge 2008-03-10-sret.ll into ipsccp-basic.ll, and upgrade its syntax.
Chris Lattner [Mon, 2 Nov 2009 18:27:22 +0000 (18:27 +0000)]
merge 2008-03-10-sret.ll into ipsccp-basic.ll, and upgrade its syntax.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85811 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agodisable IPSCCP support for multiple return values, it is buggy, so just
Chris Lattner [Mon, 2 Nov 2009 18:22:51 +0000 (18:22 +0000)]
disable IPSCCP support for multiple return values, it is buggy, so just
disable it until I can fix it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85810 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix schedule model for BFC.
David Goodwin [Mon, 2 Nov 2009 17:28:36 +0000 (17:28 +0000)]
Fix schedule model for BFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85809 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoHyphenate some comments.
Bob Wilson [Mon, 2 Nov 2009 17:10:37 +0000 (17:10 +0000)]
Hyphenate some comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85808 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoChain dependencies used to enforce memory order should have latency of 0 (except...
David Goodwin [Mon, 2 Nov 2009 17:06:28 +0000 (17:06 +0000)]
Chain dependencies used to enforce memory order should have latency of 0 (except for true dependency of Store followed by aliased Load... we estimate that case with a single cycle of latency assuming the hardware will bypass)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85807 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd support for BlockAddress values in ARM constant pools.
Bob Wilson [Mon, 2 Nov 2009 16:59:06 +0000 (16:59 +0000)]
Add support for BlockAddress values in ARM constant pools.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85806 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoPrune unnecessary include.
Bob Wilson [Mon, 2 Nov 2009 16:58:31 +0000 (16:58 +0000)]
Prune unnecessary include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85805 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoInitilize the machine LICM CSE map upon the first time an instruction is hoisted to
Evan Cheng [Mon, 2 Nov 2009 08:09:49 +0000 (08:09 +0000)]
Initilize the machine LICM CSE map upon the first time an instruction is hoisted to
the loop preheader. Add instructions which are already in the preheader block that
may be common expressions of those that are hoisted out. These does get a few more
instructions CSE'ed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85799 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoThese are done / no longer care.
Evan Cheng [Mon, 2 Nov 2009 07:58:25 +0000 (07:58 +0000)]
These are done / no longer care.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85798 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd an entry.
Evan Cheng [Mon, 2 Nov 2009 07:51:19 +0000 (07:51 +0000)]
Add an entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85797 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agonow that ip sccp *really* subsumes ipcp, remove ipcp again.
Chris Lattner [Mon, 2 Nov 2009 07:34:29 +0000 (07:34 +0000)]
now that ip sccp *really* subsumes ipcp, remove ipcp again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85796 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoimprove IPSCCP to be able to propagate the result of "!mayBeOverridden"
Chris Lattner [Mon, 2 Nov 2009 07:33:59 +0000 (07:33 +0000)]
improve IPSCCP to be able to propagate the result of "!mayBeOverridden"
function to calls of that function, regardless of whether it has local
linkage or has its address taken.  Not escaping should only affect
whether we make an aggressive assumption about the arguments to a
function, not whether we can track the result of it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85795 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove an irrelevant and poorly reduced test case.
Evan Cheng [Mon, 2 Nov 2009 07:11:54 +0000 (07:11 +0000)]
Remove an irrelevant and poorly reduced test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85794 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agodon't mark the arguments of prototype overdefined, they will never be queried.
Chris Lattner [Mon, 2 Nov 2009 06:34:04 +0000 (06:34 +0000)]
don't mark the arguments of prototype overdefined, they will never be queried.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85793 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agorestore some code I removed in r85788, refactor it into
Chris Lattner [Mon, 2 Nov 2009 06:28:16 +0000 (06:28 +0000)]
restore some code I removed in r85788, refactor it into
a shared place instead of duplicating it 4 times.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85792 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoremove some confused code that dates from when we had
Chris Lattner [Mon, 2 Nov 2009 06:17:06 +0000 (06:17 +0000)]
remove some confused code that dates from when we had
"multiple return values" but not "first class aggregates"

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85791 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoavoid redundant lookups in BBExecutable, and make it a SmallPtrSet.
Chris Lattner [Mon, 2 Nov 2009 06:11:23 +0000 (06:11 +0000)]
avoid redundant lookups in BBExecutable, and make it a SmallPtrSet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85790 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUse the libanalysis 'ConstantFoldLoadFromConstPtr' function
Chris Lattner [Mon, 2 Nov 2009 06:06:14 +0000 (06:06 +0000)]
Use the libanalysis 'ConstantFoldLoadFromConstPtr' function
instead of reinventing SCCP-specific logic.  This gives us
new powers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85789 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoswitch the main 'ValueState' map from being an std::map to being
Chris Lattner [Mon, 2 Nov 2009 05:55:40 +0000 (05:55 +0000)]
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85788 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUnbreak ARMBaseRegisterInfo::copyRegToReg.
Evan Cheng [Mon, 2 Nov 2009 04:44:55 +0000 (04:44 +0000)]
Unbreak ARMBaseRegisterInfo::copyRegToReg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85787 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agofix a bug exposed by moving SRoA earlier which caused a crash building kc++
Chris Lattner [Mon, 2 Nov 2009 04:37:17 +0000 (04:37 +0000)]
fix a bug exposed by moving SRoA earlier which caused a crash building kc++

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85786 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMissing bit of universal built + hosted
Jim Grosbach [Mon, 2 Nov 2009 03:46:35 +0000 (03:46 +0000)]
Missing bit of universal built + hosted

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85785 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoonly IPSCCP incoming arguments if the function is executable, this fixes
Chris Lattner [Mon, 2 Nov 2009 03:25:55 +0000 (03:25 +0000)]
only IPSCCP incoming arguments if the function is executable, this fixes
an assertion on the buildbot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85784 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoadd a new ValueState::getConstantInt() helper, use it to
Chris Lattner [Mon, 2 Nov 2009 03:21:36 +0000 (03:21 +0000)]
add a new ValueState::getConstantInt() helper, use it to
simplify some code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85783 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix malloc.h is deprecated warning on DragonFly BSD.
Edward O'Callaghan [Mon, 2 Nov 2009 03:20:57 +0000 (03:20 +0000)]
Fix malloc.h is deprecated warning on DragonFly BSD.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85782 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix for warning seen on DF-BSD, Victor, please fix this to use a shift instead of...
Edward O'Callaghan [Mon, 2 Nov 2009 03:14:31 +0000 (03:14 +0000)]
Fix for warning seen on DF-BSD, Victor, please fix this to use a shift instead of pow()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85781 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agotidy up some more: remove some extraneous inline specifiers, return harder.
Chris Lattner [Mon, 2 Nov 2009 03:03:42 +0000 (03:03 +0000)]
tidy up some more: remove some extraneous inline specifiers, return harder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85780 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoApply fix for PR5135, Credit to Andreas Neustifter.
Edward O'Callaghan [Mon, 2 Nov 2009 02:55:39 +0000 (02:55 +0000)]
Apply fix for PR5135, Credit to Andreas Neustifter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85779 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoeliminate the SCCPSolver::getValueMapping method.
Chris Lattner [Mon, 2 Nov 2009 02:54:24 +0000 (02:54 +0000)]
eliminate the SCCPSolver::getValueMapping method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85778 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agofix failures introduced in r85774
Chris Lattner [Mon, 2 Nov 2009 02:48:17 +0000 (02:48 +0000)]
fix failures introduced in r85774

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85777 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agofactor duplicated code into a new DeleteInstructionInBlock
Chris Lattner [Mon, 2 Nov 2009 02:47:51 +0000 (02:47 +0000)]
factor duplicated code into a new DeleteInstructionInBlock
function, eliminate temporary (and pointless) smallvector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85776 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoChris used to use '...' instead of proper grammar.
Chris Lattner [Mon, 2 Nov 2009 02:33:50 +0000 (02:33 +0000)]
Chris used to use '...' instead of proper grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85775 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoremove some extraneous llvmcontext stuff.
Chris Lattner [Mon, 2 Nov 2009 02:30:06 +0000 (02:30 +0000)]
remove some extraneous llvmcontext stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85774 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agochange LatticeVal to use PointerIntPair to save some space.
Chris Lattner [Mon, 2 Nov 2009 02:20:32 +0000 (02:20 +0000)]
change LatticeVal to use PointerIntPair to save some space.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85773 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agofix instcombine to only do store sinking when the alignments
Chris Lattner [Mon, 2 Nov 2009 02:06:37 +0000 (02:06 +0000)]
fix instcombine to only do store sinking when the alignments
of the two loads agree.  Propagate that onto the new store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85772 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agomerge a test into store.ll
Chris Lattner [Mon, 2 Nov 2009 02:00:18 +0000 (02:00 +0000)]
merge a test into store.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85771 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoconvert to filecheck
Chris Lattner [Mon, 2 Nov 2009 01:58:03 +0000 (01:58 +0000)]
convert to filecheck

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85770 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd missing end-tag.
Bill Wendling [Mon, 2 Nov 2009 00:25:26 +0000 (00:25 +0000)]
Add missing end-tag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85769 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSome formatting changes.
Bill Wendling [Mon, 2 Nov 2009 00:24:16 +0000 (00:24 +0000)]
Some formatting changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85768 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoHandle splats of undefs properly. This includes the testcase for PR5364 as well.
Anton Korobeynikov [Mon, 2 Nov 2009 00:12:06 +0000 (00:12 +0000)]
Handle splats of undefs properly. This includes the testcase for PR5364 as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85767 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDo not infer the target type for COPY_TO_REGCLASS from dest regclass, this won't...
Anton Korobeynikov [Mon, 2 Nov 2009 00:11:39 +0000 (00:11 +0000)]
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!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85766 91177308-0d34-0410-b5e6-96231b3b80d8

14 years ago64-bit FP loads & stores operate on both NEON and VFP pipelines.
Anton Korobeynikov [Mon, 2 Nov 2009 00:11:06 +0000 (00:11 +0000)]
64-bit FP loads & stores operate on both NEON and VFP pipelines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85765 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUse NEON reg-reg moves, where profitable. This reduces "domain-cross" stalls, when...
Anton Korobeynikov [Mon, 2 Nov 2009 00:10:38 +0000 (00:10 +0000)]
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)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85764 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd PseudoSourceValue::mayAlias. It returns true if the object can ever alias any...
Evan Cheng [Sun, 1 Nov 2009 23:50:04 +0000 (23:50 +0000)]
Add PseudoSourceValue::mayAlias. It returns true if the object can ever alias any LLVM IR value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85762 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoLine this up as well.
Nick Lewycky [Sun, 1 Nov 2009 22:08:51 +0000 (22:08 +0000)]
Line this up as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85748 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix whitespace.
Nick Lewycky [Sun, 1 Nov 2009 22:07:54 +0000 (22:07 +0000)]
Fix whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85747 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix a couple more places where we are creating ld / st instructions without memoperands.
Evan Cheng [Sun, 1 Nov 2009 22:04:35 +0000 (22:04 +0000)]
Fix a couple more places where we are creating ld / st instructions without memoperands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85746 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMake use of imm12 version of Thumb2 ldr / str instructions more aggressively.
Evan Cheng [Sun, 1 Nov 2009 21:12:51 +0000 (21:12 +0000)]
Make use of imm12 version of Thumb2 ldr / str instructions more aggressively.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85743 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agofix two strange things in the default passmgr:
Chris Lattner [Sun, 1 Nov 2009 20:41:59 +0000 (20:41 +0000)]
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85742 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agomerge phi-merge.ll into phi.ll
Chris Lattner [Sun, 1 Nov 2009 20:10:11 +0000 (20:10 +0000)]
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85739 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agowhen merging two loads, make sure to take the min of their alignment,
Chris Lattner [Sun, 1 Nov 2009 20:07:07 +0000 (20:07 +0000)]
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85738 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agosplit load sinking out to its own function, like gep sinking.
Chris Lattner [Sun, 1 Nov 2009 20:04:24 +0000 (20:04 +0000)]
split load sinking out to its own function, like gep sinking.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85737 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agofix a bug noticed by inspection: when instcombine sinks loads through
Chris Lattner [Sun, 1 Nov 2009 19:50:13 +0000 (19:50 +0000)]
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85736 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoIPSCCP apparently is not a superset of IPCP, this is bad,
Chris Lattner [Sun, 1 Nov 2009 19:29:12 +0000 (19:29 +0000)]
IPSCCP apparently is not a superset of IPCP, this is bad,
but I'll investigate it separately.  This unbreaks
test/FrontendC/weak_constant.c

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85735 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoconvert to filecheck.
Chris Lattner [Sun, 1 Nov 2009 19:22:20 +0000 (19:22 +0000)]
convert to filecheck.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85734 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoImprove the other instance of the comment.
Duncan Sands [Sun, 1 Nov 2009 19:16:21 +0000 (19:16 +0000)]
Improve the other instance of the comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85733 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd a missing closing parenthesis, and tweak to fit in 80
Duncan Sands [Sun, 1 Nov 2009 19:12:43 +0000 (19:12 +0000)]
Add a missing closing parenthesis, and tweak to fit in 80
columns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85732 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoonly run GlobalDCE at -O3 and run it late instead of early.
Chris Lattner [Sun, 1 Nov 2009 19:09:12 +0000 (19:09 +0000)]
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85731 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agocleanups, switch GlobalDCE to SmallPtrSet instead of std::set
Chris Lattner [Sun, 1 Nov 2009 19:03:42 +0000 (19:03 +0000)]
cleanups, switch GlobalDCE to SmallPtrSet instead of std::set

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85730 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoWe currently only run ipsccp at LTO time, which is silly. It subsumes
Chris Lattner [Sun, 1 Nov 2009 18:57:49 +0000 (18:57 +0000)]
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85729 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoremove a bunch of locking from LLVMContextImpl. Since only one thread
Chris Lattner [Sun, 1 Nov 2009 18:42:03 +0000 (18:42 +0000)]
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85728 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoimprove comment.
Chris Lattner [Sun, 1 Nov 2009 18:17:37 +0000 (18:17 +0000)]
improve comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85725 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoadd a comment about why we don't allow inlining indbr.
Chris Lattner [Sun, 1 Nov 2009 18:16:30 +0000 (18:16 +0000)]
add a comment about why we don't allow inlining indbr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85724 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix tests.
Evan Cheng [Sun, 1 Nov 2009 18:13:29 +0000 (18:13 +0000)]
Fix tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85723 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agothe verifier shouldn't modify the IR.
Chris Lattner [Sun, 1 Nov 2009 18:11:50 +0000 (18:11 +0000)]
the verifier shouldn't modify the IR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85722 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoReverting 85714, 85715, 85716, which are breaking the build
Douglas Gregor [Sun, 1 Nov 2009 16:42:53 +0000 (16:42 +0000)]
Reverting 85714, 85715, 85716, which are breaking the build

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85717 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd a function to Passes.h to allow clients to create instances
Dan Gohman [Sun, 1 Nov 2009 15:28:36 +0000 (15:28 +0000)]
Add a function to Passes.h to allow clients to create instances
of the ScalarEvolution pass without needing to #include ScalarEvolution.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85716 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDon't #include Pass.h from CallGraph.h.
Dan Gohman [Sun, 1 Nov 2009 15:23:35 +0000 (15:23 +0000)]
Don't #include Pass.h from CallGraph.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85715 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove the #include of Pass.h from PassManager.h. This breaks a significant
Dan Gohman [Sun, 1 Nov 2009 15:20:19 +0000 (15:20 +0000)]
Remove the #include of Pass.h from PassManager.h. This breaks a significant
#include dependency, as frontends commonly pull in PassManager.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85714 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoteach ipsccp and ipconstprop that a blockaddress doesn't 'take the address' of a...
Chris Lattner [Sun, 1 Nov 2009 06:11:53 +0000 (06:11 +0000)]
teach ipsccp and ipconstprop that a blockaddress doesn't 'take the address' of a function
in a way that should prevent ip constprop.  This allows clang/test/CodeGen/indirect-goto.c
to pass with the new indirect goto lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85709 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agochange llvm::MergeBlockIntoPredecessor to not merge two blocks BB1->BB2
Chris Lattner [Sun, 1 Nov 2009 04:57:33 +0000 (04:57 +0000)]
change llvm::MergeBlockIntoPredecessor to not merge two blocks BB1->BB2
when BB2 has its address taken.  Since it ends up doing BB2->rauw(BB1),
this can cause the address of the entry block to be taken.  Since it is
generally undesirable to nuke blocks whose address is taken, even when
we can, just unconditionally stop this xform.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85708 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agostrengthen an assumption: RevectorBlockTo knows that PredBB
Chris Lattner [Sun, 1 Nov 2009 04:23:20 +0000 (04:23 +0000)]
strengthen an assumption: RevectorBlockTo knows that PredBB
ended in an uncond branch because the pass requires BreakCriticalEdges.

However, BCE doesn't eliminate critical adges from indbrs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85707 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agofix an issue where the verifier would reject a function whose entry
Chris Lattner [Sun, 1 Nov 2009 04:08:01 +0000 (04:08 +0000)]
fix an issue where the verifier would reject a function whose entry
block had its address taken even if the blockaddress was dead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85706 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoif CostMetrics says to never duplicate some code, don't unswitch a loop.
Chris Lattner [Sun, 1 Nov 2009 03:42:55 +0000 (03:42 +0000)]
if CostMetrics says to never duplicate some code, don't unswitch a loop.
This prevents unswitching from duplicating indbr's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85705 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoconstant fold indirectbr(blockaddress(%bb)) -> br label %bb.
Chris Lattner [Sun, 1 Nov 2009 03:40:38 +0000 (03:40 +0000)]
constant fold indirectbr(blockaddress(%bb)) -> br label %bb.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85704 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoimprove x86 codegen support for blockaddress. We now compile
Chris Lattner [Sun, 1 Nov 2009 03:25:03 +0000 (03:25 +0000)]
improve x86 codegen support for blockaddress.  We now compile
the testcase into:

_test1:                                                     ## @test1
## BB#0:                                                    ## %entry
leaq L_test1_bb6(%rip), %rax
jmpq *%rax
L_test1_bb:                                                 ## Address Taken
LBB1_1:                                                     ## %bb
movb $1, %al
ret
L_test1_bb6:                                                ## Address Taken
LBB1_2:                                                     ## %bb6
movb $2, %al
ret

Note, it is very very strange that BlockAddressSDNode doesn't carry
around TargetFlags.  Dan, please fix this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85703 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agopull check for return inst out of loop, never inline a callee that contains
Chris Lattner [Sun, 1 Nov 2009 03:07:53 +0000 (03:07 +0000)]
pull check for return inst out of loop, never inline a callee that contains
an indirectbr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85702 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix BlockAddress::replaceUsesOfWithOnConstant to correctly
Chris Lattner [Sun, 1 Nov 2009 03:03:03 +0000 (03:03 +0000)]
Fix BlockAddress::replaceUsesOfWithOnConstant to correctly
maintain the block use count in SubclassData.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85701 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoimplement linker support for BlockAddress.
Chris Lattner [Sun, 1 Nov 2009 02:46:39 +0000 (02:46 +0000)]
implement linker support for BlockAddress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85700 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRevert 85678/85680. The decision is to stay with the current form of
Chris Lattner [Sun, 1 Nov 2009 01:27:45 +0000 (01:27 +0000)]
Revert 85678/85680.  The decision is to stay with the current form of
indirectbr, thus we don't need "blockaddr(@func, null)".  Eliminate it
for simplicity.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85699 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUse cbz and cbnz instructions.
Evan Cheng [Sat, 31 Oct 2009 23:46:45 +0000 (23:46 +0000)]
Use cbz and cbnz instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85698 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agovml[as].f32 cause stalls in following advanced SIMD instructions. Avoid using
Jim Grosbach [Sat, 31 Oct 2009 22:57:36 +0000 (22:57 +0000)]
vml[as].f32 cause stalls in following advanced SIMD instructions. Avoid using
them for scalar floating point operations for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85697 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoConsolidate test files
Jim Grosbach [Sat, 31 Oct 2009 22:20:56 +0000 (22:20 +0000)]
Consolidate test files

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85696 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoChange to use FileCheck
Jim Grosbach [Sat, 31 Oct 2009 22:16:14 +0000 (22:16 +0000)]
Change to use FileCheck

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85695 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMake tests more explicit about which instructions are expected.
Jim Grosbach [Sat, 31 Oct 2009 22:14:17 +0000 (22:14 +0000)]
Make tests more explicit about which instructions are expected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85694 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoGrammar tweak to comments
Jim Grosbach [Sat, 31 Oct 2009 22:12:44 +0000 (22:12 +0000)]
Grammar tweak to comments

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85693 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMake sure PRE doesn't split crit edges from indirectbr.
Chris Lattner [Sat, 31 Oct 2009 22:11:15 +0000 (22:11 +0000)]
Make sure PRE doesn't split crit edges from indirectbr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85692 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUpdate test to be more explicit about what instruction sequences are expected for...
Jim Grosbach [Sat, 31 Oct 2009 22:10:38 +0000 (22:10 +0000)]
Update test to be more explicit about what instruction sequences are expected for each operation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85691 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agollvm::SplitEdge should refuse to split an edge from an indirectbr.
Chris Lattner [Sat, 31 Oct 2009 22:04:43 +0000 (22:04 +0000)]
llvm::SplitEdge should refuse to split an edge from an indirectbr.
Fix CodeGenPrepare to not try to split edges from indirectbr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85690 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUpdate test to be more explicit about what instruction sequences are expected for...
Jim Grosbach [Sat, 31 Oct 2009 21:52:58 +0000 (21:52 +0000)]
Update test to be more explicit about what instruction sequences are expected for each operation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85689 91177308-0d34-0410-b5e6-96231b3b80d8