9295 Commits

Author SHA1 Message Date
Evan Cheng
604bc162da After trivial coalescing, the MI being visited may have become a copy. Avoid adding it to CSE hash table since copies aren't being considered for CSE and they may be deleted.
rdar://7819990

llvm-svn: 100170
2010-04-02 02:21:24 +00:00
Dale Johannesen
4244d12769 Teach AnalyzeBranch, RemoveBranch and the branch
folder to be tolerant of debug info following the
branch(es) at the end of a block.

llvm-svn: 100168
2010-04-02 01:38:09 +00:00
Eric Christopher
5342ddaadf Revert r100143.
llvm-svn: 100146
2010-04-01 22:54:42 +00:00
Devang Patel
18737b2a81 Revert r100117.
llvm-svn: 100145
2010-04-01 22:47:29 +00:00
David Greene
6789e21094 Add some switches helpful for debugging:
-print-before=<Pass Name>

Dump IR before running pass <Pass Name>.

-print-before-all

Dump IR before running each pass.

-print-after-all

Dump IR after running each pass.

These are helpful when tracking down a miscompilation.  It is easy to
get IR dumps and do diffs on them, etc.

To make this work well, add a new getPrinterPass API to Pass so that
each kind of pass (ModulePass, FunctionPass, etc.) can create a Pass
suitable for dumping out the kind of object the Pass works on.

llvm-svn: 100143
2010-04-01 22:43:57 +00:00
Devang Patel
15676e5167 Do not eagerly record known previous location. DBG_VALUE may not cause a new label due to one or other reason.
llvm-svn: 100134
2010-04-01 20:22:44 +00:00
Evan Cheng
8563ee4ed4 Skip checking preferred alignment of GVs defined in other translation units all together.
llvm-svn: 100133
2010-04-01 20:13:28 +00:00
Evan Cheng
4c014c892a - Avoid using floating point stores to implement memset unless the value is zero.
- Do not try to infer GV alignment unless its type is sized. It's not possible to infer alignment if it has opaque type.

llvm-svn: 100118
2010-04-01 18:19:11 +00:00
Devang Patel
1a55ef0427 Skip instructions until new scope is seen.
llvm-svn: 100117
2010-04-01 17:32:01 +00:00
Devang Patel
4c603b1c4e Cosmetic changes.
Update comment, rename a local variable.

llvm-svn: 100116
2010-04-01 17:16:48 +00:00
Evan Cheng
43cd9e3845 Fix sdisel memcpy, memset, memmove lowering:
1. Makes it possible to lower with floating point loads and stores.
2. Avoid unaligned loads / stores unless it's fast.
3. Fix some memcpy lowering logic bug related to when to optimize a
   load from constant string into a constant.
4. Adjust x86 memcpy lowering threshold to make it more sane.
5. Fix x86 target hook so it uses vector and floating point memory
   ops more effectively.
rdar://7774704

llvm-svn: 100090
2010-04-01 06:04:33 +00:00
Bill Wendling
95643404a8 Reapply r100056. It doesn't look like it's the one that's causing a failure.
llvm-svn: 100065
2010-04-01 00:00:43 +00:00
Bill Wendling
fa9810de3b Revert r100056. It was causing a failure on MSVC.
llvm-svn: 100062
2010-03-31 23:26:26 +00:00
Stuart Hastings
7f89a0ac88 Reverting 100048; it broke two Frontend debug info tests.
llvm-svn: 100058
2010-03-31 23:08:46 +00:00
Bill Wendling
506b304706 Rewrite CorrectExtraCFGEdges() to make it more understandable.
* Set the "DestA" and "DestB" according to how they're understood by the
  method. I.e., if one or both of them should point to the "fall through" block,
  then point to the fall through block.

* Improve the loop that removes superfluous edges to be more understandable.

llvm-svn: 100056
2010-03-31 22:54:38 +00:00
Stuart Hastings
f3e5afd6d3 Debug info can now properly represent functions inside classes inside other functions. Partial fix for Radar 7424645.
llvm-svn: 100048
2010-03-31 21:10:54 +00:00
Benjamin Kramer
96956ed0ff Reduce string trashing.
llvm-svn: 100038
2010-03-31 20:15:45 +00:00
Benjamin Kramer
74729ae094 DwarfDebug: Allocate DIEValues with a BumpPtrAllocator. Most of them are
POD-like anyway, so we don't even care about calling their d'tors (DIEBlock
being the exception).

~6% less mallocs and ~1% compile time improvement on clang -O0 -g oggenc.c

llvm-svn: 100035
2010-03-31 19:34:01 +00:00
Chris Lattner
17d38594fe reduce indentation
llvm-svn: 99999
2010-03-31 06:09:04 +00:00
Chris Lattner
71696ef1ad tidy up
llvm-svn: 99998
2010-03-31 06:06:37 +00:00
Chris Lattner
03e1b5ab5c MI != 0 is checked in the assert right above this.
llvm-svn: 99995
2010-03-31 05:42:48 +00:00
Chris Lattner
848c7d2e49 use the isDebugValue() predicate and pop_back_val()
llvm-svn: 99993
2010-03-31 05:39:57 +00:00
Chris Lattner
8d2fe28910 assert is a function-like macro, not a control flow operator.
llvm-svn: 99992
2010-03-31 05:36:29 +00:00
Chris Lattner
a5ab82a613 reduce indentation, fit in 80 cols and various other cosmetic cleanups.
llvm-svn: 99989
2010-03-31 05:15:22 +00:00
Chris Lattner
3131ae86d8 use the optimized debug info apis in sdisel.
llvm-svn: 99986
2010-03-31 04:24:50 +00:00
Chris Lattner
009de335ac add new apis for getting/setting !dbg metadata on
instructions.  In addition to being a convenience,
they are faster than the old apis, particularly when
not going from an MDKindID like people should be
doing.

