| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 60859
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"else" clause, e.g.,
if (int X = foo()) {
} else {
if (X) { // warning: X is always zero in this context
}
}
Fixes rdar://6425550 and lets me think about something other than
DeclContext.
llvm-svn: 60858
|
| |
|
|
|
|
|
| |
them. The DAG combiner expects that nodes that are transformed have one value
result.
llvm-svn: 60857
|
| |
|
|
|
|
|
|
| |
failed: (0 && "unexpected type"), function mergeTypes,
Commit r60845 was premature.
llvm-svn: 60852
|
| |
|
|
| |
llvm-svn: 60851
|
| |
|
|
| |
llvm-svn: 60850
|
| |
|
|
|
|
| |
vars
llvm-svn: 60849
|
| |
|
|
| |
llvm-svn: 60848
|
| |
|
|
|
|
| |
"unexpected type"), function mergeTypes,
llvm-svn: 60845
|
| |
|
|
|
|
| |
arithmetic with overflow instruction.
llvm-svn: 60844
|
| |
|
|
|
|
| |
cleaner. No performance change.
llvm-svn: 60843
|
| |
|
|
| |
llvm-svn: 60842
|
| |
|
|
| |
llvm-svn: 60841
|
| |
|
|
| |
llvm-svn: 60840
|
| |
|
|
|
|
| |
rewriter: crash rewriting file with Blocks and properties
llvm-svn: 60839
|
| |
|
|
| |
llvm-svn: 60838
|
| |
|
|
|
|
|
|
|
| |
for promoted integer types, eg: i16 on ppc-32, or
i24 on any platform. Complete support for arbitrary
precision integers would require handling expanded
integer types, eg: i128, but I couldn't be bothered.
llvm-svn: 60834
|
| |
|
|
| |
llvm-svn: 60833
|
| |
|
|
|
|
|
| |
causing a bunch of failures when running
"make ENABLE_EXPENSIVE_CHECKS=1 check".
llvm-svn: 60832
|
| |
|
|
| |
llvm-svn: 60831
|
| |
|
|
|
|
| |
explicitly calling EnterScope/ExitScope
llvm-svn: 60830
|
| |
|
|
|
|
| |
bit convert that changes the number of elements of a shuffle.
llvm-svn: 60829
|
| |
|
|
|
|
| |
some overflow issues. Patch by Thomas Jablin.
llvm-svn: 60828
|
| |
|
|
| |
llvm-svn: 60827
|
| |
|
|
| |
llvm-svn: 60826
|
| |
|
|
|
|
| |
to reflect reality.
llvm-svn: 60825
|
| |
|
|
|
|
| |
actual function ptr instead of ptr to stub if function is already compiled.
llvm-svn: 60822
|
| |
|
|
| |
llvm-svn: 60821
|
| |
|
|
|
|
|
|
|
|
|
| |
parallel, allowing it to decide that P/Q must alias if A/B
must alias in things like:
P = gep A, 0, i, 1
Q = gep B, 0, i, 1
This allows GVN to delete 62 more instructions out of 403.gcc.
llvm-svn: 60820
|
| |
|
|
| |
llvm-svn: 60819
|
| |
|
|
| |
llvm-svn: 60818
|
| |
|
|
|
|
|
|
| |
node latencies. Use CalcLatency instead of manual code in
CalculatePriorities to keep it consistent. Previously it
computed slightly different results.
llvm-svn: 60817
|
| |
|
|
| |
llvm-svn: 60816
|
| |
|
|
|
|
|
| |
- Emit DW_AT_byte_size for struct and union of size zero.
- Emit DW_AT_declaration for forward type declaration.
llvm-svn: 60812
|
| |
|
|
|
|
|
|
|
| |
- Fix bug 3185, with misc other cleanups.
- Needed to implement SPUInstrInfo::InsertBranch(). CAUTION: Not sure what
gets or needs to get passed to InsertBranch() to insert a conditional
branch. This will abort for now until a good test case shows up.
llvm-svn: 60811
|
| |
|
|
|
|
| |
Hinnant. Makes for much nicer syntax when smart pointers are used consistently. Also, start converting internal argument passing of Parser to smart pointers.
llvm-svn: 60809
|
| |
|
|
|
|
| |
layer an AnonTypedRegion on top of it.
llvm-svn: 60808
|
| |
|
|
|
|
|
|
|
| |
overflow/carry from the "arithmetic with overflow" intrinsics. It searches the
machine basic block from bottom to top to find the SETO/SETC instruction that is
its conditional. If an instruction modifies EFLAGS before it reaches the
SETO/SETC instruction, then it defaults to the normal instruction emission.
llvm-svn: 60807
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Cost field is removed. It was only being used in a very limited way,
to indicate when the scheduler should attempt to protect a live register,
and it isn't really needed to do that. If we ever want the scheduler to
start inserting copies in non-prohibitive situations, we'll have to
rethink some things anyway.
A Latency field is added. Instead of giving each node a single
fixed latency, each edge can have its own latency. This will eventually
be used to model various micro-architecture properties more accurately.
The PointerIntPair class and an internal union are now used, which
reduce the overall size.
llvm-svn: 60806
|
| |
|
|
|
|
|
| |
invalidateCachedPointerInfo. Thanks to Bill for sending me
a testcase.
llvm-svn: 60805
|
| |
|
|
| |
llvm-svn: 60804
|
| |
|
|
|
|
| |
has added declaration of these methods in its @interface.
llvm-svn: 60803
|
| |
|
|
|
|
|
| |
target-independent way of determining overflow on multiplication. It's very
tricky. Patch by Zoltan Varga!
llvm-svn: 60800
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of a pointer. This allows is to catch more equivalencies. For example,
the type_lists_compatible_p function used to require two iterations of
the gvn pass (!) to delete its 18 redundant loads because the first pass
would CSE all the addressing computation cruft, which would unblock the
second memdep/gvn passes from recognizing them. This change allows
memdep/gvn to catch all 18 when run just once on the function (as is
typical :) instead of just 3.
On all of 403.gcc, this bumps up the # reundandancies found from:
63 gvn - Number of instructions PRE'd
153991 gvn - Number of instructions deleted
50069 gvn - Number of loads deleted
to:
63 gvn - Number of instructions PRE'd
154137 gvn - Number of instructions deleted
50185 gvn - Number of loads deleted
+120 loads deleted isn't bad.
llvm-svn: 60799
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
essential problem was that the DAG can contain
random unused nodes which were never analyzed.
When remapping a value of a node being processed,
such a node may become used and need to be analyzed;
however due to operands being transformed during
analysis the node may morph into a different one.
Users of the morphing node need to be updated, and
this wasn't happening. While there I added a bunch
of documentation and sanity checks, so I (or some
other poor soul) won't have to scratch their head
over this stuff so long trying to remember how it
was all supposed to work next time some obscure
problem pops up! The extra sanity checking exposed
a few places where invariants weren't being preserved,
so those are fixed too. Since some of the sanity
checking is expensive, I added a flag to turn it
on. It is also turned on when building with
ENABLE_EXPENSIVE_CHECKS=1.
llvm-svn: 60797
|
| |
|
|
|
|
| |
BasicStoreManager::getLValueField() (i.e., don't just return the 'base' as the SVal)
llvm-svn: 60795
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
tricks based on readnone/readonly functions.
Teach memdep to look past readonly calls when analyzing
deps for a readonly call. This allows elimination of a
few more calls from 403.gcc:
before:
63 gvn - Number of instructions PRE'd
153986 gvn - Number of instructions deleted
50069 gvn - Number of loads deleted
after:
63 gvn - Number of instructions PRE'd
153991 gvn - Number of instructions deleted
50069 gvn - Number of loads deleted
5 calls isn't much, but this adds plumbing for the next change.
llvm-svn: 60794
|
| |
|
|
| |
llvm-svn: 60793
|
| |
|
|
|
|
|
| |
the synthesis is in an implementation of s subclass of
a super class where the property has been declared.
llvm-svn: 60792
|
| |
|
|
| |
llvm-svn: 60791
|