[llvm] r289402 - [Verifier] Add verification for TBAA metadata

Alina Sbirlea via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 14 10:39:24 PST 2016


FYI, I'm looking into updating the tests.

Thanks,
Alina

On Wed, Dec 14, 2016 at 8:38 AM, Sanjoy Das <sanjoy at playingwithpointers.com>
wrote:

> Hi Hal,
>
> > We'll need to fix the bitcode files, or perhaps better yet, add some
> kind of auto-upgrade support (perhaps just by dropping the metadata that
> does not make sense?).
>
> I would prefer not to drop or heal incorrect TBAA metadata within LLVM.
> The main reason to add the verifier was to fail noisily with bad TBAA
> metadata so that the frontends or the passes producing it could be fixed.
>
> On 12/14/16, 7:50 AM, Hal Finkel wrote:
> > Building CXX object Bitcode/Benchmarks/Halide/loca
> l_laplacian/CMakeFiles/halide_local_laplacian.dir/local_laplacian.bc.o
> > Access type node must be scalar
> >    %gray.host = load float*, float** %28, !tbaa !28
> > !28 = !{!29, !29, i64 0}
> > !29 = !{!"gray.host"}
> > Access type node must be scalar
> >    %gray.buffer = load %struct.buffer_t*, %struct.buffer_t** %29, !tbaa
> !30
> > !30 = !{!31, !31, i64 0}
> > !31 = !{!"gray.buffer"}
> > Access type node must be scalar
> >    %input.host = load i16*, i16** %30, !tbaa !32
> > !32 = !{!33, !33, i64 0}
> > !33 = !{!"input.host"}
> > Access type node must be scalar
> >    %input.buffer = load %struct.buffer_t*, %struct.buffer_t** %31, !tbaa
> !34
> > !34 = !{!35, !35, i64 0}
> > !35 = !{!"input.buffer"}
>
> These look fairly easy to fix though -- the base type and struct type
> operands directly point to the TBAA root.  I think the right representation
> is:
>
>     %input.buffer = load %struct.buffer_t*, %struct.buffer_t** %31, !tbaa
> !34
>  !34 = !{!35, !35, i64 0}
>  !35 = !{!"input.buffer", !36}
>  !36 = !{!"halide tbaa root"}
>
>     %input.host = load i16*, i16** %30, !tbaa !32
>  !32 = !{!33, !33, i64 0}
>  !33 = !{!"input.host", !36}  ;; !36 defined above
>
> Assuming that you want to denote !32 and !34 to be NoAlias.
>
> Note: As far as I can tell, given the IR above, today (without the
> verifier) they would be seen as MayAlias since they have different TBAA
> roots.
>
> -- Sanjoy
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161214/5edce69f/attachment-0001.html>


More information about the llvm-commits mailing list