- User Since
- Aug 19 2015, 11:50 AM (304 w, 6 d)
Apr 21 2021
Thanks Peter. Since one week has passed, I plan to commit these changes by the end of the day if nothing surfaces.
Apr 15 2021
Add a clarifying comment.
Apr 13 2021
Mar 23 2021
Remove if statement inside RemovePredicate as it's already covered by an assertion.
Remove predicate of instructions after the divergent one even if there's no non-debug instruction after it.
Mar 22 2021
Add assertion in RemovePredicate lambda.
SKip debug instructions inside VPT blocks with predicate divergence.
Mar 12 2021
LGTM. mem2reg is a simple enough optimization to clear up the IR in this case. Thank you.
Dec 8 2020
Nov 6 2020
@Tyker This is causing another build failure in another example:
Nov 5 2020
Aug 4 2020
Not really. Closing it
Jul 29 2020
Jul 23 2020
- Add comment explaining the MVE-Integer detail.
- Add another test to check the disabled features.
Jul 21 2020
Jul 14 2020
Jul 13 2020
Jul 3 2020
- Merged the second patch into this (handle bf16).
- Do the same treatment for -mcpu.
- Instead of doing string search once again, return the desired information in the first time using a by-ref argument.
- This new approach covers positional differences between +fp and +nofp.
Jul 2 2020
I will merge the two patches into one.
Jul 1 2020
Jun 25 2020
Jun 24 2020
Jun 15 2020
May 28 2020
This is the problematic case:
May 27 2020
Improve the testcase which exercises loads and stores from stack. Now, wrong frame index replacements will be caught here.
May 26 2020
May 22 2020
May 13 2020
This effort is to specifically address this bug: https://bugs.llvm.org/show_bug.cgi?id=34165
May 12 2020
Added a test.
Thanks @efriedma for the clarification. It seems that the handling of input operands must be moved to clang then.
May 11 2020
Apr 29 2020
Apr 28 2020
This change isn't more restrictive than GCC. In your example, the difference is being caused by gcc seemingly adding -fomit-frame-pointer, whereas Clang does not.
Hi @manojgupta. I am not familiar enough with this piece of code to understand whether it could be fixed by simply using any other general-purpose register instead of r7.
Apr 16 2020
Apr 15 2020
Apr 8 2020
Amended commit msg to explain why clobber operands are not handled.
Clobber operands are intentionally not handled in this patch. They were already covered in AsmPrinter::emitInlineAsm(const MachineInstr *MI), even though, in the latter, only a warning is given, not an error.
Apr 2 2020
The patch has been redone to detect only writes to PC, base pointer and
frame pointer on ARM target. Similar implementations can be done for
other targets as the base class's function is virtual.
Mar 30 2020
Indeed, it seems that gcc allows the use of SP in inline asm.
Mar 27 2020
I should have given more context, so let me amend that.
Mar 26 2020
It is diagnosing the same cases as the similar check present in CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp, lines 549-585. The latter, however, only covers clobber operands, leaving input and output operands unchecked.
Fixing naming issue detected by clang-tidy.
Mar 11 2020
Added comment to explain the fallback to non-register-offset variants.
Mar 10 2020
Can I please have this reviewed again? I have addressed the issues reported.
- Explictly avoid using the register-offset variant of LDRD/STRD. This variant has a limitation on register allocation: the register allocated to the register-offset cannot be reused in any of the remaining operands. I could not find an easy way to implement this in LLVM, so I left it as a to-do in the future.
- Instruction selection of STRD was moved from TableGen to C++ because of point (1).
- Updated tests to reflect these changes.