| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
| |
TargetMachine.cpp
Avoid exposing a cl::opt in a public header and instead promote this
option in the API.
Alternatively, we could land the cl::opt in CommandFlags.h so that
it is available to every tool, but we would still have to find an
option for clang.
llvm-svn: 275348
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
enabled.
IPRA try to optimize caller saved register by propagating register
usage information from callee to caller so it is beneficial to have
caller saved registers compare to callee saved registers when IPRA
is enabled. Please find more detailed explanation here
https://groups.google.com/d/msg/llvm-dev/XRzGhJ9wtZg/tjAJqb0eEgAJ.
This change makes local function do not have any callee preserved
register when IPRA is enabled. A simple test case is also added to
verify this change.
Patch by Vivek Pandya <vivekvpandya@gmail.com>
Differential Revision: http://reviews.llvm.org/D21561
llvm-svn: 275347
|
| |
|
|
| |
llvm-svn: 275343
|
| |
|
|
|
|
|
|
| |
Code cleanup: Move references to SlotMapping and SourceMgr into the
PerFunctionMIParsingState to avoid unnecessary passing around in
parameters.
llvm-svn: 275342
|
| |
|
|
|
|
|
|
|
| |
If a masked loads is not added to the chain, it should not reset the chain's
root.
This fixes the remaining part of PR28515.
llvm-svn: 275340
|
| |
|
|
|
|
|
| |
Use range-based for loops and llvm::any_of instead of explicit
iterators.
llvm-svn: 275332
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Previously it would say we had an invariant load if any of the memory
operands were invariant. But the load should be invariant only if *all*
the memory operands are invariant.
No testcase because this has proven to be very difficult to tickle in
practice. As just one example, ARM's ldrd instruction, which loads 64
bits into two 32-bit regs, is theoretically affected by this. But when
it's produced, it loses its memoperands' invariance bits!
Reviewers: jfb
Subscribers: llvm-commits, aemerson
Differential Revision: http://reviews.llvm.org/D22318
llvm-svn: 275331
|
| |
|
|
|
|
|
|
|
|
| |
Code cleanup: The PerFunctionMIParsingState is per function, moving a
reference into PFS we can avoid passing around the MachineFunction in an
extra parameter most of the time.
Also change most signatures to consistently pass PFS reference first.
llvm-svn: 275329
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Currently the MIR framework prints all its outputs (errors and actual
representation) on stderr.
This patch fixes that by printing the regular output in the output
specified with -o.
Differential Revision: http://reviews.llvm.org/D22251
llvm-svn: 275314
|
| |
|
|
| |
llvm-svn: 275304
|
| |
|
|
|
|
|
|
| |
Patch by Sunita Marathe
Differential Revision: http://reviews.llvm.org/D21920
llvm-svn: 275284
|
| |
|
|
|
|
| |
This fixes http://llvm.org/PR28524
llvm-svn: 275278
|
| |
|
|
|
|
|
|
|
|
| |
We can freeze the registers after the MachineFrameInfo has been configured (by
telling it about calls, inline asm, ...). This doesn't happen at all yet, but
will be part of IR translation.
Fixes -verify-machineinstrs assertion.
llvm-svn: 275221
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use LivePhysRegs with a backwards walking algorithm to update live in
lists, this way the results do not depend on the presence of kill flags
anymore.
This patch also reduces the number of registers added as live-in.
Previously all pristine registers as well as all sub registers of a
super register were added resulting in unnecessarily large live in
lists. This fixed https://llvm.org/PR25263.
Differential Revision: http://reviews.llvm.org/D22027
llvm-svn: 275201
|
| |
|
|
|
|
|
| |
Print VNI->def before calling VNI->markUnused(), since markUnused makes
the def invalid.
llvm-svn: 275196
|
| |
|
|
| |
llvm-svn: 275194
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Added support for:
1. Multi dimension array.
2. Array of structure type, which previously was declared incompletely.
3. Dynamic size array.
4. Array where element type is a typedef, volatile or constant (this should resolve PR28311).
Differential Revision: http://reviews.llvm.org/D21526
llvm-svn: 275167
|
| |
|
|
|
|
|
|
| |
Blocks to be tail-merged may share more than one successor. Correct the
comment to state that they share a specific successor, SuccBB, rather
than a single successor, which is not true.
llvm-svn: 275104
|
| |
|
|
| |
llvm-svn: 275101
|
| |
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D21395
Patch by Vivek Pandya.
PR28144
llvm-svn: 275087
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Preserve assembly comments from input in output assembly and flags to
toggle property. This is on by default for inline assembly and off in
llvm-mc.
Parsed comments are emitted immediately before an EOL which generally
places them on the expected line.
Reviewers: rtrieu, dwmw2, rnk, majnemer
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D20020
llvm-svn: 275058
|
| |
|
|
| |
llvm-svn: 275025
|
| |
|
|
| |
llvm-svn: 275021
|
| |
|
|
| |
llvm-svn: 275015
|
| |
|
|
| |
llvm-svn: 275014
|
| |
|
|
|
|
|
| |
There exists no relocation which can describe the address of a
dllimported variable: do not try to describe their location.
llvm-svn: 274986
|
| |
|
|
| |
llvm-svn: 274981
|
| |
|
|
|
|
|
|
| |
Drive-by improvement: We would 1) add CSRs, 2) remove callee saved CSRs
and 3) add all CSRs again for the return block. Just adding CSRs once
obviously gives the same results.
llvm-svn: 274955
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
An identity COPY like this:
%AL = COPY %AL, %EAX<imp-def>
has no semantic effect, but encodes liveness information: Further users
of %EAX only depend on this instruction even though it does not define
the full register.
Replace the COPY with a KILL instruction in those cases to maintain this
liveness information. (This reverts a small part of r238588 but this
time adds a comment explaining why a KILL instruction is useful).
llvm-svn: 274952
|
| |
|
|
| |
llvm-svn: 274951
|
| |
|
|
| |
llvm-svn: 274937
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Because isReallyTriviallyReMaterializableGeneric puts many limits on
rematerializable instructions, this fix can prevent instructions with
tied virtual operands and instructions with virtual register uses from
being kept in DeadRemat, so as to workaround the live interval consistency
problem for the dummy instructions kept in DeadRemat.
But we still need to fix the live interval consistency problem. This patch
is just a short time relieve. PR28464 has been filed as a reminder.
Differential Revision: http://reviews.llvm.org/D19486
llvm-svn: 274928
|
| |
|
|
| |
llvm-svn: 274916
|
| |
|
|
|
|
| |
DbgValueHistoryCalculator, NFC
llvm-svn: 274911
|
| |
|
|
| |
llvm-svn: 274907
|
| |
|
|
| |
llvm-svn: 274904
|
| |
|
|
| |
llvm-svn: 274903
|
| |
|
|
| |
llvm-svn: 274899
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Mostly through preferring MachineInstr&, avoid implicit conversions from
iterator to pointer.
Although this may bitrot (since there are other uses blocking me from
removing the implicit operator), this removes the last of the implicit
conversions from MachineInstrBundleIterator to MachineInstr* in the
LLVMCodeGen build target.
llvm-svn: 274893
|
| |
|
|
|
|
| |
Avoid implicit iterator to pointer conversions.
llvm-svn: 274892
|
| |
|
|
|
|
|
| |
Prefer MachineInstr& in order to avoid implicit conversions from
MachineInstrBundleIterator to MachineInstr*.
llvm-svn: 274888
|
| |
|
|
|
|
|
|
| |
The createRegAllocPass reads and writes to a global variable 'Registry'
via calls to getDefault and setDefault. Run this under a call_once to
avoid races.
llvm-svn: 274875
|
| |
|
|
| |
llvm-svn: 274874
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D22139
llvm-svn: 274855
|
| |
|
|
|
|
| |
we don't expand only when compiling for minimum code size.
llvm-svn: 274847
|
| |
|
|
|
|
|
|
|
| |
As a result, the urem instruction will not be expanded to a sequence of umull,
lsrs, muls and sub instructions, but just a call to __aeabi_uidivmod.
Differential Revision: http://reviews.llvm.org/D22131
llvm-svn: 274843
|
| |
|
|
|
|
|
| |
For some reason extract_vector_elt is sometimes allowed to have
a different result type than the vector element type.
llvm-svn: 274829
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D22124
llvm-svn: 274824
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D21143
llvm-svn: 274786
|
| |
|
|
| |
llvm-svn: 274734
|