| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 37496
|
| |
|
|
|
|
| |
through to it. If merged, the resulting block is not a candidate for iterative ifcvting since it contains both predicated and non-predicated code.
llvm-svn: 37487
|
| |
|
|
| |
llvm-svn: 37485
|
| |
|
|
|
|
| |
Evan, please check that this is in fact correct.
llvm-svn: 37471
|
| |
|
|
|
|
| |
same, only output one copy of the common part.
llvm-svn: 37470
|
| |
|
|
| |
llvm-svn: 37467
|
| |
|
|
|
|
|
| |
correct machine basic block - do not rely on the eh.exception intrinsic
being in the landing pad: the loop optimizers can move it out.
llvm-svn: 37463
|
| |
|
|
|
|
| |
the predicated block cannot be iteratively ifcvted.
llvm-svn: 37456
|
| |
|
|
| |
llvm-svn: 37451
|
| |
|
|
| |
llvm-svn: 37449
|
| |
|
|
| |
llvm-svn: 37444
|
| |
|
|
| |
llvm-svn: 37441
|
| |
|
|
|
|
| |
almost all cases.
llvm-svn: 37440
|
| |
|
|
| |
llvm-svn: 37433
|
| |
|
|
|
|
| |
a unconditional branch to false block. AnalyzeBranch() does not understand early exits.
llvm-svn: 37430
|
| |
|
|
|
|
| |
states of ifcvted blocks.
llvm-svn: 37429
|
| |
|
|
| |
llvm-svn: 37427
|
| |
|
|
|
|
| |
be 8 for 64-bit targets.
llvm-svn: 37421
|
| |
|
|
| |
llvm-svn: 37420
|
| |
|
|
| |
llvm-svn: 37413
|
| |
|
|
|
|
|
|
|
|
|
|
| |
that the CSE map always contains explicit alignment information. This allows
more loads to be CSE'd when there is a mix of explicit-alignment loads and
implicit-alignment loads.
Also, in SelectionDAG::FindModifiedNodeSlot, add the operands to the
FoldingSetNodeID before the load/store information instead of after, so
that it matches what is done elsewhere.
llvm-svn: 37411
|
| |
|
|
|
|
| |
blocks to expose more ifcvt opportunities; code clean up and fixes.
llvm-svn: 37409
|
| |
|
|
|
|
| |
general facility.
llvm-svn: 37408
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(landing pad) when an exception unwinds through the call. This doesn't
quite match the way the dwarf unwinder works: by default it only jumps to
the landing pad if the catch or filter specification matches, and otherwise
it keeps on unwinding. There are two ways of specifying to the unwinder
that it should "always" (more on why there are quotes here later) jump to
the landing pad: follow the specification by a 0 typeid, or follow it by
the typeid for the NULL typeinfo. GCC does the first, and this patch makes
LLVM do the same as gcc. However there is a problem: the unwinder performs
optimizations based on C++ semantics (it only expects destructors to be
run if the 0 typeid fires - known as "cleanups"), meaning it assumes that no
exceptions will be raised and that the raised exception will be reraised
at the end of the cleanup code. So if someone writes their own LLVM code
using the exception intrinsics they will get a nasty surprise if they don't
follow these rules. The other possibility of using the typeid corresponding
to NULL (catch-all) causes the unwinder to make no assumptions, so this is
probably what we should use in the long-run. However since we are still
having trouble getting exception handling working properly, for the moment
it seems best to closely imitate GCC.
llvm-svn: 37399
|
| |
|
|
|
|
|
|
| |
simplifies the code in DwarfWriter, allows for multiple filters and
makes it trivial to specify filters accompanied by cleanups or catch-all
specifications (see next patch). What a deal! Patch blessed by Anton.
llvm-svn: 37398
|
| |
|
|
| |
llvm-svn: 37397
|
| |
|
|
| |
llvm-svn: 37394
|
| |
|
|
| |
llvm-svn: 37393
|
| |
|
|
|
|
|
|
| |
See test/CodeGen/X86/test-pic-jtbl.ll for a case where it works well;
shaves another 10K off our favorite benchmark. I was hesitant about
this because of compile speed, but seems to do OK on a bootstrap.
llvm-svn: 37392
|
| |
|
|
| |
llvm-svn: 37387
|
| |
|
|
|
|
| |
as a null i8 pointer not as a 0 i32.
llvm-svn: 37383
|
| |
|
|
|
|
| |
merge 'false' BB if it has other predecessors.
llvm-svn: 37382
|
| |
|
|
|
|
| |
Unconditional branches can usually be converted to conditional ones.
llvm-svn: 37380
|
| |
|
|
|
|
| |
code.
llvm-svn: 37379
|
| |
|
|
|
|
| |
Do not remove empty landing pads (EH table needs to be updated)
llvm-svn: 37375
|
| |
|
|
| |
llvm-svn: 37374
|
| |
|
|
|
|
|
|
| |
smaller than the preferred alignment, but so that the target can actually
specify a minimum alignment if needed. This fixes some objc protocol
failures Devang tracked down.
llvm-svn: 37373
|
| |
|
|
|
|
|
| |
When a function has FP, the register scavenging spill slot offset already
was calculated.
llvm-svn: 37371
|
| |
|
|
|
|
| |
if-conversion.
llvm-svn: 37365
|
| |
|
|
| |
llvm-svn: 37362
|
| |
|
|
| |
llvm-svn: 37355
|
| |
|
|
|
|
| |
matter until my last change). Reenable tail merging by default.
llvm-svn: 37354
|
| |
|
|
|
|
| |
after if-conversion.
llvm-svn: 37353
|
| |
|
|
|
|
| |
still requires a unconditional branch.
llvm-svn: 37344
|
| |
|
|
| |
llvm-svn: 37341
|
| |
|
|
| |
llvm-svn: 37331
|
| |
|
|
| |
llvm-svn: 37330
|
| |
|
|
| |
llvm-svn: 37328
|
| |
|
|
|
|
| |
only one successor.
llvm-svn: 37324
|
| |
|
|
|
|
|
| |
Temporarily, this breaks CodeGen/Generic/2006-02-12-InsertLibraryCall.ll
by exposing an unrelated latent problem; working on that.
llvm-svn: 37323
|