| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 116890
|
| |
|
|
|
|
|
| |
setup they require. Use this for ARM/Darwin to rematerialize the base
pointer from the frame pointer when required. rdar://8564268
llvm-svn: 116879
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Pull an unsigned out of the Contents union such that it has the same size as two
pointers and no padding.
Arrange members such that the Contents union and all pointers can be 8-byte
aligned without padding.
This speeds up code generation by 0.8% on a 64-bit host. 32-bit hosts should be
unaffected.
llvm-svn: 116857
|
| |
|
|
|
|
|
| |
erased the instruction during LICM so UpdateRegPressureAfter() should not
reference it afterwards.
llvm-svn: 116845
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
is", which breaks some nightly tests.
llvm-svn: 116816
|
| |
|
|
|
|
|
|
| |
".{section}${name}" instead of ".{section}$linkonce_{name}" for linkonce sections.
It seems GNU ld/PECOFF relies on section names, linking with g++'s libstdc++.a would fail.
llvm-svn: 116791
|
| |
|
|
|
|
|
| |
in MultiSource/Benchmarks/VersaBench/beamformer/beamformer.
SmallSet.insert returns true if the element is inserted.
llvm-svn: 116790
|
| |
|
|
|
|
|
|
|
|
|
| |
"long latency" enough to hoist even if it may increase spilling. Reloading
a value from spill slot is often cheaper than performing an expensive
computation in the loop. For X86, that means machine LICM will hoist
SQRT, DIV, etc. ARM will be somewhat aggressive with VFP and NEON
instructions.
- Enable register pressure aware machine LICM by default.
llvm-svn: 116781
|
| |
|
|
| |
llvm-svn: 116750
|
| |
|
|
|
|
| |
is currently inert by default.
llvm-svn: 116732
|
| |
|
|
|
|
|
|
|
|
|
|
| |
does normal initialization and normal chaining. Change the default
AliasAnalysis implementation to NoAlias.
Update StandardCompileOpts.h and friends to explicitly request
BasicAliasAnalysis.
Update tests to explicitly request -basicaa.
llvm-svn: 116720
|
| |
|
|
| |
llvm-svn: 116710
|
| |
|
|
|
|
| |
if any floating point arguments are passed to an external function.
llvm-svn: 116665
|
| |
|
|
| |
llvm-svn: 116664
|
| |
|
|
|
|
| |
preheader to current BB and use the information determine whether hoisting is worthwhile.
llvm-svn: 116654
|
| |
|
|
| |
llvm-svn: 116580
|
| |
|
|
| |
llvm-svn: 116547
|
| |
|
|
|
|
|
|
|
|
| |
All registers created during splitting or spilling are assigned to the same
stack slot as the parent register.
When splitting or rematting, we may not spill at all. In that case the stack
slot is still assigned, but it will be dead.
llvm-svn: 116546
|
| |
|
|
|
|
|
|
|
| |
splitting or spillling, and to help with rematerialization.
Use LiveRangeEdit in InlineSpiller and SplitKit. This will eventually make it
possible to share remat code between InlineSpiller and SplitKit.
llvm-svn: 116543
|
| |
|
|
|
|
|
|
|
|
| |
Before we would also split around a loop if any peripheral block had multiple
uses. This could cause repeated splitting when splitting a different live range
would insert uses into the periphery.
Now -spiller=inline passes the nightly test suite again.
llvm-svn: 116494
|
| |
|
|
| |
llvm-svn: 116465
|
| |
|
|
| |
llvm-svn: 116441
|
| |
|
|
|
|
|
|
|
| |
perform initialization without static constructors AND without explicit initialization
by the client. For the moment, passes are required to initialize both their
(potential) dependencies and any passes they preserve. I hope to be able to relax
the latter requirement in the future.
llvm-svn: 116334
|
| |
|
|
|
|
| |
This helps hiding the LiveRange class which really should be private.
llvm-svn: 116244
|
| |
|
|
|
|
|
|
|
|
|
|
| |
LocalRewriter.
This is a bit of a hack that adds an implicit use operand to model the
read-modify-write nature of a partial redef. Uses and defs are rewritten in
separate passes, and a single operand would never be processed twice.
<rdar://problem/8518892>
llvm-svn: 116210
|
| |
|
|
|
|
|
| |
it comes back, it will be largely a rewrite, so keeping the old codebase
in tree isn't helping anyone.
llvm-svn: 116190
|
| |
|
|
|
|
| |
truncate the stack pointer to 32-bits on a 64-bit machine.
llvm-svn: 116169
|
| |
|
|
| |
llvm-svn: 116156
|
| |
|
|
|
|
|
|
|
| |
functions: computeRemainder and rewrite.
When the remainder breaks up into multiple components, remember to rewrite those
uses as well.
llvm-svn: 116121
|
| |
|
|
| |
llvm-svn: 116119
|
| |
|
|
|
|
|
|
| |
are still way too long, but it's a start.
No functional change intended.
llvm-svn: 116116
|
| |
|
|
|
|
|
| |
Such a check does not make any sense in presense of inlining and other compiler-dependent stuff.
This should fix bunch of warnings on mingw32.
llvm-svn: 116113
|
| |
|
|
| |
llvm-svn: 116105
|
| |
|
|
|
|
| |
are easier to diff with those produced by llvm-mc.
llvm-svn: 116095
|
| |
|
|
| |
llvm-svn: 116081
|
| |
|
|
|
|
|
|
|
|
| |
implicit. e.g.
%D6<def>, %D7<def> = VLD1q16 %R2<kill>, 0, ..., %Q3<imp-def>
%Q1<def> = VMULv8i16 %Q1<kill>, %Q3<kill>, ...
The real definition indices are 0,1.
llvm-svn: 116080
|
| |
|
|
|
|
| |
this construct.
llvm-svn: 116061
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
connected components. These components should be allocated different virtual
registers because there is no reason for them to be allocated together.
Add the ConnectedVNInfoEqClasses class to calculate the connected components,
and move values to new LiveIntervals.
Use it from SplitKit::rewrite by creating new virtual registers for the
components.
llvm-svn: 116006
|
| |
|
|
| |
llvm-svn: 115996
|
| |
|
|
|
|
| |
prototype or not.
llvm-svn: 115988
|
| |
|
|
| |
llvm-svn: 115951
|
| |
|
|
| |
llvm-svn: 115950
|
| |
|
|
| |
llvm-svn: 115949
|
| |
|
|
|
|
| |
do one find().
llvm-svn: 115929
|
| |
|
|
| |
llvm-svn: 115928
|
| |
|
|
|
|
|
|
| |
This function is intended to be used when inserting a machine instruction that
trivially restricts the legal registers, like LEA requiring a GR32_NOSP
argument.
llvm-svn: 115875
|
| |
|
|
| |
llvm-svn: 115874
|
| |
|
|
| |
llvm-svn: 115835
|
| |
|
|
| |
llvm-svn: 115833
|