| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
CodeView, unlike DWARF, can associate code with a range of columns.
However, LLVM can only represent a single column position internally.
We used to claim that the end column and start column were the same
which yielded less than satisfactory results: we would stop printing at
the _beginning_ of the source expression! Instead, mark the column-end
as 'zero' to indicate that we don't have one (as per the documentation
for IDiaLineNumber::get_lineNumberEnd).
llvm-svn: 257528
|
|
|
|
| |
llvm-svn: 257525
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D16048
llvm-svn: 257523
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Only non-weighted predicates were handled in PPCInstrInfo::insertSelect. Handle
the weighted predicates as well.
This latent bug was triggered by r255398, because it added use of the
branch-weighted predicates.
While here, switch over an enum instead of an int to get the compiler to enforce
totality in the future.
llvm-svn: 257518
|
|
|
|
|
|
|
|
|
| |
A request has been made to the official registry, but an official value is
not yet available. This patch uses a temporary value in order to support
development. When an official value is recieved, the value of EM_WEBASSEMBLY
will be updated.
llvm-svn: 257517
|
|
|
|
|
|
|
| |
Refactor .param, .result, .local, and .endfunc, as directives, using the
proper MCTargetStreamer mechanism, rather than fake instructions.
llvm-svn: 257511
|
|
|
|
|
|
| |
Some bots failed when the inherited constructor was used.
llvm-svn: 257508
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch changes the way labels are referenced. Instead of referencing the
basic-block label name (eg. .LBB0_0), instructions now just have an immediate
which indicates the depth in the control-flow stack to find a label to jump to.
This makes them much closer to what we expect to have in the binary encoding,
and avoids the problem of basic-block label names not being explicit in the
binary encoding.
Also, it terminates blocks and loops with end_block and end_loop instructions,
rather than basic-block label names, for similar reasons.
This will also fix problems where two constructs appear to have the same label,
because we no longer explicitly use labels, so consumers that need labels will
presumably create their own labels, and presumably they won't reuse labels
when they do.
This patch does make the code a little more awkward to read; as a partial
mitigation, this patch also introduces comments showing where the labels are,
and comments on each branch showing where it's branching to.
llvm-svn: 257505
|
|
|
|
|
|
|
|
| |
- Handle simple cases of register copies (what current RDF CP allows).
- Hexagon-specific dead code elimination: handles dead address updates
in post-increment instructions.
llvm-svn: 257504
|
|
|
|
|
|
|
|
| |
pow(x, 0.5) calls
Also, propagate the FMF to the newly created sqrt() call.
llvm-svn: 257503
|
|
|
|
| |
llvm-svn: 257500
|
|
|
|
|
|
| |
Patch by Jakob Bornecrantz
llvm-svn: 257499
|
|
|
|
| |
llvm-svn: 257496
|
|
|
|
|
|
|
|
|
| |
The findExternalCalls routine ignores calls to functions already
defined in the dest module. This was not handling the case where
the definition in the current module is actually an alias to a
function call.
llvm-svn: 257493
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
pow(exp(x)) calls
See also:
http://reviews.llvm.org/rL255555
http://reviews.llvm.org/rL256871
http://reviews.llvm.org/rL256964
http://reviews.llvm.org/rL257400
http://reviews.llvm.org/rL257404
http://reviews.llvm.org/rL257414
llvm-svn: 257491
|
|
|
|
|
|
|
|
|
|
| |
This is a very limited implementation of DFG-based copy propagation.
It only handles actual COPY instructions (does not handle other equivalents
such as add-immediate with a 0 operand).
The major limitation is that it does not update the DFG: that will be the
change required to make it more robust (hopefully coming up soon).
llvm-svn: 257490
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: arsenm, echristo
Subscribers: arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D16010
llvm-svn: 257488
|
|
|
|
|
|
| |
Utility class to perform DFG-based dead code elimination.
llvm-svn: 257485
|
|
|
|
| |
llvm-svn: 257483
|
|
|
|
| |
llvm-svn: 257482
|
|
|
|
|
|
| |
Compute block live-ins and operand kill flags from the DFG.
llvm-svn: 257480
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: The result register is the second operand as per the other mt* instructions.
Reviewers: vkalintiris
Subscribers: llvm-commits, dsanders
Differential Revision: http://reviews.llvm.org/D15993
llvm-svn: 257478
|
|
|
|
|
|
|
|
|
| |
Target independent, SSA-based data flow framework for representing
data flow between physical registers.
This commit implements the creation of the actual data flow graph.
llvm-svn: 257477
|
|
|
|
| |
llvm-svn: 257476
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This fixes three bugs, in all of which state is not or incorrecly reset between
objects (i.e. when reusing the same pass manager to create multiple object
files):
1) AttributeSection needs to be reset to nullptr, because otherwise the backend
will try to emit into the old object file's attribute section causing a
segmentation fault.
2) MappingSymbolCounter needs to be reset, otherwise the second object file
will start where the first one left off.
3) The MCStreamer base class resets the Streamer's e_flags settings. Since
EF_ARM_EABI_VER5 is set on streamer creation, we need to set it again
after the MCStreamer was rest.
Also rename Reset (uppser case) to EHReset to avoid confusion with
reset (lower case).
Reviewers: rengolin
Differential Revision: http://reviews.llvm.org/D15950
llvm-svn: 257473
|
|
|
|
| |
llvm-svn: 257472
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(64 to 128-bit) matches against the pattern fragment 'vzmovl_v2i64'
(a zero-extended 64-bit load).
However, a change in r248784 teaches the instruction combiner that only
the lower 64 bits of the input to a 128-bit vcvtph2ps are used. This means
the instruction combiner will ordinarily optimize away the upper 64-bit
insertelement instruction in the zero-extension and so we no longer select
the memory-register form. To fix this a new pattern has been added.
Differential Revision: http://reviews.llvm.org/D16067
llvm-svn: 257470
|
|
|
|
|
|
|
|
|
| |
This means that the DEBUG_TYPE cannot take a comma anymore. All existing passes
conform to this rule.
Differential Revision: http://reviews.llvm.org/D15645
llvm-svn: 257466
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D16042
llvm-svn: 257463
|
|
|
|
|
|
|
| |
This is pure code motion - break the actual work out of runOnLoop into
a reusable standalone function.
llvm-svn: 257445
|
|
|
|
|
|
|
| |
This is using an extremely simple temporary made-up binary format, not the
official binary format (which isn't defined yet).
llvm-svn: 257440
|
|
|
|
| |
llvm-svn: 257439
|
|
|
|
| |
llvm-svn: 257438
|
|
|
|
|
|
| |
dictionary entries
llvm-svn: 257435
|
|
|
|
|
|
| |
like (a eq a) or (a neq a)
llvm-svn: 257434
|
|
|
|
| |
llvm-svn: 257433
|
|
|
|
|
|
|
| |
This is the same change on x86-64 as r255821 on AArch64.
rdar://9001553
llvm-svn: 257428
|
|
|
|
| |
llvm-svn: 257427
|
|
|
|
|
|
|
|
|
|
| |
The layering of where the various loop unroll parameters are
initialized and overridden here was very confusing, making it pretty
difficult to tell just how the various sources interacted. Instead, we
put all of the initialization logic together in a single function so
that it's obvious what overrides what.
llvm-svn: 257426
|
|
|
|
|
|
|
| |
This is the same change on ARM as r255821 on AArch64.
rdar://9001553
llvm-svn: 257424
|
|
|
|
|
|
| |
the result of the computations. With that, don't do any mutations if memcmp/etc returned 0
llvm-svn: 257423
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Function::copyAttributesFrom will copy the personality function, prefix
data and prolog data from the source function to the new function, and
is invoked when the IRMover copies the function prototype. This puts a
reference to a constant in the source module on a function in the dest
module, which causes an error when deleting the source module after
importing, since the personality function in the source module still has
uses (this would presumably also be an issue for the prologue and prefix
data). Remove the copies added to the dest copy when creating the new
prototype, as they are mapped properly when/if we link the function body.
llvm-svn: 257420
|
|
|
|
|
|
| |
rdar://9001553
llvm-svn: 257417
|
|
|
|
|
|
|
|
| |
Currently WebAssembly has two kinds of relocations; data addresses and
function addresses. This adds ELF relocations for them, as well as an
MC symbol kind to indicate which type of relocation is needed.
llvm-svn: 257416
|
|
|
|
|
|
|
|
|
| |
Apparently the preferred version is the incredibly complicated
VerifyVersionInfoW function.
Rename the function to avoid potential future name clashes.
llvm-svn: 257415
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also, add tests to verify that we're checking 'fast' on both calls of each transform pair,
tighten the CHECK lines, and give the tests more meaningful names.
This is a continuation of:
http://reviews.llvm.org/rL255555
http://reviews.llvm.org/rL256871
http://reviews.llvm.org/rL256964
http://reviews.llvm.org/rL257400
http://reviews.llvm.org/rL257404
llvm-svn: 257414
|
|
|
|
|
|
|
| |
There is no reason the value being printed has to be positive.
Fixes pr25802.
llvm-svn: 257412
|
|
|
|
|
|
|
| |
Fix the FIXME added with:
http://reviews.llvm.org/rL257400
llvm-svn: 257404
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently we're unrolling loops more in minsize than in optsize, which
means -Oz will have a larger code size than -Os. That doesn't make any
sense.
This resolves the FIXME about this in LoopUnrollPass and extends the
optsize test to make sure we use the smaller threshold for minsize as
well.
llvm-svn: 257402
|
|
|
|
| |
llvm-svn: 257401
|