| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
| |
Do not tail duplicate blocks where the successor has a phi node,
and the corresponding value in that phi node uses a subregister.
http://reviews.llvm.org/D13922
llvm-svn: 250877
|
|
|
|
|
|
|
| |
Analyze bit patterns of operands and values of instructions to perform
various simplifications, dead/redundant code elimination, etc.
llvm-svn: 250868
|
|
|
|
|
|
|
| |
Emit the CFI instructions after all code transformation have been done.
This will avoid any interference between CFI instructions and packetization.
llvm-svn: 250714
|
|
|
|
| |
llvm-svn: 250549
|
|
|
|
| |
llvm-svn: 250542
|
|
|
|
| |
llvm-svn: 249423
|
|
|
|
|
|
|
|
| |
In if-conversion, there is a utility function MergeBlocks() that is used to merge blocks. However, when new edges are built in this function the edge weight is either not provided or not updated properly, leading to a modified CFG with incorrect edge weights. This patch corrects this issue.
Differential Revision: http://reviews.llvm.org/D12513
llvm-svn: 248030
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As a follow-up to r246098, require `DISubprogram` definitions
(`isDefinition: true`) to be 'distinct'. Specifically, add an assembler
check, a verifier check, and bitcode upgrading logic to combat testcase
bitrot after the `DIBuilder` change.
While working on the testcases, I realized that
test/Linker/subprogram-linkonce-weak-odr.ll isn't relevant anymore. Its
purpose was to check for a corner case in PR22792 where two subprogram
definitions match exactly and share the same metadata node. The new
verifier check, requiring that subprogram definitions are 'distinct',
precludes that possibility.
I updated almost all the IR with the following script:
git grep -l -E -e '= !DISubprogram\(.* isDefinition: true' |
grep -v test/Bitcode |
xargs sed -i '' -e 's/= \(!DISubprogram(.*, isDefinition: true\)/= distinct \1/'
Likely some variant of would work for out-of-tree testcases.
llvm-svn: 246327
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since r241097, `DIBuilder` has only created distinct `DICompileUnit`s.
The backend is liable to start relying on that (if it hasn't already),
so make uniquable `DICompileUnit`s illegal and automatically upgrade old
bitcode. This is a nice cleanup, since we can remove an unnecessary
`DenseSet` (and the associated uniquing info) from `LLVMContextImpl`.
Almost all the testcases were updated with this script:
git grep -e '= !DICompileUnit' -l -- test |
grep -v test/Bitcode |
xargs sed -i '' -e 's,= !DICompileUnit,= distinct !DICompileUnit,'
I imagine something similar should work for out-of-tree testcases.
llvm-svn: 243885
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the fake `DW_TAG_auto_variable` and `DW_TAG_arg_variable` tags,
using `DW_TAG_variable` in their place Stop exposing the `tag:` field at
all in the assembly format for `DILocalVariable`.
Most of the testcase updates were generated by the following sed script:
find test/ -name "*.ll" -o -name "*.mir" |
xargs grep -l 'DILocalVariable' |
xargs sed -i '' \
-e 's/tag: DW_TAG_arg_variable, //' \
-e 's/tag: DW_TAG_auto_variable, //'
There were only a handful of tests in `test/Assembly` that I needed to
update by hand.
(Note: a follow-up could change `DILocalVariable::DILocalVariable()` to
set the tag to `DW_TAG_formal_parameter` instead of `DW_TAG_variable`
(as appropriate), instead of having that logic magically in the backend
in `DbgVariable`. I've added a FIXME to that effect.)
llvm-svn: 243774
|
|
|
|
| |
llvm-svn: 242711
|
|
|
|
|
|
|
| |
Convert logical operations on general-purpose registers to the correspon-
ding operations on predicate registers.
llvm-svn: 242186
|
|
|
|
|
|
|
| |
Generate extract instructions (via intrinsics) before the DAG combiner
folds shifts into unrecognizable forms.
llvm-svn: 242163
|
|
|
|
| |
llvm-svn: 241804
|
|
|
|
| |
llvm-svn: 241714
|
|
|
|
| |
llvm-svn: 241683
|
|
|
|
| |
llvm-svn: 241682
|
|
|
|
| |
llvm-svn: 241681
|
|
|
|
|
|
| |
tests that test packet brackets.
llvm-svn: 240051
|
|
|
|
|
|
| |
loading i1s.
llvm-svn: 239935
|
|
|
|
|
|
| |
removing mcpu=hexagonv4 since that's the minimum version anyway.
llvm-svn: 239917
|
|
|
|
|
|
| |
shows correct ELF symbol.
llvm-svn: 239876
|
|
|
|
| |
llvm-svn: 239770
|
|
|
|
|
|
| |
offset of the relocation. Set relocation addend and check it's correct in the ELF.
llvm-svn: 239769
|
|
|
|
| |
llvm-svn: 239690
|
|
|
|
|
|
| |
intrinsic parameters to appropriate width.
llvm-svn: 239634
|
|
|
|
|
|
| |
operand types disassemble correctly.
llvm-svn: 239477
|
|
|
|
|
|
| |
Compound instructions reduce slot resource requirements freeing those packet slots up for more instructions.
llvm-svn: 239307
|
|
|
|
| |
llvm-svn: 239161
|
|
|
|
| |
llvm-svn: 239103
|
|
|
|
| |
llvm-svn: 239102
|
|
|
|
|
|
| |
compress commonly used pairs of instructions in order to reduce code size. The test case duplex.ll normally would be 8 bytes, assign register to 0 and jump to link register. After duplexing this is only 4 bytes. This also tests the HexagonMCShuffler code path which is used to make sure duplexed instructions still follow slot requirements.
llvm-svn: 239095
|
|
|
|
|
|
| |
variable issue was fixed. Removing re-registering ASM backend.
llvm-svn: 238949
|
|
|
|
|
|
| |
to make sure it is.
llvm-svn: 238947
|
|
|
|
|
|
|
|
|
|
|
|
| |
advanced relaxation codepath."
This reverts commit r238748.
It broke the msan bot:
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/4372/steps/check-llvm%20msan/logs/stdio
llvm-svn: 238772
|
|
|
|
|
|
| |
relaxation codepath.
llvm-svn: 238748
|
|
|
|
|
|
| |
at a time which is the semantic unit for Hexagon. Fixing tests to use the new format. Disabling tests in the direct object emission path for a followup patch.
llvm-svn: 238556
|
|
|
|
|
|
|
|
|
| |
The induction variable in the vectorized loop wasn't
recognized properly, so a hardware loop wasn't generated.
Differential Revision: http://reviews.llvm.org/D9722
llvm-svn: 237388
|
|
|
|
|
|
|
|
|
|
|
| |
After converting a loop to a hardware loop, the pass should remove
any unnecessary instructions from the old compare-and-branch
code. This patch removes a dead constant assignment that was
used in the compare instruction.
Differential Revision: http://reviews.llvm.org/D9720
llvm-svn: 237373
|
|
|
|
|
|
|
|
| |
If the loop trip count may underflow or wrap, the compiler should
not generate a hardware loop since the trip count will be
incorrect.
llvm-svn: 237365
|
|
|
|
|
|
|
|
| |
loop1 is for the outer loop and loop0 is for the inner loop.
Differential Revision: http://reviews.llvm.org/D9680
llvm-svn: 237266
|
|
|
|
|
|
|
|
|
| |
The hardware loop pass should try to generate a hardware loop
instruction when the original loop has a critical edge.
Differential Revision: http://reviews.llvm.org/D9678
llvm-svn: 237258
|
|
|
|
|
|
|
|
| |
for large struct return by value.
Differential Revision: http://reviews.llvm.org/D9709
llvm-svn: 237170
|
|
|
|
|
|
|
|
|
| |
Refactored parts of the hardware loop pass to generate
more. Also, added more tests.
Differential Revision: http://reviews.llvm.org/D9568
llvm-svn: 236896
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Improved the AnalyzeBranch, InsertBranch, and RemoveBranch
functions in order to handle more of our branch instructions.
This requires changes to analyzeCompare and PredicateInstructions.
Specifically, we've added support for new value compare jumps,
improved handling of endloop, added more compare instructions,
and improved support for predicate instructions.
Differential Revision: http://reviews.llvm.org/D9559
llvm-svn: 236876
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Finish off PR23080 by renaming the debug info IR constructs from `MD*`
to `DI*`. The last of the `DIDescriptor` classes were deleted in
r235356, and the last of the related typedefs removed in r235413, so
this has all baked for about a week.
Note: If you have out-of-tree code (like a frontend), I recommend that
you get everything compiling and tests passing with the *previous*
commit before updating to this one. It'll be easier to keep track of
what code is using the `DIDescriptor` hierarchy and what you've already
updated, and I think you're extremely unlikely to insert bugs. YMMV of
course.
Back to *this* commit: I did this using the rename-md-di-nodes.sh
upgrade script I've attached to PR23080 (both code and testcases) and
filtered through clang-format-diff.py. I edited the tests for
test/Assembler/invalid-generic-debug-node-*.ll by hand since the columns
were off-by-three. It should work on your out-of-tree testcases (and
code, if you've followed the advice in the previous paragraph).
Some of the tests are in badly named files now (e.g.,
test/Assembler/invalid-mdcompositetype-missing-tag.ll should be
'dicompositetype'); I'll come back and move the files in a follow-up
commit.
llvm-svn: 236120
|
|
|
|
|
|
|
|
|
|
| |
Use a loop instruction with a constant extender for a hardware
loop instruction that is too far away from the start of the loop.
This is cheaper than changing the SA register value.
Differential Revision: http://reviews.llvm.org/D9262
llvm-svn: 235882
|
|
|
|
|
|
| |
http://reviews.llvm.org/D9241
llvm-svn: 235754
|
|
|
|
| |
llvm-svn: 235603
|
|
|
|
| |
llvm-svn: 235602
|