;--------------------------------------------------------------------- ; 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 () __SameSimple ; SameSimple: {{^}}__SameSimple ; SameSimple: {{^}}( ; SameSimple-DAG: ; SameSimple-DAG: ; SameSimple-DAG: ; SameSimple-NOT: ; 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