OSDN Git Service

ARM: sort register lists by encoding in push/pop instructions.
authorTim Northover <tnorthover@apple.com>
Mon, 14 Nov 2016 19:02:17 +0000 (19:02 +0000)
committerTim Northover <tnorthover@apple.com>
Mon, 14 Nov 2016 19:02:17 +0000 (19:02 +0000)
commitc822bf16138bf54ba230d11e2e2ea1a9c9147494
treed0da9c2919c6f8ef178a2b38d72febec807c5d20
parentb13bcfd92141f31782952f7b16bdefedab5b21b5
ARM: sort register lists by encoding in push/pop instructions.

For example we were producing

    push {r8, r10, r11, r4, r5, r7, lr}

This is misleading (r4, r5 and r7 are actually pushed before the rest), and
other components (stack folding recently) often forget to deal with the extra
complexity coming from the different order, leading to miscompiles. Finally, we
warn about our own code in -no-integrated-as mode without this, which is really
not a good idea.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286866 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMFrameLowering.cpp
lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
test/CodeGen/ARM/swifterror.ll