zturner added inline comments.

================
Comment at: lit/Modules/compressed-sections.yaml:20
+  - Name:            .bogus
+# CHECK-NOT: .bogus
+    Type:            SHT_PROGBITS
----------------
labath wrote:
> zturner wrote:
> > labath wrote:
> > > zturner wrote:
> > > > You should probably put this as the very first check statement.  Each 
> > > > successfully matching `CHECK` line will update an internal position and 
> > > > subsequent checks will only start from that position, so here you're 
> > > > only checking that after `.bogus` does not occur after `.hello_elf`, 
> > > > but this test would pass if `.bogus` occurred before `.hello_elf`.  But 
> > > > putting the `CHECK-NOT` first, both will fail  (this is also a good 
> > > > reason not to intersperse the check lines).
> > > Putting CHECK-NOT first will just make sure that .bogus does not appear 
> > > *before* the first CHECK match. I put it last as it this is the place it 
> > > is likely to be if it did we did end up outputting it, but if we want to 
> > > be safe, I guess we have two options:
> > > - put it both at the front *and* back
> > > - have two FileCheck invocations
> > > I chose the latter.
> > I don't believe this is correct, and if it is then someone has introduced a 
> > bug in `FileCheck`.  matches do not succeed or fail based on what check 
> > lines come after.  They only succeed or fail based on the current file 
> > position.  If the file position is 0, and you say `CHECK-NOT`, then you are 
> > checking that it does not appear anywhere in the file (i.e. anywhere 
> > starting at position 0).  Assuming the test passes (i.e. it does not find 
> > it), the file position is not updated and then the CHECK line continues by 
> > making sure that it does appear.  And so on and so forth.
> I don't know what you're basing your claim on, but this behavior is 
> consistent with FileCheck documentation here 
> <https://llvm.org/docs/CommandGuide/FileCheck.html>:
> 
> ```
> The “CHECK-NOT:” directive is used to verify that a string doesn’t occur 
> between two matches (or before the first match, or after the last match).
> ```
Well I guess the best way to be sure is to test it, and...  you're right.  
Weird.  I've been using it wrong all this time.

I almost feel like we need a `CHECK-NOT-DAG` or something.  Anyway, your 
solution looks fine.


https://reviews.llvm.org/D40616



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to