Provides the frontend support for using r5-r11 as globally scoped register variables.
LLVM patch: https://reviews.llvm.org/D56005
Details
Details
- Reviewers
amilendra
Diff Detail
Diff Detail
Event Timeline
lib/Basic/Targets/ARM.h | ||
---|---|---|
150 | The implementation of the function probably belongs to Targets/ARM.cpp. Also, this can be written more compactly as : SmallVector<StringRef, 8> Regs = {"r4", "r5", ... "sp" }; if (std::any_of(Regs.begin(), Regs.end(), [RegName](StringRef r) { return RegName.equals(r); })) { HasSizeMismatch = false; return true; } |
Comment Actions
- Re-implementation using subtarget features over metadata.
- Reduction of register range to R5-R11.
- Additional checks to fix issues with spilling registers for stack alignment.
- Added clang errors for conflicting options with reserved registers.
Comment Actions
Added some regression tests for invalid -ffixed-reg combinations and the declaration of (un)supported variables.
Comment Actions
Removed the complicated frame pointer/ffixed combination errors in favour of an always on warning (in a new group, so it can be silenced).
The implementation of the function probably belongs to Targets/ARM.cpp. Also, this can be written more compactly as :