| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 118822
|
| |
|
|
|
|
| |
these points.
llvm-svn: 118752
|
| |
|
|
|
|
| |
it, so that it doesn't appear to be a known size.
llvm-svn: 118748
|
| |
|
|
|
|
| |
the reverse map too. This fixes seflhost build errors.
llvm-svn: 118729
|
| |
|
|
|
|
|
|
| |
function specific local variable's info.
This fixes radar 8653152. I am checking in testcase as a separate check-in.
llvm-svn: 118726
|
| |
|
|
|
|
| |
for a given instruction into a helper function.
llvm-svn: 118723
|
| |
|
|
|
|
| |
type is insufficient for, or incompatible with, the current query.
llvm-svn: 118721
|
| |
|
|
|
|
| |
Probably it should just be 1, but compromise with 3.
llvm-svn: 118718
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
references. For example, this allows gvn to eliminate the load in
this example:
void foo(int n, int* p, int *q) {
p[0] = 0;
p[1] = 1;
if (n) {
*q = p[0];
}
}
llvm-svn: 118714
|
| |
|
|
|
|
|
|
|
| |
nodes can be used in loops, this could result in infinite looping
if there is no recursion limit, so add such a limit. It is also
used for the SelectInst case because in theory there could be an
infinite loop there too if the basic block is unreachable.
llvm-svn: 118694
|
| |
|
|
|
|
| |
it, and to be consistent.
llvm-svn: 118692
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The simplifications performed here never create new instructions, they
only return existing instructions (or a constant), and so are always a
win. In theory they should transform (for example)
%z = and i32 %x, %y
%s = select i1 %cond, i32 %y, i32 %z
%r = and i32 %x, %s
into
%r = and i32 %x, y
but in practice they get into a fight with instcombine, and lose.
Unfortunately instcombine does a poor job in this case. Nonetheless
I'm committing this transform to make it easier to discuss what to
do to make peace with instcombine.
llvm-svn: 118679
|
| |
|
|
|
|
| |
chaining and simplify FunctionAttrs' GetModRefBehavior logic.
llvm-svn: 118660
|
| |
|
|
| |
llvm-svn: 118623
|
| |
|
|
| |
llvm-svn: 118621
|
| |
|
|
| |
llvm-svn: 118618
|
| |
|
|
| |
llvm-svn: 118516
|
| |
|
|
|
|
|
| |
pointsToConstantMemory code to guard against possible
compile time slowdowns.
llvm-svn: 118440
|
| |
|
|
| |
llvm-svn: 118416
|
| |
|
|
|
|
|
|
|
|
|
|
| |
to optionally look for constant or local (alloca) memory.
Teach BasicAliasAnalysis::pointsToConstantMemory to look through Select
and Phi nodes, and to support looking for local memory.
Remove FunctionAttrs' PointsToLocalOrConstantMemory function, now that
AliasAnalysis knows all the tricks that it knew.
llvm-svn: 118412
|
| |
|
|
|
|
|
| |
getModRefBehavior now, since it now understands intrinsics as well
as normal functions.
llvm-svn: 118411
|
| |
|
|
|
|
| |
to analyze intrinsic functions.
llvm-svn: 118409
|
| |
|
|
|
|
|
| |
of a select instruction, the same as already exists for integer
comparisons.
llvm-svn: 118379
|
| |
|
|
|
|
|
|
| |
of a select instruction, see if doing the compare with the
true and false values of the select gives the same result.
If so, that can be used as the value of the comparison.
llvm-svn: 118378
|
| |
|
|
| |
llvm-svn: 118257
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
emit debuggging information entries in LLVM IR.
To create debugging information for a pointer, using DIBUilder front-end just needs
DBuilder.CreatePointerType(Ty, Size);
instead of
DebugFactory.CreateDerivedType(llvm::dwarf::DW_TAG_pointer_type,
TheCU, "", getOrCreateMainFile(),
0, Size, 0, 0, 0, OCTy);
llvm-svn: 118248
|
| |
|
|
| |
llvm-svn: 118054
|
| |
|
|
|
|
|
| |
they may have ValuesAtScopes map entries referencing their outer loops.
This fixes a user-after-free reported in PR8471.
llvm-svn: 117698
|
| |
|
|
|
|
| |
from constant memory don't alias any stores.
llvm-svn: 117636
|
| |
|
|
| |
llvm-svn: 117317
|
| |
|
|
| |
llvm-svn: 117314
|
| |
|
|
|
|
| |
bits open for future uses.
llvm-svn: 117301
|
| |
|
|
| |
llvm-svn: 117288
|
| |
|
|
| |
llvm-svn: 117268
|
| |
|
|
| |
llvm-svn: 117266
|
| |
|
|
| |
llvm-svn: 117111
|
| |
|
|
| |
llvm-svn: 117070
|
| |
|
|
| |
llvm-svn: 117053
|
| |
|
|
| |
llvm-svn: 117048
|
| |
|
|
|
|
| |
when it means there is no specific clobber instruction.
llvm-svn: 116960
|
| |
|
|
| |
llvm-svn: 116958
|
| |
|
|
| |
llvm-svn: 116954
|
| |
|
|
|
|
|
| |
A RegionPass is executed like a LoopPass but on the regions detected by the
RegionInfo pass instead of the loops detected by the LoopInfo pass.
llvm-svn: 116905
|
| |
|
|
| |
llvm-svn: 116903
|
| |
|
|
|
|
|
| |
it doesn't have a special relationship with BasicAliasAnalysis
anymore.
llvm-svn: 116876
|
| |
|
|
|
|
| |
uint64_t, plus fixes for places I missed before.
llvm-svn: 116875
|
| |
|
|
| |
llvm-svn: 116858
|
| |
|
|
|
|
| |
for representing object sizes, for consistency with other parts of LLVM.
llvm-svn: 116831
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
exposes an initializeMyPassFunction(), which
must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize
the pass's dependencies.
Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the
CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
before parsing commandline arguments.
I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems
with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass
registration/creation, please send the testcase to me directly.
llvm-svn: 116820
|
| |
|
|
| |
llvm-svn: 116815
|