28410 Commits

Author SHA1 Message Date
Jakob Stoklund Olesen
2a2fc7561b Fix a missing def-flag on a Mips epilogue load.
llvm-svn: 71935
2009-05-16 07:26:06 +00:00
Jakob Stoklund Olesen
f416b4b5ce Remember to set def-flag on register loaded from stack slot in CellSPU.
llvm-svn: 71934
2009-05-16 07:25:44 +00:00
Jakob Stoklund Olesen
fe508fac97 Verify that explicit definitions in the TargetInstrDesc are matched by
explicit register define operands.

llvm-svn: 71933
2009-05-16 07:25:20 +00:00
Jakob Stoklund Olesen
b188c38212 Allow redefinition of reserved registers.
llvm-svn: 71932
2009-05-16 07:24:54 +00:00
Duncan Sands
6ccd63bea9 Put back a bit of expensive checking logic that
was overenthusiastically deleted in r70234.

llvm-svn: 71926
2009-05-16 04:14:29 +00:00
Duncan Sands
a13774ee79 Pacify gcc-4.3, which suggests explicit braces here
to avoid an ambiguous else.

llvm-svn: 71924
2009-05-16 03:28:54 +00:00
Jakob Stoklund Olesen
94c30c8409 Pass to verify generated machine code.
The following is checked:

* Operand counts: All explicit operands must be present.

* Register classes: All physical and virtual register operands must be
  compatible with the register class required by the instruction descriptor.

* Register live intervals: Registers must be defined only once, and must be
  defined before use.

The machine code verifier is enabled with the command-line option
'-verify-machineinstrs', or by defining the environment variable
LLVM_VERIFY_MACHINEINSTRS to the name of a file that will receive all the
verifier errors.

llvm-svn: 71918
2009-05-16 00:33:53 +00:00
Bill Wendling
ac4cfe34e6 Split out the DwarfDebug module from the DwarfWriter module.
Again, no intendtional functionality change.

llvm-svn: 71854
2009-05-15 09:23:25 +00:00
Bill Wendling
6bbe2a1daa Mark class as hidden.
llvm-svn: 71850
2009-05-15 06:55:26 +00:00
Evan Cheng
80c613f4a0 Fix PR4210. Rewritter should track and update kills of sub-registers as well.
llvm-svn: 71848
2009-05-15 06:48:19 +00:00
Bill Wendling
8d9aae8003 Move c'tor/d'tor to top of file.
llvm-svn: 71828
2009-05-15 01:18:50 +00:00
Bill Wendling
cec6308edc Split out the DwarfException class into its own file. No functionality change,
though the classes have been marked with "VISIBILITY_HIDDEN".

llvm-svn: 71827
2009-05-15 01:12:28 +00:00
Bill Wendling
5fe69fa68e Split out the Dwarf writer stuff into separate files. This is a much more
logical/sane approach to organizing all of the stuff that goes into writing out
DWARF information. Honestly? even this is too complex for what it's supposed to
be doing.

Trivia: It *looks* like there would be functionality changes, however there aren't!
llvm-svn: 71821
2009-05-15 00:11:17 +00:00
Mike Stump
a25bd435de Reflow to fit 80-col.
llvm-svn: 71813
2009-05-14 23:23:37 +00:00
Mike Stump
cd9198dd91 Reflow to fit 80-col.
llvm-svn: 71812
2009-05-14 23:22:47 +00:00
Owen Anderson
d4e2474506 Down with static variables!
Part one of many.

llvm-svn: 71785
2009-05-14 19:17:24 +00:00
Mike Stump
5596137537 Tag blocks with DW_AT_APPLE_block.
llvm-svn: 71784
2009-05-14 18:45:49 +00:00
Dale Johannesen
8bd6fc810a Reuse existing getUnderlyingObject instead of
adding another copy.

llvm-svn: 71783
2009-05-14 18:41:18 +00:00
Bill Wendling
78f6980946 Non-functionality changes:
- Reformatting.
- Use while() instead of do-while().
- Move simple constructors into .h file.

