| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
A GEPed offset can go negative, the result of getIndexedOffsetInType
should according be a signed type.
llvm-svn: 275246
|
| |
|
|
|
|
|
| |
The `local_unnamed_addr` was introduced in SVN r272709. Update the syntax
highlighting rules.
llvm-svn: 275245
|
| |
|
|
|
|
|
|
| |
The many levels of nesting inside the responsible code made it easy for
bugs to sneak in. Flattening the logic makes it easier to see what's
going on.
llvm-svn: 275244
|
| |
|
|
|
|
| |
No functional change is intended, just a minor cleanup.
llvm-svn: 275243
|
| |
|
|
|
|
|
|
| |
zext/sext with 256-bit source types producing a 256-bit result.
These patterns just extracted the source down to 128-bits to use the instructions. AVX512 seems to have blindly copied them over for VLX, but did not create similar patterns for 512-bit sources. So I'm hoping the backend can't actually produce these cases.
llvm-svn: 275240
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The expandAddRecExprLiterally function incorrectly transforms
`[Start + Step * X]` into `Step * [Start + X]` instead of the correct
transform of `[Step * X] + Start`.
This caused https://github.com/JuliaLang/julia/issues/14704#issuecomment-174126219
due to what appeared to be sufficiently complicated loop interactions.
Patch by Jameson Nash (jameson@juliacomputing.com).
Reviewers: sanjoy
Differential Revision: http://reviews.llvm.org/D16505
llvm-svn: 275239
|
| |
|
|
|
|
|
| |
Remove another variable added in r275216 that was only used in debug
mode.
llvm-svn: 275238
|
| |
|
|
|
|
| |
Should make sanitizers happier.
llvm-svn: 275230
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
New pass manager for LICM.
Summary: Port LICM to the new pass manager.
Reviewers: davidxl, silvas
Subscribers: krasin, vitalybuka, silvas, davide, sanjoy, llvm-commits, mehdi_amini
Differential Revision: http://reviews.llvm.org/D21772
llvm-svn: 275224
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: Port LICM to the new pass manager.
Reviewers: davidxl, silvas
Subscribers: krasin, vitalybuka, silvas, davide, sanjoy, llvm-commits, mehdi_amini
Differential Revision: http://reviews.llvm.org/D21772
llvm-svn: 275222
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
I meant to squash this into it.
llvm-svn: 275220
|
| |
|
|
|
|
|
| |
Remove unused variable added in r275216. Should fix bot failure:
http://lab.llvm.org:8011/builders/lld-x86_64-darwin13/builds/24665
llvm-svn: 275219
|
| |
|
|
|
|
|
|
| |
had it in the wrong directory. Moved it to CodeGen/PowerPC.
Sorry about the noise.
llvm-svn: 275218
|
| |
|
|
|
|
|
|
|
| |
The LCSSA pass itself will not generate several redundant PHI nodes in a single
exit block. However, such redundant PHI nodes don't violate LCSSA form, and may
be introduced by passes that preserve LCSSA, and/or preserved by the LCSSA pass
itself. So, assuming a single PHI node per exit block is not safe.
llvm-svn: 275217
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Refactored the profitability analysis out of the IC promotion pass and
into lib/Analysis so that it can be accessed by the summary index
builder in a follow-on patch to enable IC promotion in ThinLTO (D21932).
Reviewers: davidxl, xur
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D22182
llvm-svn: 275216
|
| |
|
|
|
|
|
|
|
|
|
| |
This patch corresponds to review:
http://reviews.llvm.org/D20239
It adds exploitation of XXINSERTW and XXEXTRACTUW instructions that
are useful in some cases for inserting and extracting vector elements of
v4[if]32 vectors.
llvm-svn: 275215
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: mehdi_amini
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D22245
llvm-svn: 275214
|
| |
|
|
|
|
|
|
|
| |
Use range-base for loops.
Use auto when appropriate.
No functional change is intended.
llvm-svn: 275213
|
| |
|
|
| |
llvm-svn: 275212
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D22269
llvm-svn: 275208
|
| |
|
|
|
|
|
|
|
| |
Use range-based for loops instead of doing everything manually.
Use auto when appropriate.
No functional change is intended.
llvm-svn: 275205
|
| |
|
|
|
|
|
|
|
|
| |
With r274952 and r275201 in place there are no cases left where a
forward liveness analysis yields different results than a backward one.
So we can remove the forward stepping logic.
Differential Revision: http://reviews.llvm.org/D22083
llvm-svn: 275204
|
| |
|
|
|
|
|
| |
Don't create a terminator in the middle of the block.
We should probably get rid of this intrinsic.
llvm-svn: 275203
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: Port LoopIdiomRecognize Pass to new PM
Reviewers: davidxl
Subscribers: davide, sanjoy, mzolotukhin, llvm-commits
Differential Revision: http://reviews.llvm.org/D22250
llvm-svn: 275202
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
No test since these aren't used now, except for one place
in a pre-emit pass.
llvm-svn: 275200
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D22239
llvm-svn: 275197
|
| |
|
|
|
|
|
| |
Print VNI->def before calling VNI->markUnused(), since markUnused makes
the def invalid.
llvm-svn: 275196
|
| |
|
|
| |
llvm-svn: 275194
|
| |
|
|
|
|
|
| |
Patch by Jake VanAdrighem
Differential Revision: http://reviews.llvm.org/D22028
llvm-svn: 275193
|
| |
|
|
| |
llvm-svn: 275192
|
| |
|
|
| |
llvm-svn: 275188
|
| |
|
|
| |
llvm-svn: 275187
|
| |
|
|
| |
llvm-svn: 275186
|
| |
|
|
|
|
| |
orientation with llvm-mc.
llvm-svn: 275179
|
| |
|
|
|
|
|
|
|
| |
If a subtarget has both ZCZeroing and CustomCheapAsMoveHandling features (now
only Kryo has both), set FMOVS0 and FMOVD0 isAsCheapAsAMove.
Differential Revision: http://reviews.llvm.org/D22256
llvm-svn: 275178
|
| |
|
|
|
|
|
|
|
|
|
| |
This patch corresponds to review:
http://reviews.llvm.org/D21358
Vector shifts that have the same semantics as a vector swap are cannonicalized
as such to provide additional opportunities for swap removal optimization to
remove unnecessary swaps.
llvm-svn: 275168
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Previously, constant index insertelements would be turned into SI_INDIRECT_DST,
which is bound to prevent some optimization opportunities. Worse, it mislead
the heuristic that decides whether immediates should be lowered to S_MOV_B32
or V_MOV_B32 in a way that resulted in unnecessary v_readfirstlanes.
Reviewers: arsenm, tstellarAMD
Subscribers: arsenm, kzhuravl, llvm-commits
Differential Revision: http://reviews.llvm.org/D22217
llvm-svn: 275160
|
| |
|
|
|
|
|
|
|
|
| |
Summary: This reverts commit r275118.
Subscribers: sanjoy, mehdi_amini
Differential Revision: http://reviews.llvm.org/D22259
llvm-svn: 275156
|
| |
|
|
| |
llvm-svn: 275155
|
| |
|
|
| |
llvm-svn: 275152
|
| |
|
|
|
|
|
| |
We didn't read unique names correctly. As a result, we computed
hashes on (non-)unique names instead of unique names.
llvm-svn: 275150
|
| |
|
|
|
|
|
|
| |
Avoid implicit conversions from MachineInstrBundleIterator to
MachineInstr*, mainly by preferring MachineInstr& over MachineInstr* and
using range-based for loops.
llvm-svn: 275149
|
| |
|
|
| |
llvm-svn: 275148
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
It's useful to have some visibility about which call sites are devirtualized,
especially for debug purposes. Another use case is a regression test on the
application side (like, Chromium).
Reviewers: pcc
Differential Revision: http://reviews.llvm.org/D22252
llvm-svn: 275145
|
| |
|
|
|
|
| |
it expects assertion failure.
llvm-svn: 275144
|
| |
|
|
|
|
|
|
| |
This feature uses immediate #0 to zero a register.
Differential Revision: http://reviews.llvm.org/D19985
llvm-svn: 275143
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Avoid implicit iterator conversions from MachineInstrBundleIterator to
MachineInstr* in the Hexagon backend, mostly by preferring MachineInstr&
over MachineInstr* and switching to range-based for loops.
There's a long tail of API cleanup here, but I'm planning to leave the
rest to the Hexagon maintainers. HexagonInstrInfo defines many of its
own predicates, and most of them still take MachineInstr*. Some of
those actually check for nullptr, so I didn't feel comfortable changing
them to MachineInstr& en masse.
llvm-svn: 275142
|