| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
'and' that would zero out the trailing bits, and to produce an exact shift
ourselves.
llvm-svn: 147391
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
captured. This allows the tracker to look at the specific use, which may be
especially interesting for function calls.
Use this to fix 'nocapture' deduction in FunctionAttrs. The existing one does
not iterate until a fixpoint and does not guarantee that it produces the same
result regardless of iteration order. The new implementation builds up a graph
of how arguments are passed from function to function, and uses a bottom-up walk
on the argument-SCCs to assign nocapture. This gets us nocapture more often, and
does so rather efficiently and independent of iteration order.
llvm-svn: 147327
|
| |
|
|
| |
llvm-svn: 147307
|
| |
|
|
| |
llvm-svn: 147292
|
| |
|
|
| |
llvm-svn: 147291
|
| |
|
|
|
|
|
| |
to discard weights when appropriate. Still more to do (and a new TODO), but
it's a start!
llvm-svn: 147286
|
| |
|
|
| |
llvm-svn: 147284
|
| |
|
|
| |
llvm-svn: 147280
|
| |
|
|
| |
llvm-svn: 147279
|
| |
|
|
|
|
|
|
|
| |
x is smaller than 2^n and it fuses with a following add.
This was intended to undo the sub canonicalization in cases where it's not profitable, but it also
finds some cases on it's own.
llvm-svn: 147256
|
| |
|
|
|
|
|
|
|
|
|
| |
smaller than 2^n.
This has the obvious advantage of being commutable and is always a win on x86 because
const - x wastes a register there. On less weird architectures this may lead to
a regression because other arithmetic doesn't fuse with it anymore. I'll address that
problem in a followup.
llvm-svn: 147254
|
| |
|
|
| |
llvm-svn: 147226
|
| |
|
|
|
|
|
|
| |
support
to CloneFunctionInto to allow remapping for this case.
llvm-svn: 147217
|
| |
|
|
| |
llvm-svn: 147176
|
| |
|
|
|
|
|
|
|
|
|
| |
performance regressions (both execution-time and compile-time) on our
nightly testers.
Original commit message:
Fix for bug #11429: Wrong behaviour for switches. Small improvement for code
size heuristics.
llvm-svn: 147131
|
| |
|
|
|
|
| |
an invalid iterator aren't reproducible. rdar://10614085.
llvm-svn: 147098
|
| |
|
|
| |
llvm-svn: 147036
|
| |
|
|
|
|
| |
http://llvm.org/docs/CodingStandards.html#ll_virtual_anch
llvm-svn: 146960
|
| |
|
|
|
|
| |
- Remove trailing spaces.
llvm-svn: 146854
|
| |
|
|
|
|
| |
Hope I did this correctly :)
llvm-svn: 146834
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
depending on previous branch on same comparison operands.
For example,
if (a == b) {
if (a > b) // this is false
Fixes some of the issues on <rdar://problem/10554090>
llvm-svn: 146822
|
| |
|
|
|
|
| |
This will be used by SimplifyCfg in a later commit.
llvm-svn: 146803
|
| |
|
|
|
|
|
|
| |
"half precision" floating-point with a first-class type.
This patch adds basic IR support (but not codegen support).
llvm-svn: 146786
|
| |
|
|
|
|
| |
No need for an explicit test case for an unsupported combination of options.
llvm-svn: 146721
|
| |
|
|
|
|
| |
This improves the readability of global-buffer-overflow reports.
llvm-svn: 146698
|
| |
|
|
|
|
| |
false positive. compiler part.
llvm-svn: 146688
|
| |
|
|
|
|
| |
These can be reduced to "~cond & x" or "~cond | x"
llvm-svn: 146624
|
| |
|
|
|
|
| |
header is a landing pad correctly (by splitting the landingpad out of the loop header). Make some adjustments to the rest of LoopSimplify to make it clear that the rest of LoopSimplify isn't making bad assumptions about the presence of landing pads. PR11575.
llvm-svn: 146621
|
| |
|
|
|
|
|
|
|
| |
into Analysis as a standalone function, since there's no need for
it to be in VMCore. Also, update it to use isKnownNonZero and
other goodies available in Analysis, making it more precise,
enabling more aggressive optimization.
llvm-svn: 146610
|
| |
|
|
|
|
| |
size heuristics.
llvm-svn: 146578
|
| |
|
|
|
|
| |
point to ARC-managed pointers sometimes. This fixes rdar://10551239.
llvm-svn: 146577
|
| |
|
|
|
|
| |
builds). This should be done in the run-time.
llvm-svn: 146527
|
| |
|
|
|
|
| |
asan issue 17
llvm-svn: 146503
|
| |
|
|
| |
llvm-svn: 146459
|
| |
|
|
|
|
|
|
| |
This should always be done as a matter of principal. I don't have a
case that exposes the problem. I just noticed this recently while
scanning the code and realized I meant to fix it long ago.
llvm-svn: 146438
|
| |
|
|
|
|
|
|
|
|
|
| |
subdirectories to traverse into.
- Originally I wanted to avoid this and just autoscan, but this has one key
flaw in that new subdirectories can not automatically trigger a rerun of the
llvm-build tool. This is particularly a pain when switching back and forth
between trees where one has added a subdirectory, as the dependencies will
tend to be wrong. This will also eliminates FIXME implicitly.
llvm-svn: 146436
|
| |
|
|
| |
llvm-svn: 146411
|
| |
|
|
| |
llvm-svn: 146409
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
detected in the forward-CFG DFS. This prevents the reverse-CFG from
visiting blocks inside loops after blocks that dominate them in the
case where loops have multiple exits.
No testcase, because this fixes a bug which in practice only shows
up in a full optimizer run, due to the use-list order.
This fixes rdar://10422791 and others.
llvm-svn: 146408
|
| |
|
|
| |
llvm-svn: 146389
|
| |
|
|
| |
llvm-svn: 146385
|
| |
|
|
| |
llvm-svn: 146384
|
| |
|
|
| |
llvm-svn: 146383
|
| |
|
|
| |
llvm-svn: 146380
|
| |
|
|
| |
llvm-svn: 146379
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
indicates whether the intrinsic has a defined result for a first
argument equal to zero. This will eventually allow these intrinsics to
accurately model the semantics of GCC's __builtin_ctz and __builtin_clz
and the X86 instructions (prior to AVX) which implement them.
This patch merely sets the stage by extending the signature of these
intrinsics and establishing auto-upgrade logic so that the old spelling
still works both in IR and in bitcode. The upgrade logic preserves the
existing (inefficient) semantics. This patch should not change any
behavior. CodeGen isn't updated because it can use the existing
semantics regardless of the flag's value.
Note that this will be followed by API updates to Clang and DragonEgg.
Reviewed by Nick Lewycky!
llvm-svn: 146357
|
| |
|
|
|
|
|
|
| |
Since we're not rewriting IVs in other loops, there's not much reason
to consider their stride when generating formulae.
This should reduce the number of useless formulas considered by LSR.
llvm-svn: 146302
|
| |
|
|
|
|
| |
malloc chicken-and-egg situation on Android and probably on other flavours of Linux. Patch by eugenis@google.com.
llvm-svn: 146284
|
| |
|
|
| |
llvm-svn: 146277
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Patch by Brendon Cahoon!
This extends the existing LoopUnroll and LoopUnrollPass. Brendon
measured no regressions in the llvm test suite with -unroll-runtime
enabled. This implementation works by using the existing loop
unrolling code to unroll the loop by a power-of-two (default 8). It
generates an if-then-else sequence of code prior to the loop to
execute the extra iterations before entering the unrolled loop.
llvm-svn: 146245
|