[all-commits] [llvm/llvm-project] d4e10e: AArch64: Fix frame record chain

Logan Chien via All-commits all-commits at lists.llvm.org
Sat Dec 14 10:38:06 PST 2019


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: d4e10e6adb1b629b3fc1b78f7e281fbcec392edb
      https://github.com/llvm/llvm-project/commit/d4e10e6adb1b629b3fc1b78f7e281fbcec392edb
  Author: Logan Chien <tzuhsiang.chien at gmail.com>
  Date:   2019-12-14 (Sat, 14 Dec 2019)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
    M llvm/lib/Target/AArch64/AArch64MachineFunctionInfo.h
    A llvm/test/CodeGen/AArch64/framelayout-frame-record.mir

  Log Message:
  -----------
  AArch64: Fix frame record chain

The commit r369122 may keep LR and FP register (aka. frame record) in
the middle of a frame, thus we must add the offsets to ensure the FP
register always points to innermost frame record on the stack.

According to AAPCS64[1], a conforming code shall construct a linked list
of stack frames that can be traversed with frame records.  This commit
is also essential to frame-pointer-based stack unwinder (e.g.  the stack
unwinder in linx-perf-tools.)

[1] https://github.com/ARM-software/software-standards/blob/master/abi/aapcs64/aapcs64.rst#the-frame-pointer

Test: llvm-lit ${LLVM_SRC}/test/CodeGen/AArch64/framelayout-frame-record.ll
Test: llvm-lit ${LLVM_SRC}/test/CodeGen/AArch64

Differential Revision: https://reviews.llvm.org/D70800




More information about the All-commits mailing list