[llvm-bugs] [Bug 31393] New: New verifier complaining about bad TBAA metadata created during hoist-merge optimization

via llvm-bugs llvm-bugs at lists.llvm.org
Thu Dec 15 10:00:36 PST 2016


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

            Bug ID: 31393
           Summary: New verifier complaining about bad TBAA metadata
                    created during hoist-merge optimization
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Scalar Optimizations
          Assignee: unassignedbugs at nondot.org
          Reporter: Kevin.Harris at unisys.com
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

Created attachment 17760
  --> https://llvm.org/bugs/attachment.cgi?id=17760&action=edit
Bitcode example file

In revs 289402 & 289403 (9-Dec-16), a new TBAA verifier was introduced.  This
new verifier detected a problem with TBAA nodes that are initially OK, but,
after multiple loads or stores are hoisted out of a loop and merged, no longer
pass verification.  Here's an example of the messages produced:

kharris at cm-mariner35:~/dyntrans/Tests/regression> $LLVMPATH/opt -O2 -o
if200014004000_1-o.bc if200014004000_1.bc
Access type node must be scalar
  %grsval = load i64, i64* %saddr266, align 8, !tbaa !47
!47 = !{!2, !2, i64 0}
!2 = !{!3, !3, i64 0}
Access type node must be scalar
  store i64 %mem_grs271, i64* %daddr267, align 8, !tbaa !47
!47 = !{!2, !2, i64 0}
!2 = !{!3, !3, i64 0}
LLVM ERROR: Broken function found, compilation aborted!

The original code has been working for several years.  Historically, when two
loads with different TBAA metadata values are merged, the metadata for the
merged node is the common root of the originals.  The new code appears to
attempt to hold on to both original values (noble), but the new verifier
rejects this structure.  It isn't obvious whether the fix lies in the verifier
or in the merging code, since removing the verification causes a downstream
crash.

We applaud the effort (since reverting to the root node causes the merged load
to potentially interfere with unrelated memory addresses), but not at the
expense of the ability to generate usable code.

We would really appreciate it if this problem could be fixed in time for the
4.0 release.

-- 
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/20161215/2c76e58e/attachment-0001.html>


More information about the llvm-bugs mailing list