| ;--------------------------------------------------------------------- | |
| ; 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 |