llvm-svn: 99982
2010-03-31 03:34:40 +00:00
Bob Wilson
6f7fd28824 Revert Mon Ping's change 99928, since it broke all the llvm-gcc buildbots.
llvm-svn: 99948
2010-03-30 22:27:04 +00:00
Devang Patel
57c644f926 Ignore invalid metadata.
llvm-svn: 99938
2010-03-30 22:09:52 +00:00
Mon P Wang
7460571381 Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
A update of langref will occur in a subsequent checkin.

llvm-svn: 99928
2010-03-30 20:55:56 +00:00
Benjamin Kramer
04c713dd45 Introduce SpecificBumpPtrAllocator, a wrapper for BumpPtrAllocator which allows
only a single type of object to be allocated. Use it to make VNInfo destruction
typesafe.

llvm-svn: 99919
2010-03-30 20:16:45 +00:00
Chris Lattner
9897043928 Rip out the 'is temporary' nonsense from the MCContext interface to
create symbols.  It is extremely error prone and a source of a lot
of the remaining integrated assembler bugs on x86-64.

This fixes rdar://7807601.

llvm-svn: 99902
2010-03-30 18:10:53 +00:00
Evan Cheng
85eea4e031 Funky indentation.
llvm-svn: 99901
2010-03-30 18:08:53 +00:00
Devang Patel
67d94ab0f8 There is no need to fall through after processing DBG_VALUE machine instruction.
llvm-svn: 99899
2010-03-30 18:07:00 +00:00
Daniel Dunbar
692d165c3b Fix -Asserts warning.
llvm-svn: 99895
2010-03-30 17:57:42 +00:00
Torok Edwin
8061bb141e Reapply r99881 with some fixes: only call destructor in releaseMemory!
llvm-svn: 99883
2010-03-30 11:17:48 +00:00
Torok Edwin
a2d1dc42e1 Revert 99881, it brooke smooshlab's llvm-gcc-i386-darwin9.
llvm-svn: 99882
2010-03-30 10:25:08 +00:00
Torok Edwin
ba6d13c0ea Introduce another Reset() method in BumpPtrAllocator that calls a destructor
on all objects it has allocated, if they are all of the same size and alignment.
Use this to destruct all VNInfos allocated in LiveIntervalAnalysis (PR6653).

valnos is not reliable for this purpose, as seen in r99400
(which still leaked, and sometimes caused double frees).

llvm-svn: 99881
2010-03-30 10:08:26 +00:00
Evan Cheng
cbcccce420 Avoid being influenced by the presence of dbg_value instructions.
llvm-svn: 99879
2010-03-30 05:49:07 +00:00
Bill Wendling
b2799edaf6 Re-add back in the slow way of determining of a clean-up should become a
catch-all. The "dominates" way won't catch all of the selectors which must be
changed.

llvm-svn: 99850
2010-03-29 23:37:07 +00:00
Bill Wendling
decbb74d68 A more general (and simpler!) implementation of r99671. It performs a similar
transform. I.e., if a clean-up eh.selector call dominates the invoke of an
_Unwind_Resume_or_Rethrow, then we convert the eh.selector into a
catch-all. This patch, however, uses the DominatorTree information, and doesn't
go through the whole rigmarole of starting at the eh.exception call, finding the
corresponding URoR and eh.selector calls, and trying to trace through any number
of instruction types to get to them.

llvm-svn: 99846
2010-03-29 23:02:46 +00:00
Devang Patel
23b2ae621c Encode start location of debug value, communicated through DBG_VALUE machine instruction, in a variable's DIE.
llvm-svn: 99845
2010-03-29 22:59:58 +00:00
Evan Cheng
742db6874a Fix PR4975. Avoid referencing empty vector.
llvm-svn: 99840
2010-03-29 21:27:30 +00:00
Evan Cheng
4d1aa2a1c6 Pool allocate SDDbgValue nodes.
llvm-svn: 99836
2010-03-29 20:48:30 +00:00
Chris Lattner
6efa201f7f use RAII for ExceptionTimer too
llvm-svn: 99833
2010-03-29 20:39:38 +00:00
Chris Lattner
4787975994 fix a variety of issues were we'd start DebugTimer but
not stop it by using RAII.

llvm-svn: 99832
2010-03-29 20:38:20 +00:00
Devang Patel
bd477bef25 Refactor code to push DILocation prcessing into DwarfDebug.cpp from AsmPrinter.cpp.
This is same as r99772 (which was reverted) with just one meaningful difference where two source lines exchanged their positions.

llvm-svn: 99816
2010-03-29 17:20:31 +00:00
Devang Patel
1e8ccb5f8b Revert 99772.
llvm-svn: 99778
2010-03-28 21:23:37 +00:00
Chris Lattner
03719af41d add a statistic for the # times isel has to backtrack.
llvm-svn: 99774
2010-03-28 19:46:56 +00:00
Devang Patel
32bdaef3fe Refactoring. Push DILocation processing in to DwarfDebug from AsmPrinter.
llvm-svn: 99772
2010-03-28 18:57:09 +00:00
Chris Lattner
6642118e83 finally remove the immAllOnesV_bc/immAllZerosV_bc patterns
and those derived from them.  These are obnoxious because
they were written as: PatLeaf<(bitconvert).  Not having an
argument was foiling adding better type checking for operand
count matching up with what was required (in this case,
bitconvert always requires an operand!)

llvm-svn: 99759
2010-03-28 08:43:23 +00:00