Dan Gohman [Fri, 23 Apr 2010 15:29:50 +0000 (15:29 +0000)]
Move FastISel's HandlePHINodesInSuccessorBlocks call down into FastISel
itself too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102176
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 23 Apr 2010 15:23:32 +0000 (15:23 +0000)]
Switch getelementptr inbounds and sdiv exact from undef to trap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102175
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Callanan [Fri, 23 Apr 2010 01:56:36 +0000 (01:56 +0000)]
Fixed EDOperand to use the operand type, not the
flags, to determine whether or not the operand is
a memory operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102158
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 23 Apr 2010 01:55:05 +0000 (01:55 +0000)]
Fix LSR to tolerate cases where ScalarEvolution initially
misses an opportunity to fold add operands, but folds them
after LSR has separated them out. This fixes rdar://
7886751.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102157
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 23 Apr 2010 01:51:29 +0000 (01:51 +0000)]
When it doesn't matter whether zero or sign extension is used,
use ScalarEvolutions "any" extend function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102156
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 23 Apr 2010 01:18:53 +0000 (01:18 +0000)]
Revert 102135, 102129, 102127, 102106, 102104, 102102, 102012, 102004,
because 102004 causes codegen to emit invalid assembly on at least
x86_64-unknown-gnu-linux.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102155
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 23 Apr 2010 00:50:50 +0000 (00:50 +0000)]
reject invalid comma stuff with a message. We reject the case in
PR6888 with:
$ llvm-as t.ll
llvm-as: t.ll:2:29: error: expected metadata or 'align'
store <3 x i32> %x, i32 1, i32 1>, <3 x i32>* %p
^
instead of:
$ llvm-as t.ll
llvm-as:
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102154
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 23 Apr 2010 00:41:03 +0000 (00:41 +0000)]
disable my previous inliner patch, it appears to be busting self-host.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102153
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 22 Apr 2010 23:37:35 +0000 (23:37 +0000)]
The inliner was choosing to not consider call sites
that appear in the SCC as a result of inlining as candidates
for inlining. Change this so that it *does* consider call
sites that change from being indirect to being direct as a
result of inlining. This allows it to completely
"devirtualize" the testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102146
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 22 Apr 2010 23:24:18 +0000 (23:24 +0000)]
Update ARM DAGtoDAG for matching UBFX instruction for unsigned bitfield
extraction. This fixes PR5998.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102144
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 22 Apr 2010 23:14:21 +0000 (23:14 +0000)]
Add an initial description of a new concept: trap values, and change
the definition of the nsw and nuw flags to make use of it.
nsw was introduced to help optimizers answer yes to the following:
// Can we change i from i32 to i64 to eliminate the cast inside the loop?
for (int i = 0; i < n; ++i) A[i] *= 0.1;
// Can we assume that this loop will eventually terminate?
for (int i = 0; i <= n; ++i) A[i] *= 0.1;
In its current form, it isn't truly sufficient for either.
In the first case, if the increment overflows, it'll still have some
valid i32 value; sign-extending it will produce a value which is 33
homogeneous sign bits trailed by 31 independent undef bits. If i is
promoted to i64, it won't have those same values when it reaches that
point. (The compiler could recover here by reasoning about how i is
used by the load, but that's a lot more complicated and isn't always
possible.)
In the second case, there is no value for i which will be greater than
n, so having the increment return undef on overflow doesn't help.
Trap values are a formalization of some existing concepts that we have
about LLVM IR, and give the optimizers a better basis for answering yes
to both questions above.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102140
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 22 Apr 2010 23:07:58 +0000 (23:07 +0000)]
refactor the interface to InlineFunction so that most of the in/out
arguments are handled with a new InlineFunctionInfo class. This
makes it easier to extend InlineFunction to return more info in the
future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102137
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 22 Apr 2010 22:06:28 +0000 (22:06 +0000)]
Remove the test for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102135
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 22 Apr 2010 21:34:16 +0000 (21:34 +0000)]
add macruby back
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102132
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 22 Apr 2010 21:31:00 +0000 (21:31 +0000)]
when inlining something like this:
define void @f3(void (i8*)* %__f) ssp {
entry:
call void %__f(i8* undef)
unreachable
}
define void @f4(i8* %this) ssp align 2 {
entry:
call void @f3(void (i8*)* @f2) ssp
ret void
}
The inliner is turning the indirect call to %__f into a direct
call to F2. Make the call graph more precise when this happens.
The inliner doesn't revisit call sites introduced by inlining,
so there isn't an easy way to test for this, but a more precise
callgraph is a good thing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102131
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 22 Apr 2010 20:56:35 +0000 (20:56 +0000)]
Add comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102129
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 22 Apr 2010 20:55:53 +0000 (20:55 +0000)]
Sink SelectionDAGBuilder's HandlePHINodesInSuccessorBlocks down
into SelectionDAGBuilder itself.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102128
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 22 Apr 2010 20:52:00 +0000 (20:52 +0000)]
Adjust debug range offsets for isWeakForLinker() functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102127
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 22 Apr 2010 20:50:43 +0000 (20:50 +0000)]
Add a blurb about the new LSR.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102126
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Thu, 22 Apr 2010 20:48:34 +0000 (20:48 +0000)]
The -condprop pass has been deleted.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102125
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 22 Apr 2010 20:47:28 +0000 (20:47 +0000)]
The post-RA scheduler is currently off by default on x86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102124
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 22 Apr 2010 20:46:50 +0000 (20:46 +0000)]
Move HandlePHINodesInSuccessorBlocks functions out of SelectionDAGISel
and into SelectionDAGBuilder and FastISel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102123
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 22 Apr 2010 20:42:40 +0000 (20:42 +0000)]
Add some verbiage about Clang to the 2.7 release notes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102121
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 22 Apr 2010 20:42:33 +0000 (20:42 +0000)]
add a DEBUG call so that -debug lists when CGSCCPM iterates.
Fix RefreshCallGraph to use CGN->replaceCallEdge instead of hand
rolling its own loop. replaceCallEdge properly maintains the
reference counts of the nodes, fixing a crash exposed by the
iterative callgraph stuff.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102120
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 22 Apr 2010 20:41:10 +0000 (20:41 +0000)]
eliminate dead #include.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102119
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 22 Apr 2010 20:19:46 +0000 (20:19 +0000)]
- It's not safe to promote rotates (at least not trivially).
- Some code refactoring.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102111
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 22 Apr 2010 20:06:42 +0000 (20:06 +0000)]
Fix a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102110
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 22 Apr 2010 19:55:20 +0000 (19:55 +0000)]
Move PHINodesToUpdate out of SelectionDAGBuilder and into
FunctionLoweringInfo, as it isn't SelectionDAG-specific. This isn't
completely natural, as PHI node state is not per-function but rather
per-basic-block, however there's currently no other convenient
per-basic-block state to group it with.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102109
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 22 Apr 2010 18:43:35 +0000 (18:43 +0000)]
Rename InsnAfterLabelMap and InsnBeforeLabelMap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102106
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 22 Apr 2010 18:39:21 +0000 (18:39 +0000)]
Keep track of MCSymbol used to mark beginning of a function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102104
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 22 Apr 2010 18:33:31 +0000 (18:33 +0000)]
Add mention of ARM atomic builtin support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102103
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 22 Apr 2010 18:28:58 +0000 (18:28 +0000)]
At this point Start and End are not null.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102102
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 22 Apr 2010 18:28:43 +0000 (18:28 +0000)]
Update ARM frame index scavenging description
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102101
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 22 Apr 2010 18:26:17 +0000 (18:26 +0000)]
remove dupe
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102100
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 22 Apr 2010 17:39:38 +0000 (17:39 +0000)]
reword my incoherent babble into something that makes sense
from Wesley Peck!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102096
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 22 Apr 2010 17:28:36 +0000 (17:28 +0000)]
two more projects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102095
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 22 Apr 2010 17:25:00 +0000 (17:25 +0000)]
add some notes from Matthieu Moy!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102093
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 22 Apr 2010 16:45:27 +0000 (16:45 +0000)]
improve tblgen doc, pointed out by Zhongxing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102072
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Thu, 22 Apr 2010 14:19:00 +0000 (14:19 +0000)]
Fixing a typo in the "Clang project" section of the release notes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102064
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Thu, 22 Apr 2010 13:53:54 +0000 (13:53 +0000)]
Small fix to the "Other Improvements and New Features" section of the release notes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102063
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Thu, 22 Apr 2010 13:50:46 +0000 (13:50 +0000)]
Fixing small typos in the "New Useful APIs" section of the release notes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102062
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Thu, 22 Apr 2010 13:43:14 +0000 (13:43 +0000)]
Fixing small typos in the "ARM Target Improvements" section of the release notes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102061
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Thu, 22 Apr 2010 13:36:27 +0000 (13:36 +0000)]
Rewording the "generated debug information" paragraph in the "Interpreter and JIT Improvements" section of the release notes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102060
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Thu, 22 Apr 2010 13:28:34 +0000 (13:28 +0000)]
Reworking the wording of the "target data string" paragraph in the "Optimizer Improvments" section of the release notes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102059
91177308-0d34-0410-b5e6-
96231b3b80d8
Gabor Greif [Thu, 22 Apr 2010 10:25:23 +0000 (10:25 +0000)]
<pre> seems to close <p>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102057
91177308-0d34-0410-b5e6-
96231b3b80d8
Gabor Greif [Thu, 22 Apr 2010 10:21:43 +0000 (10:21 +0000)]
the validator coughed up some problems, most of them fixed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102056
91177308-0d34-0410-b5e6-
96231b3b80d8
Gabor Greif [Thu, 22 Apr 2010 10:11:24 +0000 (10:11 +0000)]
shorten link
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102055
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 22 Apr 2010 06:39:56 +0000 (06:39 +0000)]
static analyzer has its own section
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102054
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 22 Apr 2010 06:38:11 +0000 (06:38 +0000)]
add mc and static analyzer blurbs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102053
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 22 Apr 2010 06:28:20 +0000 (06:28 +0000)]
another checkpoint.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102052
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 22 Apr 2010 05:41:35 +0000 (05:41 +0000)]
various updates.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102051
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 22 Apr 2010 05:33:15 +0000 (05:33 +0000)]
fix file header.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102049
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 22 Apr 2010 01:35:11 +0000 (01:35 +0000)]
Don't attempt to analyze values which are obviously undef. This fixes some
assertion failures in extreme cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102042
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 22 Apr 2010 01:30:05 +0000 (01:30 +0000)]
Tidy a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102041
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 21 Apr 2010 23:18:07 +0000 (23:18 +0000)]
Run LiveVariables instead of computing liveness locally in -regalloc=fast.
This actually makes everything slower, but the plan is to have isel add <kill>
flags the way it is already adding <dead> flags. Then LiveVariables can be
removed again.
When ignoring the time spent in LiveVariables, -regalloc=fast is now twice as
fast as -regalloc=local.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102034
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 21 Apr 2010 20:57:54 +0000 (20:57 +0000)]
Do not try to optimize a copy that has already been marked for deletion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102027
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Wed, 21 Apr 2010 19:08:53 +0000 (19:08 +0000)]
Add command line option to disable debug info printing in .s file. This option does not impact debug info generation and preservation through earlier compile starges.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102012
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Wed, 21 Apr 2010 18:39:03 +0000 (18:39 +0000)]
Fix a performance problem with the new SSAUpdater. This showed up in the
GCCAS time for MultiSource/Benchmarks/ASCI_Purple/SMG2000.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102009
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Wed, 21 Apr 2010 18:37:48 +0000 (18:37 +0000)]
Modified some assert() msg strings; no other functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102008
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 21 Apr 2010 18:02:42 +0000 (18:02 +0000)]
Add fast register allocator, enabled with -regalloc=fast.
So far this is just a clone of -regalloc=local that has been lobotomized to run
25% faster. It drops the least-recently-used calculations, and is just plain
stupid when it runs out of registers.
The plan is to make this go even faster for -O0 by taking advantage of the short
live intervals in unoptimized code. It should not be necessary to calculate
liveness when most virtual registers are killed 2-3 instructions after they are
born.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102006
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Wed, 21 Apr 2010 16:32:19 +0000 (16:32 +0000)]
Identify when a lexical scope is split in to multiple instruction ranges. Emit such ranges using DW_AT_ranges.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102004
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 21 Apr 2010 16:04:04 +0000 (16:04 +0000)]
Make ScalarEvolution::getConstant support pointer types, for consistency
with ScalarEvolution's overall approach to pointer types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102003
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Wed, 21 Apr 2010 13:51:48 +0000 (13:51 +0000)]
Dragonegg will be released along side llvm-2.7.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102001
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 21 Apr 2010 06:42:24 +0000 (06:42 +0000)]
final hacking for tonight, still more to go.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101995
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 21 Apr 2010 06:23:40 +0000 (06:23 +0000)]
continue the process of detangling this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101992
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 21 Apr 2010 05:17:40 +0000 (05:17 +0000)]
rough pass moving stuff into relevant sections, still much
editing to do.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101987
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 21 Apr 2010 04:28:21 +0000 (04:28 +0000)]
remove ldc, rubinious, macruby, icedtea, llvm-lua, which
don't have updates for 2.7.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101985
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 21 Apr 2010 03:18:23 +0000 (03:18 +0000)]
Implement -disable-non-leaf-fp-elim which disable frame pointer elimination
optimization for non-leaf functions. This will be hooked up to gcc's
-momit-leaf-frame-pointer option. rdar://
7886181
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101984
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 21 Apr 2010 01:47:12 +0000 (01:47 +0000)]
isel (i32 anyext i16) as insert_subreg when 16-bit ops are being promoted.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101979
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 21 Apr 2010 01:39:06 +0000 (01:39 +0000)]
Trim include.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101978
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 21 Apr 2010 01:34:56 +0000 (01:34 +0000)]
Add more const qualifiers on TargetMachine and friends.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101977
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 21 Apr 2010 01:32:29 +0000 (01:32 +0000)]
Update CMakeLists.txt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101976
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 21 Apr 2010 01:22:34 +0000 (01:22 +0000)]
Move several SelectionDAG-independent utility functions out of the
SelectionDAG directory and into a new Analysis.cpp file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101975
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Wed, 21 Apr 2010 01:01:19 +0000 (01:01 +0000)]
Thumb instructions which have reglist operands at the end and predicate operands
before reglist were not properly handled with respect to IT Block. Fix that by
creating a new method ARMBasicMCBuilder::DoPredicateOperands() used by those
instructions for disassembly. Add a test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101974
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 21 Apr 2010 00:47:40 +0000 (00:47 +0000)]
Implement (but don't enable) PR6724 and rdar://
6295824. In short,
we have RefreshCallGraph detect when a function pass devirtualizes
a call, and have CGSCCPassMgr iterate (up to a count) when this
happens. This allows (in the example) GVN to devirtualize the
call in foo, then the inliner to inline it away.
This is not currently enabled because I haven't done any analysis
on the (potentially substantial) code size or performance impact of
doing this, and guess what, it exposes callgraph updating bugs in
various passes. This is progress though, and you can play with it
by passing -max-cg-scc-iterations=5 to opt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101973
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 21 Apr 2010 00:44:22 +0000 (00:44 +0000)]
- Clean up some crappy code which deals with coalescing of copies which look at
extract_subreg / insert_subreg, etc.
- Add support for more aggressive insert_subreg coalescing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101971
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 21 Apr 2010 00:43:30 +0000 (00:43 +0000)]
Revert r101471. For tight recursive functions which have multiple
recursive callsites, inlining can reduce the number of calls by
exponential factors, as it does in
MultiSource/Benchmarks/Olden/treeadd. More involved heuristics
will be needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101969
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Wed, 21 Apr 2010 00:34:04 +0000 (00:34 +0000)]
Handle a displacement location in 64-bit as an RIP-relative displacement. It
fixes a bug (<rdar://problem/
7880900>) in the JIT. This code wouldn't work:
target triple = "x86_64-apple-darwin"
define double @func(double %a) {
%tmp1 = fmul double %a, 5.
000000e-01 ; <double> [#uses=1]
ret double %tmp1
}
define i32 @main() nounwind {
%1 = call double @func(double 4.
770000e-04) ; <i64> [#uses=0]
ret i32 0
}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101965
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 21 Apr 2010 00:21:07 +0000 (00:21 +0000)]
Rewrite machine cse to avoid recursion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101964
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 21 Apr 2010 00:19:28 +0000 (00:19 +0000)]
Add another variant of this test which found a place where
CodeGen's ComputeMaskedBits was being over-conservative when computing
bits for an ADD.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101963
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 20 Apr 2010 23:18:40 +0000 (23:18 +0000)]
teach the x86 address matching stuff to handle
(shl (or x,c), 3) the same as (shl (add x, c), 3)
when x doesn't have any bits from c set.
This finishes off PR1135. Before we compiled the block to:
to:
LBB0_3: ## %bb
cmpb $4, %dl
sete %dl
addb %dl, %cl
movb %cl, %dl
shlb $2, %dl
addb %r8b, %dl
shlb $2, %dl
movzbl %dl, %edx
movl %esi, (%rdi,%rdx,4)
leaq 2(%rdx), %r9
movl %esi, (%rdi,%r9,4)
leaq 1(%rdx), %r9
movl %esi, (%rdi,%r9,4)
addq $3, %rdx
movl %esi, (%rdi,%rdx,4)
incb %r8b
decb %al
movb %r8b, %dl
jne LBB0_1
Now we produce:
LBB0_3: ## %bb
cmpb $4, %dl
sete %dl
addb %dl, %cl
movb %cl, %dl
shlb $2, %dl
addb %r8b, %dl
shlb $2, %dl
movzbl %dl, %edx
movl %esi, (%rdi,%rdx,4)
movl %esi, 8(%rdi,%rdx,4)
movl %esi, 4(%rdi,%rdx,4)
movl %esi, 12(%rdi,%rdx,4)
incb %r8b
decb %al
movb %r8b, %dl
jne LBB0_1
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101958
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Tue, 20 Apr 2010 22:34:09 +0000 (22:34 +0000)]
Because of the EMMS problem, right now we have to support
user-defined operations that use MMX register types, but
the compiler shouldn't generate them on its own. This adds
a Synthesizable abstraction to represent this, and changes
the vector widening computation so it won't produce MMX types.
(The motivation is to remove noise from the ABI compatibility
part of the gcc test suite, which has some breakage right now.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101951
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 20 Apr 2010 22:24:18 +0000 (22:24 +0000)]
Rename ValueMapTy as ValueToValueMapTy to clearly indicate that this has no replationship with ADT/ValueMap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101950
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 20 Apr 2010 22:18:31 +0000 (22:18 +0000)]
There is no need to install ValueMapper.h header.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101949
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Tue, 20 Apr 2010 21:29:28 +0000 (21:29 +0000)]
Better error-handling of getBitFieldInvMask() where msb < lsb (encoding error),
instead of just asserting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101942
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 20 Apr 2010 19:40:58 +0000 (19:40 +0000)]
I plan to release a version of dragonegg based on llvm-2.7 shortly
after the llvm-2.7 release.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101934
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Tue, 20 Apr 2010 18:45:47 +0000 (18:45 +0000)]
When MachineLICM is hoisting a physical register after regalloc, make sure the
register is not killed in the loop.
This fixes 188.ammp on ARM where the post-ra scheduler would grab a register
that looked available but wasn't.
A testcase would be huge and fragile, sorry.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101930
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Tue, 20 Apr 2010 18:45:24 +0000 (18:45 +0000)]
When doing Thumb disassembly, there's no need to consider t2ADDrSPi12/t2SUBrSPi12,
as their generic counterparts t2ADDri12/t2SUBri12 should suffice.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101929
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 20 Apr 2010 18:14:47 +0000 (18:14 +0000)]
Move CodeGen/X86/2010-04-19-DAGCombineCrash.ll into CodeGen/X86/crash.ll. Also
reduce.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101925
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Tue, 20 Apr 2010 17:28:50 +0000 (17:28 +0000)]
For t2LDRT, t2LDRBT, t2LDRHT, t2LDRSBT, and t2LDRSHT, if Rn(Inst{19-16})=='1111',
transform the Opcode to the corresponding t2LDR*pci counterpart.
Ref: A8.6.86 LDRT, A8.6.65 LDRBT, A8.6.77 LDRHT, A8.6.81 LDRSBT, A8.6.85 LDRSHT
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101915
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 20 Apr 2010 17:27:38 +0000 (17:27 +0000)]
Typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101914
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 20 Apr 2010 17:20:10 +0000 (17:20 +0000)]
Add RUN:
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101913
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 20 Apr 2010 15:03:56 +0000 (15:03 +0000)]
Sink the CopyToExportRegsIfNeeded calls out of SelectionDAGISel
into SelectionDAGBuilder. This avoids a separate pass over the
instructions, and has the side effect of providing debug location
information to the copy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101906
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 20 Apr 2010 15:00:41 +0000 (15:00 +0000)]
Don't send PHI nodes down to SelectionDAGBuilder of FastISel, since
they end up doing nothing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101904
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 20 Apr 2010 14:51:20 +0000 (14:51 +0000)]
Document that TargetRegisterInfo::contains does not cover virtual registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101903
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 20 Apr 2010 14:50:13 +0000 (14:50 +0000)]
Sink this use_empty() check into isUsedOutsideOfDefiningBlock.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101902
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 20 Apr 2010 14:48:02 +0000 (14:48 +0000)]
If a PHI node somehow has debug info, propogate it to the MachineInstr PHI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101901
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 20 Apr 2010 14:46:25 +0000 (14:46 +0000)]
Don't iterate through the whole block just to find the PHI nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101900
91177308-0d34-0410-b5e6-
96231b3b80d8
Gabor Greif [Tue, 20 Apr 2010 13:13:04 +0000 (13:13 +0000)]
use abstract accessors to CallInst
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101899
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Tue, 20 Apr 2010 12:16:50 +0000 (12:16 +0000)]
PR6880: Don't dereference CallsExternalNode if it's NULL.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101897
91177308-0d34-0410-b5e6-
96231b3b80d8