| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 299197
|
| |
|
|
| |
llvm-svn: 299183
|
| |
|
|
| |
llvm-svn: 299182
|
| |
|
|
|
|
|
|
|
|
|
| |
registers not saved in certain blocks. Use explicit getCalleeSavedInfo
and isLiveIn instead.
This fixes pr32292.
Patch by Tim Shen!
llvm-svn: 299124
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now alternatively to the TargetOption.AllowFPOpFusion global flag, FMUL->FADD
can also use the per operation FMF to allow fusion.
The idea here is not to port everything to the new scheme (e.g. fused
multiply-and-sub will be ported later) but that this work all the way from
clang.
The transformation is conditionalized on *both* the FADD and the FMUL having
the FMF contract flag.
Differential Revision: https://reviews.llvm.org/D31169
llvm-svn: 299096
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the long-term, we want to replace statistics with something
finer-grained that lets us gather per-function data.
Remarks are that replacement.
Create an ORE instance in SelectionDAGISel, and pass it to
SelectionDAG.
SelectionDAG was used so that we can emit remarks from all
SelectionDAG-related code, including TargetLowering and DAGCombiner.
This isn't used in the current patch but Adam tells me he's interested
for the fp-contract combines.
Use the ORE instance to emit FastISel failures as remarks (instead of
the mix of dbgs() dumps and statistics that we currently have).
Eventually, we want to have an API that tells us whether remarks are
enabled (http://llvm.org/PR32352) so that we don't emit expensive
remarks (in this case, dumping IR) when it's not needed. For now, use
'isEnabled' as a crude replacement.
This does mean that the replacement for '-fast-isel-verbose' is now
'-pass-remarks-missed=isel'. Additionally, clang users also need to
enable remark diagnostics, using '-Rpass-missed=isel'.
This also removes '-fast-isel-verbose2': there are no static statistics
that we want to only enable in asserts builds, so we can always use
the remarks regardless of the build type.
Differential Revision: https://reviews.llvm.org/D31405
llvm-svn: 299093
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This combines all of the equivalent clean-ups for foldAndOfSetCCs:
https://reviews.llvm.org/rL298938
https://reviews.llvm.org/rL298940
https://reviews.llvm.org/rL298944
https://reviews.llvm.org/rL298949
https://reviews.llvm.org/rL298950
https://reviews.llvm.org/rL299002
https://reviews.llvm.org/rL299013
The sins of code duplication are on full display here:
each function is missing a fold that wasn't copied over from its logical sibling.
llvm-svn: 299091
|
| |
|
|
|
|
| |
Based on corrections mentioned in patch for clang for PR27635
llvm-svn: 299072
|
| |
|
|
|
|
| |
Turns out integerPartWidth only explicitly defines the width of the tc functions in the APInt class. Functions that aren't used by APInt implementation itself. Many places in the code base already assume APInt is made up of 64-bit pieces. Explicitly assuming 64-bit here doesn't make that situation much worse. A full audit would need to be done if it ever changes.
llvm-svn: 299059
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Add a simplification:
shuffle (splat-shuffle), undef, M --> splat-shuffle
Fixes pr32449
Patch by Sanjay Patel
Reviewers: eli.friedman, RKSimon, spatel
Reviewed By: spatel
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31426
llvm-svn: 299047
|
| |
|
|
|
|
|
|
|
|
| |
combination of DICompileUnit::Producer and Flags.
The darwin behavior is unchanged and will continue to use DW_AT_APPLE_flags.
Patch by Zhizhou Yang
llvm-svn: 299038
|
| |
|
|
| |
llvm-svn: 299022
|
| |
|
|
|
|
| |
We had a mix of type checks and usage that wasn't very clear.
llvm-svn: 299013
|
| |
|
|
| |
llvm-svn: 299002
|
| |
|
|
|
|
|
| |
As of r298987 the argument is a value that we std::move, so it
shouldn't be const anymore.
llvm-svn: 298999
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Instantiation of the MachineVerifierPass through
PassInfo::getNormalCtor would yield a segfault since the default
constructor of the MachineVerifierPass takes a reference to nullptr.
Patch by Simone Pellegrini.
Differential Revision: https://reviews.llvm.org/D31387
llvm-svn: 298987
|
| |
|
|
|
|
|
| |
This is no longer needed as spotted by Sanjay in
https://reviews.llvm.org/D31165.
llvm-svn: 298963
|
| |
|
|
|
|
|
|
|
|
|
| |
Properly propagate the FMF from the LLVM IR to this flag.
This is toward moving fp-contraction=fast from an LLVM TargetOption to a
FastMathFlag in order to fix PR25721.
Differential Revision: https://reviews.llvm.org/D31165
llvm-svn: 298961
|
| |
|
|
| |
llvm-svn: 298954
|
| |
|
|
| |
llvm-svn: 298950
|
| |
|
|
| |
llvm-svn: 298949
|
| |
|
|
| |
llvm-svn: 298944
|
| |
|
|
|
|
| |
Default to something more reasonable if printCustom isn't implemented.
llvm-svn: 298941
|
| |
|
|
|
|
|
|
| |
1. Fix bogus comment.
2. Early exit to reduce indent.
3. Change node pointer param to what it really is: an SDLoc.
llvm-svn: 298940
|
| |
|
|
|
|
| |
This is just a cut and paste followed by clang-format. Clean up to follow.
llvm-svn: 298938
|
| |
|
|
|
|
|
| |
Follow-up to:
https://reviews.llvm.org/rL298775
llvm-svn: 298933
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Deal with case that initial node is deleted during dag-combine leading
to an assertional failure in promoteIntShiftOp.
Fixes PR32420.
Reviewers: spatel, RKSimon
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31403
llvm-svn: 298931
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reorder work in PromoteIntBinOp to prevent stale (deleted) nodes from
being used.
Fixes PR32340 and PR32345.
Reviewers: hfinkel, dbabokin
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31148
llvm-svn: 298923
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reorder CombineTo Calls to prevent potential use of deleted node.
Fixes PR32372.
Reviewers: jnspaulsson, RKSimon, uweigand, jonpa
Reviewed By: jonpa
Subscribers: jonpa, llvm-commits
Differential Revision: https://reviews.llvm.org/D31346
llvm-svn: 298920
|
| |
|
|
| |
llvm-svn: 298916
|
| |
|
|
|
|
|
|
| |
Patch by Axel Davy (axel.davy@normalesup.org)
Differential revision: https://reviews.llvm.org/D30626
llvm-svn: 298896
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
dumpMachineInstrRangeWithSlotIndex.
Summary:
Add missing check routine for dumpMachineInstrRangeWithSlotIndex including LLVM_DUMP_METHOD.
Reviewers: bkramer
Differential revision: https://reviews.llvm.org/D30367
llvm-svn: 298895
|
| |
|
|
|
|
|
|
|
|
|
| |
This patch enables schedulers to specify instructions that
cannot be issued with any other instructions.
It also fixes BeginGroup/EndGroup.
Reviewed by: Andrew Trick
Differential Revision: https://reviews.llvm.org/D30744
llvm-svn: 298885
|
| |
|
|
| |
llvm-svn: 298866
|
| |
|
|
| |
llvm-svn: 298865
|
| |
|
|
|
|
| |
Use it to compare immediate operands.
llvm-svn: 298855
|
| |
|
|
|
|
|
|
|
| |
This is the payoff for D31156 - if a target has efficient comparison instructions for vector-sized equality,
we can replace memcmp calls with inline code that is both smaller and faster.
Differential Revision: https://reviews.llvm.org/D31290
llvm-svn: 298775
|
| |
|
|
| |
llvm-svn: 298751
|
| |
|
|
|
|
|
|
|
|
| |
If we have an array of a user-defined aggregates for which there was an
ODR violation, then the array size will not necessarily match the number
of elements times the size of the element.
Fixes PR32383
llvm-svn: 298750
|
| |
|
|
| |
llvm-svn: 298736
|
| |
|
|
| |
llvm-svn: 298665
|
| |
|
|
|
|
|
| |
While fixing a malformed testcase, I discovered that the code
exercised by it was wrong, too.
llvm-svn: 298664
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
For the following CFG:
A->B
B->C
A->C
If there is another edge B->D, then ABC should not be considered as triangle.
Reviewers: davidxl, iteratee
Reviewed By: iteratee
Subscribers: nemanjai, llvm-commits
Differential Revision: https://reviews.llvm.org/D31310
llvm-svn: 298661
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: The current prefix based function layout algorithm only looks at function's entry count, which is not sufficient. A function should be grouped together if its entry count or any call edge count is hot.
Reviewers: davidxl, eraman
Reviewed By: eraman
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31225
llvm-svn: 298656
|
| |
|
|
|
|
| |
Remove an unused lambda capture that made some bots unhappy.
llvm-svn: 298651
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The old candidate collection method in the outliner caused some very large
regressions in compile time on large tests. For MultiSource/Benchmarks/7zip it
caused a 284.07 s or 1156% increase in compile time. On average, using the
SingleSource/MultiSource tests, it caused an average increase of 8 seconds in
compile time (something like 1000%).
This commit replaces that candidate collection method with a new one which
only visits each node in the tree once. This reduces the worst compile time
increase (still 7zip) to a 0.542 s overhead (22%) and the average compile time
increase on SingleSource and MultiSource to 0.018 s (4%).
llvm-svn: 298648
|
| |
|
|
|
|
|
|
|
|
|
| |
It is not guaranteed that the memory used for MachineBasicBlocks in
the previous MachineFunction hasn't been freed, so holding on to a
pointer to the last function's isn't correct. Particularly I have
observed the sret.ll testcase failing because the first BasicBlock in
the new function happened to be allocated to the exact same memory as
the previously saved and (deleted) PrevInstBB.
llvm-svn: 298642
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move CombineTo preventing deleted node from being returned in
visitZERO_EXTEND.
Fixes PR32284.
Reviewers: RKSimon, bogner
Reviewed By: RKSimon
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31254
llvm-svn: 298604
|
| |
|
|
| |
llvm-svn: 298523
|
| |
|
|
|
|
|
|
| |
Also add an assertion for the case that there are multiple FI
expressions with a DW_OP_LLVM_fragment; which should violate internal
constraints in DbgVariable.
llvm-svn: 298518
|