Bill Wendling
4c13e77d49
Re-XFAIL this test until debug stuff settles down.
...
llvm-svn: 61219
2008-12-18 22:13:31 +00:00
Dan Gohman
c4ce336205
Make LowerSubregs' debug output for EXTRACT_SUBREG consistent with
...
that of INSERT_SUBREG and SUBREG_TO_REG.
llvm-svn: 61218
2008-12-18 22:11:34 +00:00
Dan Gohman
d38c00c85b
Fix a copy+pasto in an assertion message.
...
llvm-svn: 61217
2008-12-18 22:07:25 +00:00
Dan Gohman
451afdd9fe
Fix indentation level.
...
llvm-svn: 61216
2008-12-18 22:06:01 +00:00
Dan Gohman
69cd963b9a
When emitting instructions that define EFLAGS and the EFLAGS value isn't
...
used, mark the defs as dead.
llvm-svn: 61215
2008-12-18 22:03:42 +00:00
Dan Gohman
975f78ae79
When setting up the frame pointer, add it as a live-in register to all
...
non-entry blocks, so that it doesn't appear use-before-def anywhere.
llvm-svn: 61214
2008-12-18 22:01:52 +00:00
Dan Gohman
0ab1144c79
Print subreg information in MachineInstr::dump.
...
llvm-svn: 61213
2008-12-18 21:51:27 +00:00
Mon P Wang
998fd29ce1
Fixed x86 code generation of multiple for v2i64. It was incorrect for SSE4.1.
...
llvm-svn: 61211
2008-12-18 21:42:19 +00:00
Mon P Wang
a501640ffa
Added support for vector widening.
...
llvm-svn: 61209
2008-12-18 20:03:17 +00:00
Evan Cheng
8e0f6f272f
Remove dead comments.
...
llvm-svn: 61201
2008-12-18 09:01:18 +00:00
Nick Lewycky
c3a70ade66
Oops! Left out a line.
...
Simplifying the sdiv might allow further simplifications for our users.
llvm-svn: 61196
2008-12-18 06:42:28 +00:00
Nick Lewycky
0f0e63fe73
Make all the vector elements positive in an srem of constant vector.
...
llvm-svn: 61195
2008-12-18 06:31:11 +00:00
Chris Lattner
4caf5eb70c
Fix PR2929 by making bugpoint/code extract propagate the nothrow
...
bit from the original function to the cloned one.
llvm-svn: 61194
2008-12-18 05:52:56 +00:00
Dan Gohman
83682a9441
Give MachineLICM a name, for -time-passes etc.
...
llvm-svn: 61184
2008-12-18 01:37:56 +00:00
Dan Gohman
b0ef9140e5
Move post-RA scheduling before branch folding for now, because branch
...
folding's tail merging doesn't currently preserve liveness information
which post-RA scheduling requires.
llvm-svn: 61183
2008-12-18 01:36:42 +00:00
Owen Anderson
ad4d2ab15b
Re-apply r61158 in a form that no longer breaks tests.
...
llvm-svn: 61182
2008-12-18 01:27:19 +00:00
Dale Johannesen
3e5843b992
Revert previous patch, appears to break bootstrap.
...
llvm-svn: 61181
2008-12-18 01:23:41 +00:00
Dan Gohman
49c44fa014
Mark the x86 fp stack registers as "reserved". This tells LiveVariables
...
and the RegisterScavenger not to expect traditional liveness
techniques are applicable to these registers, since we don't fully
modify the effects of push and pop after stackification.
llvm-svn: 61179
2008-12-18 01:05:09 +00:00
Dale Johannesen
12d031b716
Fix the time regression I introduced in 464.h264ref with
...
my last patch to this file.
The issue there was that all uses of an IV inside a loop
are actually references to Base[IV*2], and there was one
use outside that was the same but LSR didn't see the base
or the scaling because it didn't recurse into uses outside
the loop; thus, it used base+IV*scale mode inside the loop
instead of pulling base out of the loop. This was extra bad
because register pressure later forced both base and IV into
memory. Doing that recursion, at least enough
to figure out addressing modes, is a good idea in general;
the change in AddUsersIfInteresting does this. However,
there were side effects....
It is also possible for recursing outside the loop to
introduce another IV where there was only 1 before (if
the refs inside are not scaled and the ref outside is).
I don't think this is a common case, but it's in the testsuite.
It is right to be very aggressive about getting rid of
such introduced IVs (CheckForIVReuse and the handling of
nonzero RewriteFactor in StrengthReduceStridedIVUsers).
In the testcase in question the new IV produced this way
has both a nonconstant stride and a nonzero base, neither
of which was handled before. (This patch does not handle
all the cases where this can happen.) And when inserting
new code that feeds into a PHI, it's right to put such
code at the original location rather than in the PHI's
immediate predecessor(s) when the original location is outside
the loop (a case that couldn't happen before)
(RewriteInstructionToUseNewBase); better to avoid making
multiple copies of it in this case.
Everything above is exercised in
CodeGen/X86/lsr-negative-stride.ll (and ifcvt4 in ARM which is
the same IR).
llvm-svn: 61178
2008-12-18 00:57:22 +00:00
Chris Lattner
b6372933b5
reapply this hunk from Bill's reversion in r61169, it is conservative
...
and safe and orthogonal from turning off load pre.
llvm-svn: 61177
2008-12-18 00:51:32 +00:00
Chris Lattner
c1c6404bba
make instnamer name unnamed blocks as well as instructions and args.
...
llvm-svn: 61175
2008-12-18 00:33:11 +00:00
Bill Wendling
be4fb8a25f
Temporarily revert r61027. It was causing a bootstrap failure in "release" mode
...
with everyone's favorite error messages:
Comparing stages 2 and 3
warning: ./cc1-checksum.o differs
warning: ./cc1plus-checksum.o differs
Bootstrap comparison failure!
./c-decl.o differs
./cp/decl.o differs
./df-core.o differs
./gcc.o differs
./i386.o differs
./stor-layout.o differs
./tree-pretty-print.o differs
./tree.o differs
make[2]: *** [compare] Error 1
make[1]: *** [stage3-bubble] Error 2
See PR3227.
llvm-svn: 61169
2008-12-17 23:31:20 +00:00
Devang Patel
90ba91574a
Today the front-ends (llvm-gcc and clang) generate multiple llvm.dbg.compile_units to identify source file for various debug entities. Each llvm.dbg.compile_unit matches one file on the disk. However, the backend only supports one DW_TAG_compile_unit per .o file. The backend selects first compile_unit from the vector to construct DW_TAG_compile_unit entry, which is not correct in all cases.
...
First step to resolve this is, record file name and directory directly in debug info for various debug entities.
llvm-svn: 61164
2008-12-17 22:39:29 +00:00
Owen Anderson
59727c0496
Revert r61158 for now, as it caused some test failures.
...
llvm-svn: 61159
2008-12-17 22:17:27 +00:00
Owen Anderson
9389176009
Fix miscompilations caused by renumbering, and enable it as part of prealloc splitting.
...
llvm-svn: 61158
2008-12-17 22:06:59 +00:00
Chris Lattner
3d1f552643
This adds some missing functions to the C binding:
...
- ability to insert previously created instructions using a builder
- creation of aliases
- creation of inline asm constants
Patch by Zoltan Varga!
llvm-svn: 61153
2008-12-17 21:39:50 +00:00
Bill Wendling
6d974bb4d2
Forgot to revert r61031 when I reverted r61019, r61030, and r61040.
...
llvm-svn: 61150
2008-12-17 20:59:57 +00:00
Mon P Wang
015a7f57b2
Fix expansion of vsetcc to set the high bit for true instead of 1.
...
llvm-svn: 61129
2008-12-17 08:49:47 +00:00
Chris Lattner
0cdf52310a
insert some sequence points and preincrement an iterator to avoid
...
iterator invalidation problems.
llvm-svn: 61124
2008-12-17 05:42:08 +00:00
Chris Lattner
222ef4c489
Enhance heap sra to be substantially more aggressive w.r.t PHI
...
nodes. This allows it to do fairly general phi insertion if a
load from a pointer global wants to be SRAd but the load is used
by (recursive) phi nodes. This fixes a pessimization on ppc
introduced by Load PRE.
llvm-svn: 61123
2008-12-17 05:28:49 +00:00
Dan Gohman
ce70fe2e25
Double the amount of memory reserved for SUnits. This is a
...
temporary workaround for an obscure bug. When node cloning is
used, it is possible that more SUnits will be created, and
if the SUnits std::vector has to reallocate, it will
invalidate all the graph edges.
llvm-svn: 61122
2008-12-17 04:30:46 +00:00
Dan Gohman
2a16bbe394
Use getDepth() and getHeight() instead of accessing the
...
Depth and Height members directly, as they may not be
current.
llvm-svn: 61121
2008-12-17 04:25:52 +00:00
Eli Friedman
6cf404f2d1
Fix for PR3225: disable a broken optimization in
...
DAGTypeLegalizer::ExpandShiftWithKnownAmountBit.
In terms of restoring the optimization, the best fix here isn't
obvious... any ideas?
llvm-svn: 61119
2008-12-17 03:35:17 +00:00
Dale Johannesen
904ce8120d
Clarify that the scale factor from CheckForIVReuse
...
can be negative. Keep track of whether all uses of
an IV are outside the loop. Some cosmetics; no
functional change.
llvm-svn: 61109
2008-12-16 22:16:28 +00:00
Dale Johannesen
f51dcef803
A new dag combine; several permutations of this
...
are there under ADD, this one was missing.
llvm-svn: 61107
2008-12-16 22:13:49 +00:00
Owen Anderson
5121ec3821
Add code to renumber split intervals into new vregs. This is disabled for now until I finish working out some iterator invalidation issues.
...
llvm-svn: 61104
2008-12-16 21:35:08 +00:00
Chris Lattner
56b55387fc
Fix another crash found by inspection. If we have a PHI node merging
...
the load multiple times, make sure the check the uses of the PHI to
ensure they are transformable.
llvm-svn: 61102
2008-12-16 21:24:51 +00:00
Chris Lattner
06a456b3f4
fix a crash found by inspection.
...
llvm-svn: 61101
2008-12-16 21:04:51 +00:00
Eli Friedman
cb61afb546
Add a helper to remove a branch and DCE the condition, and use it
...
consistently for deleting branches. In addition to being slightly
more readable, this makes SimplifyCFG a bit better
about cleaning up after itself when it makes conditions unused.
llvm-svn: 61100
2008-12-16 20:54:32 +00:00
Dan Gohman
b4d41e802f
Eliminate the loop that walks the critical path. Instead, just track the
...
position in the critical path during the main instruction walk. This
eliminates the need for the CritialAntiDep DenseMap.
llvm-svn: 61096
2008-12-16 19:27:52 +00:00
Bill Wendling
a397baea88
Temporarily revert r61019, r61030, and r61040. These were breaking LLVM Release
...
builds.
llvm-svn: 61094
2008-12-16 19:06:48 +00:00
Dan Gohman
4476ef810b
Preserve SourceValue information when lowering produces multiple loads from
...
different offsets within the same stack slot.
llvm-svn: 61093
2008-12-16 18:25:36 +00:00
Evan Cheng
c35fc49477
We have decided not to support inline asm where an output operand with a matching input operand with incompatible type (i.e. either one is a floating point and the other is an integer or the sizes of the types differ). SelectionDAGBuild will catch these and exit with an error.
...
llvm-svn: 61092
2008-12-16 18:21:39 +00:00
Oscar Fuentes
4f9b3efd1e
CMake: Added DbgInfoPrinter.cpp to lib/Analysis/CMakeFiles.txt.
...
llvm-svn: 61087
2008-12-16 12:25:04 +00:00
Torok Edwin
8fa6e63cf9
Add -print-dbginfo pass that prints LLVM IR with comments inserted to show
...
which source/line a certain BB/instruction comes from, original variable names,
and original (unmangled) C++ name of functions.
llvm-svn: 61085
2008-12-16 09:09:19 +00:00
Torok Edwin
8926139252
Add utility functions to search for DbgStopPointInst corresponding to an
...
instruction or BasicBlock, and to search for DbgDeclareInst corresponding to a
variable.
llvm-svn: 61084
2008-12-16 09:07:36 +00:00
Torok Edwin
f49b028780
use different name for parameter to make it clear that we set DIDescriptor::GV
...
llvm-svn: 61083
2008-12-16 09:06:01 +00:00
Nick Lewycky
69c9aa4ce5
Generalize support for analyzing loops to include SLE/SGE loop exit conditions
...
and support for non-unit strides with signed exit conditions.
llvm-svn: 61082
2008-12-16 08:30:01 +00:00
Chris Lattner
6ddde53783
switch some std::set/std::map to SmallPtrSet/DenseMap.
...
llvm-svn: 61081
2008-12-16 07:34:30 +00:00
Chris Lattner
8b4be37275
fix PR3217: fully cached queries need to be verified against the
...
visited set before they are used. If used, their blocks need to be
added to the visited set so that subsequent queries don't use conflicting
pointer values in the cache result blocks.
llvm-svn: 61080
2008-12-16 07:10:09 +00:00