<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Incorrect propagation of noalias metadata in InlineFunction."
   href="https://bugs.llvm.org/show_bug.cgi?id=48209">48209</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Incorrect propagation of noalias metadata in InlineFunction.
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>libraries
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Transformation Utilities
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>xur@google.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org, xur@google.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Created <span class=""><a href="attachment.cgi?id=24177" name="attach_24177" title="A test that shows we get undef code">attachment 24177</a> <a href="attachment.cgi?id=24177&action=edit" title="A test that shows we get undef code">[details]</a></span>
A test that shows we get undef code

commit 27f647d117087ca11959e232e6443f4aee31e966
[Inliner] Consistently apply callsite noalias metadata
seg-faults one of the our programs.

I'm not sure if the patch is correct -- it propagates the noalias metadata
from the callsite to the argument definition. 

In our program, the argument definition defines the same alias.scope. The patch
will append !noalias metadata to the instruction with the same set of
!alias.scope.

We get:

%27 = load %"class.std::__cfi::__shared_weak_count"*,
%"class.std::__cfi::__shared_weak_count"** %26, align 8, !alias.scope !46635,
!noalias !46635

This is problematic. For this particular case, this load depends on a memset
which has the same alias group. With the noalias metadata added, alias query
skips the memory, and the dependent instruction becomes the memory allocation.
GVN has a rule that simplifies direct load the memory allocation to undef. The
generated code seg-faults.

I'm attaching a simplified test here.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>