| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
auto-update the DominatorTree because it doesn't keep the DominatorTree
current while it works.
llvm-svn: 85670
|
| |
|
|
|
|
|
| |
MergeBlockIntoPredecessor. This makes SimplifyCFG slightly more aggressive,
and makes it unnecessary for LoopUnroll to have its own copy of this code.
llvm-svn: 85667
|
| |
|
|
| |
llvm-svn: 85636
|
| |
|
|
|
|
|
| |
around, then zap them. This is analogous to dangling constantexprs hanging
off functions.
llvm-svn: 85627
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
argument is:
ArraySize * ElementSize
ElementSize * ArraySize
ArraySize << log2(ElementSize)
ElementSize << log2(ArraySize)
Refactor isArrayMallocHelper and delete isSafeToGetMallocArraySize, so that there is only 1 copy of the malloc array determining logic.
Update users of getMallocArraySize() to not bother calling isArrayMalloc() as well.
llvm-svn: 85421
|
| |
|
|
|
|
| |
purposes for GVN/DSE.
llvm-svn: 85383
|
| |
|
|
|
|
|
|
| |
need
to depend on Ref and ModRef calls within the invariant region.
llvm-svn: 85380
|
| |
|
|
|
|
| |
purely local for now.
llvm-svn: 85378
|
| |
|
|
|
|
|
|
|
|
| |
with multiple return values it inserts a PHI to merge them all together.
However, if the return values are all the same, it ends up with a pointless
PHI and this pointless PHI happens to really block SRoA from happening in
at least a silly C++ example written by Doug, but probably others. This
fixes rdar://7339069.
llvm-svn: 85206
|
| |
|
|
| |
llvm-svn: 85205
|
| |
|
|
| |
llvm-svn: 85171
|
| |
|
|
|
|
| |
can safely use the NSW bit on the Add.
llvm-svn: 85164
|
| |
|
|
|
|
|
| |
All of the 'demorgan' related xforms need to use
dyn_castNotVal, not m_Not.
llvm-svn: 85119
|
| |
|
|
| |
llvm-svn: 85090
|
| |
|
|
|
|
| |
not (or (icmp, icmp)) -> and(icmp, icmp)
llvm-svn: 85085
|
| |
|
|
| |
llvm-svn: 85083
|
| |
|
|
|
|
|
| |
-verify-dom-info and -verify-loop-info, which enable additional
(expensive) consistency checks.
llvm-svn: 85017
|
| |
|
|
|
|
| |
Duncan for the nice tiny testcase.
llvm-svn: 84992
|
| |
|
|
|
|
|
| |
Update all analysis passes and transforms to treat free calls just like FreeInst.
Remove RaiseAllocations and all its tests since FreeInst no longer needs to be raised.
llvm-svn: 84987
|
| |
|
|
|
|
|
| |
exact backedge taken count, when checking for infinite loops. This allows
it to delete loops with multiple exit conditions.
llvm-svn: 84952
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
implements something out of Target/README.txt producing:
_foo: ## @foo
movl 4(%esp), %eax
movapd LCPI1_0, %xmm0
movapd %xmm0, (%eax)
ret $4
instead of:
_foo: ## @foo
movl 4(%esp), %eax
movapd _b, %xmm0
mulpd LCPI1_0, %xmm0
addpd _a, %xmm0
movapd %xmm0, (%eax)
ret $4
llvm-svn: 84942
|
| |
|
|
|
|
| |
bytes (i256).
llvm-svn: 84941
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
non-type-safe constant initializers. This sort of thing happens
quite a bit for 4-byte loads out of string constants, unions,
bitfields, and an interesting endianness check from sqlite, which
is something like this:
const int sqlite3one = 1;
# define SQLITE_BIGENDIAN (*(char *)(&sqlite3one)==0)
# define SQLITE_LITTLEENDIAN (*(char *)(&sqlite3one)==1)
# define SQLITE_UTF16NATIVE (SQLITE_BIGENDIAN?SQLITE_UTF16BE:SQLITE_UTF16LE)
all of these macros now constant fold away.
This implements PR3152 and is based on a patch started by Eli, but heavily
modified and extended.
llvm-svn: 84936
|
| |
|
|
| |
llvm-svn: 84810
|
| |
|
|
|
|
| |
patches for fixes like this instead of committing them directly.
llvm-svn: 84799
|
| |
|
|
|
|
|
| |
Most changes are cleanup, but there is 1 correctness fix:
I fixed InstCombine so that the icmp is removed only if the malloc call is removed (which requires explicit removal because the Worklist won't DCE any calls since they can have side-effects).
llvm-svn: 84772
|
| |
|
|
|
|
|
| |
in the PHI's Basic Block. This uses a conservative approach, because we don't
have dominator info in instcombine.
llvm-svn: 84754
|
| |
|
|
| |
llvm-svn: 84676
|
| |
|
|
|
|
| |
fail without the patch.
llvm-svn: 84675
|
| |
|
|
|
|
| |
the fix for PR4313.
llvm-svn: 84674
|
| |
|
|
| |
llvm-svn: 84672
|
| |
|
|
| |
llvm-svn: 84671
|
| |
|
|
| |
llvm-svn: 84667
|
| |
|
|
|
|
|
| |
When an incoming value for a PHI is updated, we must also updated all other
incoming values for the same BB to match, otherwise we create invalid PHIs.
llvm-svn: 84638
|
| |
|
|
|
|
|
|
|
|
| |
when the invoke had multiple return values: it set the lattice value only on the
extractvalue.
This caused the invoke's lattice value to remain the default (undefined), and
later propagated to extractvalue's operand, which incorrectly introduces
undefined behavior.
llvm-svn: 84637
|
| |
|
|
|
|
|
|
| |
where a loop's header is being split and it has predecessors which are not
contained by the most-nested loop which contains the loop.
This fixes PR5235.
llvm-svn: 84505
|
| |
|
|
| |
llvm-svn: 84409
|
| |
|
|
| |
llvm-svn: 84406
|
| |
|
|
|
|
|
|
|
| |
allowing it to simplify the crazy constantexprs in the testcases
down to something sensible. This allows -std-compile-opts to
completely "devirtualize" the pointers to member functions in
the testcase from PR5176.
llvm-svn: 84368
|
| |
|
|
| |
llvm-svn: 84367
|
| |
|
|
| |
llvm-svn: 84364
|
| |
|
|
|
|
| |
updating the callgraph when introducing a call.
llvm-svn: 84310
|
| |
|
|
|
|
|
|
| |
Update testcases that rely on malloc insts being present.
Also prematurely remove MallocInst handling from IndMemRemoval and RaiseAllocations to help pass tests in this incremental step.
llvm-svn: 84292
|
| |
|
|
| |
llvm-svn: 84288
|
| |
|
|
|
|
|
|
| |
know the size.
Thanks to Duncan Sands for noticing this bug.
llvm-svn: 84260
|
| |
|
|
|
|
|
| |
themselves are not marked readonly, but only the called
functions.
llvm-svn: 84253
|
| |
|
|
|
|
| |
presence of PHI nodes.
llvm-svn: 84103
|
| |
|
|
|
|
|
| |
this will increase the likelihood of common code getting sunk towards
the unwind.
llvm-svn: 83996
|
| |
|
|
| |
llvm-svn: 83995
|
| |
|
|
| |
llvm-svn: 83994
|