[all-commits] [llvm/llvm-project] 339b34: [AVR] Respect the 'interrupt' function attribute

Dylan McKay via All-commits all-commits at lists.llvm.org
Mon Mar 30 23:03:58 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 339b34266c1b54a9b5ff2f83cfb1da9cd8c9d90a
      https://github.com/llvm/llvm-project/commit/339b34266c1b54a9b5ff2f83cfb1da9cd8c9d90a
  Author: Dylan McKay <me at dylanmckay.io>
  Date:   2020-03-31 (Tue, 31 Mar 2020)

  Changed paths:
    M llvm/lib/Target/AVR/AVRFrameLowering.cpp
    M llvm/lib/Target/AVR/AVRISelLowering.cpp
    M llvm/lib/Target/AVR/AVRMachineFunctionInfo.h
    M llvm/lib/Target/AVR/AVRRegisterInfo.cpp
    M llvm/test/CodeGen/AVR/interrupts.ll

  Log Message:
  -----------
  [AVR] Respect the 'interrupt' function attribute

In the past, AVR functions were only lowered with interrupt-specific
machine code if the function was defined with the "avr-interrupt" or
"avr-signal" calling conventions.

This patch modifies the backend so that if the function does not have a
special calling convention, but does have an "interrupt" attribute,
that function is interpreted as a function with interrupts.

This also extracts the "is this function an interrupt" logic from
several disparate places in the backend into one AVRMachineFunctionInfo
attribute.

Bug found by Wilhelm Meier.




More information about the All-commits mailing list