HomePhabricator

[Verifier] add invariant check for callbr

Authored by nickdesaulniers on Sep 25 2019, 3:28 PM.

Description

[Verifier] add invariant check for callbr

Summary:
The list of indirect labels should ALWAYS have their blockaddresses as
argument operands to the callbr (but not necessarily the other way
around). Add an invariant that checks this.

The verifier catches a bad test case that was added recently in r368478.
I think that was a simple mistake, and the test was made less strict in
regards to the precise addresses (as those weren't specifically the
point of the test).

This invariant will be used to find a reported bug.

Link: https://www.spinics.net/lists/arm-kernel/msg753473.html
Link: https://github.com/ClangBuiltLinux/linux/issues/649

Reviewers: craig.topper, void, chandlerc

Reviewed By: void

Subscribers: ychen, lebedev.ri, javed.absar, kristof.beyls, hiraditya, llvm-commits, srhines

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67196

llvm-svn: 372923

Details

Committed
nickdesaulniersSep 25 2019, 3:28 PM
Reviewer
void
Differential Revision
D67196: [Verifier] add invariant check for callbr
Parents
rG6023cf223446: [libcxxabi] Fix arm build failer with libgcc
Branches
Unknown
Tags
Unknown