blob: 027a243b955338641aa3849f76410061a198450a [file] [log] [blame]
;---------------------------------------------------------------------
; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN: -check-prefix=IdentPat
; RUN: FileCheck -input-file %s %s -check-prefix=IdentPat
__IdentPat
add r10, r1, r2
add r11, r3, r4
mul r5, r10, r11
__IdentPat
; IdentPat: {{^}}__IdentPat
; IdentPat-DAG: {{^}}add [[REG1:r[0-9]+]], {{r[0-9]+}}, {{r[0-9]+}}
; IdentPat-DAG: {{^}}add [[REG2:r[0-9]+]], {{r[0-9]+}}, {{r[0-9]+}}
; IdentPat: {{^}}mul r5, [[REG1]], [[REG2]]
; IdentPat: {{^}}__IdentPat
;---------------------------------------------------------------------
; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN: -check-prefix=IdentPatNot
; RUN: FileCheck -input-file %s %s -check-prefix=IdentPatNot
__IdentPatNot
add r11, r1, r2
xor r12, r1, r2
add r10, r3, r4
mul r5, r10, r11
__IdentPatNot
; IdentPatNot: {{^}}__IdentPatNot
; IdentPatNot-DAG: {{^}}add {{r[0-9]+}}, {{r[0-9]+}}, {{r[0-9]+}}
; IdentPatNot-DAG: {{^}}add {{r[0-9]+}}, {{r[0-9]+}}, {{r[0-9]+}}
; IdentPatNot-NOT: {{^}}xor
; IdentPatNot-DAG: {{^}}mul r5, r10, r11
; IdentPatNot: {{^}}__IdentPatNot
;---------------------------------------------------------------------
; RUN: FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN: -check-prefix=IdentPatVarDiff
; RUN: FileCheck -input-file %s %s -check-prefix=IdentPatVarDiff
__IdentPatVarDiff
call void @foo(), !dbg !0
call void @bar(), !dbg !1
!1 = !DILocation(line: 1,
!0 = !DILocation(line: 1,
__IdentPatVarDiff
; IdentPatVarDiff: {{^}}__IdentPatVarDiff
; IdentPatVarDiff: {{^}}call void @foo(), !dbg [[DBG0:![0-9]+]]
; IdentPatVarDiff: {{^}}call void @bar(), !dbg [[DBG1:![0-9]+]]
; IdentPatVarDiff-DAG: {{^}}[[DBG0]] = !DILocation(line: 1,
; IdentPatVarDiff-DAG: {{^}}[[DBG1]] = !DILocation(line: 1,
; IdentPatVarDiff: {{^}}__IdentPatVarDiff
;---------------------------------------------------------------------
; RUN: FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN: -check-prefix=IdentPatVarSame
; RUN: not FileCheck -input-file %s %s -check-prefix=IdentPatVarSame
__IdentPatVarSame
call void @foo(), !dbg !0
call void @bar(), !dbg !0
!1 = !DILocation(line: 1,
!0 = !DILocation(line: 1,
__IdentPatVarSame
; IdentPatVarSame: {{^}}__IdentPatVarSame
; IdentPatVarSame: {{^}}call void @foo(), !dbg [[DBG0:![0-9]+]]
; IdentPatVarSame: {{^}}call void @bar(), !dbg [[DBG1:![0-9]+]]
; IdentPatVarSame-DAG: {{^}}[[DBG0]] = !DILocation(line: 1,
; IdentPatVarSame-DAG: {{^}}[[DBG1]] = !DILocation(line: 1,
; IdentPatVarSame: {{^}}__IdentPatVarSame
;---------------------------------------------------------------------
; RUN: FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN: -check-prefix=SupSubSet
; RUN: not FileCheck -input-file %s %s -check-prefix=SupSubSet
__SupSubSet
store i64 8, i64* %a
store i64 4, i64* %a
store i64 4, i64* %b
store i64 8, i64* %b
__SupSubSet
; SupSubSet: {{^}}__SupSubSet
; SupSubSet-DAG: {{^}}store i64 {{4|8}}, i64* %a
; SupSubSet-DAG: {{^}}store i64 4, i64* %a
; SupSubSet-DAG: {{^}}store i64 {{4|8}}, i64* %b
; SupSubSet-DAG: {{^}}store i64 4, i64* %b
; SupSubSet: {{^}}__SupSubSet
;---------------------------------------------------------------------
; RUN: FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN: -check-prefix=SubSupSet
; RUN: FileCheck -input-file %s %s -check-prefix=SubSupSet
__SubSupSet
store i64 8, i64* %a
store i64 4, i64* %a
store i64 4, i64* %b
store i64 8, i64* %b
__SubSupSet
; SubSupSet: {{^}}__SubSupSet
; SubSupSet-DAG: {{^}}store i64 4, i64* %a
; SubSupSet-DAG: {{^}}store i64 {{4|8}}, i64* %a
; SubSupSet-DAG: {{^}}store i64 4, i64* %b
; SubSupSet-DAG: {{^}}store i64 {{4|8}}, i64* %b
; SubSupSet: {{^}}__SubSupSet
;---------------------------------------------------------------------
; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN: -check-prefixes=WrongNumReps
; RUN: not FileCheck -input-file %s %s -check-prefixes=WrongNumReps
;
; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN: -check-prefixes=WrongNumReps,WrongNumReps2
; RUN: FileCheck -input-file %s %s \
; RUN: -check-prefixes=WrongNumReps,WrongNumReps2
;
; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN: -check-prefixes=WrongNumReps,WrongNumReps2,WrongNumReps3
; RUN: not FileCheck -input-file %s %s \
; RUN: -check-prefixes=WrongNumReps,WrongNumReps2,WrongNumReps3
__WrongNumReps
0: task_begin
1: task_begin
0: barrier_begin
1: barrier_begin
__WrongNumReps
; WrongNumReps: {{^}}__WrongNumReps
; WrongNumReps-DAG: {{^}}[[THID:[0-9]+]]: task_begin
; WrongNumReps-DAG: {{^}}[[THID]]: barrier_begin
; WrongNumReps2-DAG: {{^}}[[THID:[0-9]+]]: task_begin
; WrongNumReps2-DAG: {{^}}[[THID]]: barrier_begin
; WrongNumReps3-DAG: {{^}}[[THID:[0-9]+]]: task_begin
; WrongNumReps3-DAG: {{^}}[[THID]]: barrier_begin
; WrongNumReps-NEXT: {{^}}__WrongNumReps
;---------------------------------------------------------------------
; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN: -check-prefix=SameSimple
; RUN: FileCheck -input-file %s %s -check-prefix=SameSimple
__SameSimple
(<foo><bar><foo>)
__SameSimple
; SameSimple: {{^}}__SameSimple
; SameSimple: {{^}}(
; SameSimple-DAG: <foo>
; SameSimple-DAG: <foo>
; SameSimple-DAG: <bar>
; SameSimple-NOT: <foo>
; SameSimple-SAME: ){{$}}
; SameSimple: {{^}}__SameSimple
;---------------------------------------------------------------------
; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \
; RUN: -check-prefix=DagNotDag
; RUN: FileCheck -input-file %s %s -check-prefix=DagNotDag
Assume we have DAGs, NOTs, DAGs, NOTs, and then DAGs. Let X, Y, and Z be
the DAG groups such that the leading DAGs are x, y, and z. y won't match
overlaps with matches from:
1. X. Otherwise, we used to get a spurious reordering complaint (back
when reordering complaints on DAG-NOT-DAG were still implemented).
2. Y, because y is in Y. To prevent these overlaps, the implementation must be
careful not to drop y's match from the previous matches list when it drops
matches from X to save search time.
3. z. This follows by applying rule #1 for z instead of y.
__DagNotDag
abcdefgh
abcd
efgh
abcd
ab
cd
abcd
cd
ab
__DagNotDag
; DagNotDag: {{^}}__DagNotDag
;
; X:
; x:DagNotDag-DAG: {{^}}abcdefgh
; DagNotDag-DAG: {{^}}abcd
; DagNotDag-DAG: efgh{{$}}
;
; Reordering complaint if rule #1 is broken.
; DagNotDag-NOT: abcd
; DagNotDag-NOT: efgh
;
; Y:
; y:DagNotDag-DAG: {{^}}abcd
; DagNotDag-DAG: {{^}}ab
; DagNotDag-DAG: cd{{$}}
;
; Matches if rule #2 is broken.
; DagNotDag-NOT: ab
; DagNotDag-NOT: cd
;
; Z:
; z:DagNotDag-DAG: {{^}}abcd
; DagNotDag-DAG: {{^}}ab
; DagNotDag-DAG: cd{{$}}
;
; Matches if rule #3 is broken.
; DagNotDag-NOT: {{^}}ab
; DagNotDag-NOT: {{^}}cd
;
; DagNotDag: {{^}}__DagNotDag