Two RUN lines produce outputs that, each, have some common parts and some different parts. The common parts are checked under label A. The differing parts are associated to a function and checked under labels B and C, respectivelly. When build_function_body_dictionary is called for the first RUN line, it will attribute the function body to labels A and C. When the second RUN is passed to build_function_body_dictionary, it sees that the function body under A is different from what it has. If in this second RUN line, A were at the end of the prefixes list, A's body is still kept associated with the first run's function. When we output the function body (i.e. add_checks), we stop after emitting for the first prefix matching that function. So we end up with the wrong function body (first RUN's A-association). There is no reason to special-case the last label in the prefixes list, and the fix is to always clear a label association if we find a RUN line where the body is different. Differential Revision: https://reviews.llvm.org/D93078
7 lines
175 B
LLVM
7 lines
175 B
LLVM
; RUN: opt -O0 -S < %s | FileCheck %s -check-prefix=A
|
|
; RUN: opt -O3 -S < %s | FileCheck %s -check-prefix=A
|
|
|
|
define i32 @foo(i32 %i) {
|
|
%r = add i32 1, 1
|
|
ret i32 %r
|
|
} |