[llvm] r304900 - [FileCheck] Don't scan past the closing CHECK-DAG for CHECK-NOT inside CHECK-DAG
Benjamin Kramer via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 7 05:06:45 PDT 2017
Author: d0k
Date: Wed Jun 7 07:06:45 2017
New Revision: 304900
URL: http://llvm.org/viewvc/llvm-project?rev=304900&view=rev
Log:
[FileCheck] Don't scan past the closing CHECK-DAG for CHECK-NOT inside CHECK-DAG
If there's enough data in fron of it the skipped region would just
become arbitrarily large, and we scan for the CHECK-NOT everywhere.
Modified:
llvm/trunk/test/FileCheck/check-dag.txt
llvm/trunk/utils/FileCheck/FileCheck.cpp
Modified: llvm/trunk/test/FileCheck/check-dag.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/FileCheck/check-dag.txt?rev=304900&r1=304899&r2=304900&view=diff
==============================================================================
--- llvm/trunk/test/FileCheck/check-dag.txt (original)
+++ llvm/trunk/test/FileCheck/check-dag.txt Wed Jun 7 07:06:45 2017
@@ -12,6 +12,10 @@ add r11, r3, r4
add r10, r1, r2
mul r5, r10, r11
+# begin
+# end
+xor
+
; CHECK-DAG: add [[REG1:r[0-9]+]], r1, r2
; CHECK-DAG: add [[REG2:r[0-9]+]], r3, r4
; CHECK: mul r5, [[REG1]], [[REG2]]
@@ -24,3 +28,8 @@ mul r5, r10, r11
; CHECK-DAG: add [[REG2:r[0-9]+]], r3, r4
; CHECK-NOT: xor
; CHECK-DAG: mul r5, [[REG1]], [[REG2]]
+
+; CHECK-DAG: begin
+; CHECK-NOT: xor
+; CHECK-DAG: end
+; CHECK: xor
Modified: llvm/trunk/utils/FileCheck/FileCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/FileCheck/FileCheck.cpp?rev=304900&r1=304899&r2=304900&view=diff
==============================================================================
--- llvm/trunk/utils/FileCheck/FileCheck.cpp (original)
+++ llvm/trunk/utils/FileCheck/FileCheck.cpp Wed Jun 7 07:06:45 2017
@@ -1203,7 +1203,7 @@ size_t CheckString::CheckDag(const Sourc
// If there's CHECK-NOTs between two CHECK-DAGs or from CHECK to
// CHECK-DAG, verify that there's no 'not' strings occurred in that
// region.
- StringRef SkippedRegion = Buffer.substr(LastPos, MatchPos);
+ StringRef SkippedRegion = Buffer.slice(LastPos, MatchPos);
if (CheckNot(SM, SkippedRegion, NotStrings, VariableTable))
return StringRef::npos;
// Clear "not strings".
More information about the llvm-commits
mailing list