llvm-svn: 71782
2009-05-14 18:26:15 +00:00
Bill Wendling
3449db3f16 Clean up this file fixing 80-column violations, bad formatting, etc. No functionality change.
llvm-svn: 71781
2009-05-14 18:16:46 +00:00
Bob Wilson
6571391191 Revert r71744. I must not have understood this correctly, because the
assertion is failing for some tests.

llvm-svn: 71779
2009-05-14 18:08:41 +00:00
Dale Johannesen
e740d81911 Use abs64 in one more place.
llvm-svn: 71775
2009-05-14 16:47:34 +00:00
Lang Hames
661f67bd0c Fix for PR4124. Make TwoAddressFormPass::FindLastUseInMBB return the real last use.
llvm-svn: 71769
2009-05-14 04:26:30 +00:00
Jim Grosbach
bed3aeff20 Update the names of the exception handling sjlj instrinsics to
llvm.eh.sjlj.* for better clarity as to their purpose and scope. Add
a description of llvm.eh.sjlj.setjmp to ExceptionHandling.html.
(llvm.eh.sjlj.longjmp documentation coming when that implementation is
added).

llvm-svn: 71758
2009-05-14 00:46:35 +00:00
Dan Gohman
3ae08059b5 Add an assert to turn a segfault on an unsupported inline
asm construct into an assertion failure.

llvm-svn: 71757
2009-05-14 00:30:16 +00:00
Mike Stump
329994e9d4 Add dumping support for DW_AT_APPLE_isa and DW_AT_APPLE_block.
Radar 6867696

llvm-svn: 71750
2009-05-14 00:03:51 +00:00
Bill Wendling
a68cfc68f8 There's yet more ugliness (surprise!) in DebugInfo. This needs major reworking.
Basically, there was a situation where it was getting an empty vector and doing
a .back() on that. Which isn't cool.

llvm-svn: 71746
2009-05-13 23:55:49 +00:00
Bob Wilson
35ad062490 The IfConverter::MergeBlocks method appears to be used only to merge a basic
block with its unique predecessor.  Change the code to assert if that is not
the case, instead of trying to handle situations where the block has
multiple predecessors.

llvm-svn: 71744
2009-05-13 23:54:13 +00:00
Jim Grosbach
40d13bf382 Removing the HasBuiltinSetjmp flag and associated bits. Flagging the presence
of exception handling builtin sjlj targets in functions turns out not to 
be necessary. Marking the intrinsic implementation in the .td file as 
defining all registers is sufficient to get the context saved properly by 
the containing function.

llvm-svn: 71743
2009-05-13 23:50:53 +00:00
Bob Wilson
ab98a2c258 Revert a portion of Dan's change r71018 that I'm convinced is wrong.
Dan was trying to catch the case where a basic block ends with a conditional
branch to the fall-through block.  In this case, all the instructions have
been moved out of FromBBI, leaving it empty.  It cannot end with a
conditional branch.  As the existing comment indicates, it will always fall
through to the next block.  If the block already had the next block (NBB)
listed as a successor, the preceding loop has a check for that and does not
remove it.  Thus, we need to check and add the successor only when it is
not already listed.

With Dan's change, the empty block often ends up with the fall-through
successor listed twice.  This exposed the problem in pr4195, where
CodePlacementOpt did not handle the same predecessor listed more than once.
It is also at least partially responsible for pr4202 and probably a similar
issue with Thumb branches being out of range.

llvm-svn: 71742
2009-05-13 23:48:58 +00:00
Bob Wilson
8c8c81cd78 Merge adjacent conditional.
llvm-svn: 71741
2009-05-13 23:35:38 +00:00
Bob Wilson
516a55feaa Remove an unused variable.
llvm-svn: 71740
2009-05-13 23:31:30 +00:00
Bob Wilson
c739ce57db Fix some typos and spelling and grammar, mostly in comments, but also one
field name.  No functional changes.

