Fix ARM unwind opcode assembler in several cases.
Summary:
Changes to ARM unwind opcode assembler:
* Fix multiple .save or .vsave directives. Besides, the
order is preserved now.
* For the directives which will generate multiple opcodes,
such as ".save {r0-r11}", the order of the unwind opcode
is fixed now, i.e. the registers with less encoding value
are popped first.
* Fix the $sp offset calculation. Now, we can use the
.setfp, .pad, .save, and .vsave directives at any order.
Changes to test cases:
* Add test case to check the order of multiple opcodes
for the .save directive.
* Fix the incorrect $sp offset in the test case. The
stack pointer offset specified in the test case was
incorrect.
* The opcode to restore $sp are slightly reordered. The
behavior are not changed, and the new output is same
as the output of GNU as. (File: eh-directive-pad.s,
eh-directive-setfp.s)
Reviewers: asl
CC: grosbach, nowar100, ILyoan, llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D739
Loading
Please sign in to comment