| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 109450
|
| |
|
|
|
|
| |
enough to factor into scheduling priority. Eliminate it and add early exits to speed up scheduling.
llvm-svn: 109449
|
| |
|
|
| |
llvm-svn: 109448
|
| |
|
|
|
|
|
|
|
| |
we are using AVX and no AVX version of the desired intruction is present,
this is better for incremental dev (without fallbacks it's easier to spot
what's missing). Not sure this is the best hack thought (we can also disable
all HasSSE* predicates by dinamically marking them 'false' if AVX is present)
llvm-svn: 109434
|
| |
|
|
|
|
| |
Disabled for now.
llvm-svn: 109424
|
| |
|
|
|
|
|
|
| |
This assumption is not satisfied due to global mergeing.
Workaround the issue by temporary disablinge mergeing of const globals.
Also, ignore LLVM "special" globals. This fixes PR7716
llvm-svn: 109423
|
| |
|
|
| |
llvm-svn: 109421
|
| |
|
|
|
|
|
|
| |
it inserted rather than using LoopInfo::getCanonicalInductionVariable to
rediscover it, since that doesn't work on non-canonical loops. This fixes
infinite recurrsion on such loops; PR7562.
llvm-svn: 109419
|
| |
|
|
| |
llvm-svn: 109415
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
dependence on DominanceFrontier. Instead, add an explicit DominanceFrontier
pass in StandardPasses.h to ensure that it gets scheduled at the right
time.
Declare that loop unrolling preserves ScalarEvolution, and shuffle some
getAnalysisUsages.
This eliminates one LoopSimplify and one LCCSA run in the standard
compile opts sequence.
llvm-svn: 109413
|
| |
|
|
| |
llvm-svn: 109412
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
don't visit all blocks in the function, and don't iterate over the split blocks'
predecessor lists for each block visited.
Also, remove the special-case test for the entry block. Splitting the entry
block isn't common enough to make this worthwhile.
This fixes a major compile-time bottleneck which is exposed now that
LoopSimplify isn't being redundantly run both before and after
DominanceFrontier.
llvm-svn: 109408
|
| |
|
|
| |
llvm-svn: 109405
|
| |
|
|
| |
llvm-svn: 109404
|
| |
|
|
| |
llvm-svn: 109403
|
| |
|
|
| |
llvm-svn: 109402
|
| |
|
|
|
|
| |
explicit inequality check.
llvm-svn: 109401
|
| |
|
|
| |
llvm-svn: 109400
|
| |
|
|
|
|
| |
explicit inequality check.
llvm-svn: 109398
|
| |
|
|
|
|
|
|
| |
parameter)
may be used uninitialized in the callers of HighRegPressure.
llvm-svn: 109393
|
| |
|
|
| |
llvm-svn: 109391
|
| |
|
|
|
|
| |
A Visual C++ extension that removes trailing new lines? Seriously?
llvm-svn: 109390
|
| |
|
|
|
|
| |
Origonal Windows COFF implementation by Nathan Jedffords.
llvm-svn: 109389
|
| |
|
|
| |
llvm-svn: 109388
|
| |
|
|
| |
llvm-svn: 109386
|
| |
|
|
| |
llvm-svn: 109383
|
| |
|
|
| |
llvm-svn: 109373
|
| |
|
|
| |
llvm-svn: 109372
|
| |
|
|
|
|
| |
those. Radar 8231572.
llvm-svn: 109367
|
| |
|
|
|
|
| |
invalid type.
llvm-svn: 109365
|
| |
|
|
| |
llvm-svn: 109362
|
| |
|
|
| |
llvm-svn: 109361
|
| |
|
|
|
|
| |
this consistently.
llvm-svn: 109360
|
| |
|
|
| |
llvm-svn: 109359
|
| |
|
|
|
|
| |
build of llvm-gcc.
llvm-svn: 109355
|
| |
|
|
| |
llvm-svn: 109354
|
| |
|
|
|
|
|
| |
it needs to be mapped to refer to the function in the new module, not the old
one. Fixes PR7700.
llvm-svn: 109353
|
| |
|
|
|
|
|
| |
hanging off a value, then the dropping code will intentionally not drop
it too (since this is almost certainly a bug).
llvm-svn: 109337
|
| |
|
|
|
|
|
| |
instead of fixed size arrays, so that increasing FirstVirtualRegister to 16K
won't cause a compile time performance regression.
llvm-svn: 109330
|
| |
|
|
|
|
| |
absolute source file path is used on compiler command line.
llvm-svn: 109302
|
| |
|
|
|
|
|
|
|
|
|
|
| |
appropriate for targets without detailed instruction iterineries.
The scheduler schedules for increased instruction level parallelism in
low register pressure situation; it schedules to reduce register pressure
when the register pressure becomes high.
On x86_64, this is a win for all tests in CFP2000. It also sped up 256.bzip2
by 16%.
llvm-svn: 109300
|
| |
|
|
| |
llvm-svn: 109295
|
| |
|
|
|
|
|
| |
function live in set. This will give us tGPR for Thumb1 and GPR otherwise,
so the copy will be spillable. rdar://8224931
llvm-svn: 109293
|
| |
|
|
|
|
|
| |
to be of a different register class. For example, in Thumb1 if the live-in is
a high register, we want the vreg to be a low register. rdar://8224931
llvm-svn: 109291
|
| |
|
|
| |
llvm-svn: 109285
|
| |
|
|
|
|
|
|
|
|
| |
comments explaining why it was wrong. 8225024.
Fix the real problem in 8213383: the code that splits very large
blocks when no other place to put constants can be found was not
considering the case that the block contained a Thumb tablejump.
llvm-svn: 109282
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
it's too late to start backing off aggressive latency scheduling when most
of the registers are in use so the threshold should be a bit tighter.
- Correctly handle live out's and extract_subreg etc.
- Enable register pressure aware scheduling by default for hybrid scheduler.
For ARM, this is almost always a win on # of instructions. It's runtime
neutral for most of the tests. But for some kernels with high register
pressure it can be a huge win. e.g. 464.h264ref reduced number of spills by
54 and sped up by 20%.
llvm-svn: 109279
|
| |
|
|
| |
llvm-svn: 109276
|
| |
|
|
|
|
| |
eliminate it.
llvm-svn: 109270
|
| |
|
|
|
|
| |
the BlockTraits abstractions.
llvm-svn: 109268
|