llvm-svn: 71739
2009-05-13 23:25:24 +00:00
Mike Stump
6666fa7a2c Fix whitespacing (space after switch).
llvm-svn: 71738
2009-05-13 23:23:20 +00:00
Jim Grosbach
024feec42e Spelling correction s/builting/builtin/ and remove trailing whitespace in a few places
llvm-svn: 71735
2009-05-13 22:32:43 +00:00
Evan Cheng
9bd08f0cde Run code placement optimization for targets that want it (arm and x86 for now).
llvm-svn: 71726
2009-05-13 21:42:09 +00:00
Bill Wendling
e421c8f63d Change MachineInstrBuilder::addReg() to take a flag instead of a list of
booleans. This gives a better indication of what the "addReg()" is
doing. Remembering what all of those booleans mean isn't easy, especially if you
aren't spending all of your time in that code.

I took Jakob's suggestion and made it illegal to pass in "true" for the
flag. This should hopefully prevent any unintended misuse of this (by reverting
to the old way of using addReg()).

llvm-svn: 71722
2009-05-13 21:33:08 +00:00
Dale Johannesen
d0e1e29fb7 Handle some additonal cases of external weak globals.
llvm-svn: 71717
2009-05-13 20:55:30 +00:00
Bill Wendling
35584a26be Move the bookkeeping of the debug scopes back to the place where it
belonged. The variable declaration stuff wasn't happy with it where it
was. Sorry that the testcase is so big. Bugpoint wasn't able to reduce it
successfully.

llvm-svn: 71714
2009-05-13 20:33:33 +00:00
Dale Johannesen
a3b4fb31a1 Don't generate a select whose operand is load of a weak
external.  These may have address 0 and are not safe
to execute unconditionally.

llvm-svn: 71688
2009-05-13 18:25:07 +00:00
John Mosby
6b2d45fe66 PEI: rename PEI.h to PrologEpilogInserter.h to adhere to file naming standard
llvm-svn: 71678
2009-05-13 17:52:11 +00:00
Chris Lattner
eb2f327449 calls in nothrow functions can be marked nothrow even if the callee
is not known to be nothrow.  This allows readnone/readonly functions
to be deleted even if we don't know whether the callee can throw.

llvm-svn: 71676
2009-05-13 17:39:14 +00:00
Sanjiv Gupta
ad40927f6a Run through the list of globals once and sectionize all types of globlas includeing declarations. Later emit them from their section lists.
llvm-svn: 71661
2009-05-13 15:13:17 +00:00
Duncan Sands
6f8d5b489a Avoid getting a compiler warning
IVUsers.cpp: In member function ‘bool llvm::IVUsers::AddUsersIfInteresting(llvm::Instruction*)’:
 IVUsers.cpp:221: warning: ‘isSigned’ may be used uninitialized in this function
with gcc-4.3.

llvm-svn: 71654
2009-05-13 12:52:44 +00:00
Chris Lattner
a5add81e91 add IVUsers.cpp
llvm-svn: 71646
2009-05-13 06:28:04 +00:00
Chris Lattner
53ddc0fba1 add ShrinkWrapping.cpp
llvm-svn: 71645
2009-05-13 06:27:38 +00:00
Chris Lattner
927ebd34e2 Fix PR4206 - crash in simplify lib calls
llvm-svn: 71644
2009-05-13 06:26:11 +00:00
Lang Hames
f6a337d7fb Fix for PR4121. If TwoAddressInstructionPass removes a dead def, and the regB
operand was killed, the kill needs to be removed from regB's VarInfo.

llvm-svn: 71635
2009-05-13 04:18:47 +00:00
Dan Gohman
32cd719eba Add three new helper routines, getNoopOrZeroExtend,
getNoopOrSignExtend, and getTruncateOrNoop. These are similar
to getTruncateOrZeroExtend etc., except that they assert that
the conversion is either not widening or narrowing, as
appropriate. These will be used in some upcoming fixes.

llvm-svn: 71632
2009-05-13 03:46:30 +00:00
Dale Johannesen
18cc7c12b7 Add an int64_t variant of abs, for host environments
without one.  Use it where we were using abs on
int64_t objects.
(I strongly suspect the casts to unsigned in the
fragments in LoopStrengthReduce are not doing whatever
the original intent was, but the obvious change to
uint64_t doesn't work.  Maybe later.)

llvm-svn: 71612
2009-05-13 00:24:22 +00:00