[llvm-bugs] [Bug 49082] New: Machine Outliner outlines ARC marker changing program behavior

via llvm-bugs llvm-bugs at lists.llvm.org
Sun Feb 7 13:52:21 PST 2021


https://bugs.llvm.org/show_bug.cgi?id=49082

            Bug ID: 49082
           Summary: Machine Outliner outlines ARC marker changing program
                    behavior
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Backend: AArch64
          Assignee: unassignedbugs at nondot.org
          Reporter: kyulee.llvm at gmail.com
                CC: arnaud.degrandmaison at arm.com,
                    llvm-bugs at lists.llvm.org, smithp352 at googlemail.com,
                    Ties.Stuij at arm.com

Created attachment 24494
  --> https://bugs.llvm.org/attachment.cgi?id=24494&action=edit
MIR code showing an outlining that splits ARC marker.

In the following code sequence, the call ARC marker (`mov x29, x29`) is the way
the prior call (within the callee in the below) and the following
`objc_retainAutoreleasedReturnValue` to optimize unnecessary release/retain
operations. 

```
bl objc_msgSend
mov x29, x29
bl objc_retainAutoreleasedReturnValue
```

As attached in the repro, Machine Outliner often outlines the latter part only
into an outlined function like:
```
OUTLINED_FUNCTION:
mov x29, x29
bl objc_retainAutoreleasedReturnValue
```

This is not strictly a functional bug, but it may impact a potential
performance because it effectively disables the ARC marker.
It can also alter the program behavior in the presence of an existing ARC bug,
which is often hard to reason about from a slightly different semantic change
in autorelease vs release.

So, I think instead of outlining the part of code, outliner should either
outline the above whole code or not at all.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20210207/c38073fe/attachment.html>


More information about the llvm-bugs mailing list