dblaikie added inline comments.

================
Comment at: llvm/lib/IR/Attributes.cpp:490
     if (Type *Ty = getValueAsType()) {
-      raw_string_ostream OS(Result);
+      // FIXME: This should never be null
       Result += '(';
----------------
arsenm wrote:
> dblaikie wrote:
> > Is it? Could you replace this with an assertion instead? 
> It should never be null, but it is in some cases (I think there are some 
> situations still where callsite attributes are missing byval)
Any chance of clarifying why it is sometimes null today in the comment?


================
Comment at: llvm/test/Bitcode/compatibility-3.6.ll:408-409
 ; CHECK: declare void @f.param.byval({ i8, i8 }* byval({ i8, i8 }))
-declare void @f.param.inalloca(i8* inalloca)
-; CHECK: declare void @f.param.inalloca(i8* inalloca)
+declare void @f.param.inalloca(i8* inalloca(i8))
+; CHECK: declare void @f.param.inalloca(i8* inalloca(i8))
 declare void @f.param.sret(i8* sret(i8))
----------------
arsenm wrote:
> dblaikie wrote:
> > It's confusing to me (though seems to be consistent with the byval change 
> > here - but maybe that's a mistake too) why the textual IR in this file is 
> > being modified - it has no effect (the textual IR is not used by the test) 
> > and the intent is to test compatibility with old IR (which is in the .bc 
> > file that is used) - so maybe it's best to leave the text here in a form 
> > that matches the old bitcode that the test is running against?
> > 
> > (similarly in the other compatibility tests updated in this patch)
> Why do these tests have textual IR in them at all then? I don't think the 
> concept of the text IR corresponding to the old bitcode really exists. I 
> would expect to see the current syntax, but I don't actually see why this has 
> a .ll suffix and isn't just a plain text file with check lines
Seems useful to me to know what we're testing against - without the textual IR, 
how would we know what the CHECKs are meant to be demonstrating? But I do think 
the textual IR should be the old/original IR, not updated IR - so we can see 
the difference.

Not sure how far from my perspective these tests have already come - maybe it's 
only a few mistakes that have been repeated, maybe it's more systemic/a more 
fundamentally different idea about how these tests should be written that other 
developers have taken when making/maintaining these tests.


================
Comment at: llvm/test/Bitcode/inalloca-upgrade.test:1-7
+RUN: llvm-dis %p/Inputs/inalloca-upgrade.bc -o - | FileCheck %s
+
+Make sure we upgrade old-style IntAttribute inalloca records to a
+fully typed version correctly.
+
+CHECK: call void @bar({ i32*, i8 }* inalloca({ i32*, i8 }) %ptr)
+CHECK: invoke void @bar({ i32*, i8 }* inalloca({ i32*, i8 }) %ptr)
----------------
arsenm wrote:
> dblaikie wrote:
> > Isn't this tested by all the compatibility tests already? (since they 
> > contain the old-style inalloca, and verify that when read in it's upgraded 
> > to the new-style) Though I don't mind terribly having a separate test, but 
> > each file/tool execution does add up & it's nice to keep them to a minimum 
> > when test coverage isn't otherwise compromised.
> I was following along with byval, which has its own test like this. I also 
> generally hate the all-in-one style of testing features that are really 
> unrelated. It makes it harder to know what actually broke when one fails.
A single file with many tests for different features related to, say, bitcode 
compatibility, seems good to me.

If the failures are hard to read - there are various FileCheck features which 
can be used to help improve the failure modes (using CHECK-LABEL to isolate one 
checking area from another, so they don't bleed together/get cause the failure 
point to drift a long way from the initial problem).

Having every individual test in a separate file may significantly slow down 
test execution (especially on Windows, where process overhead is higher, if I 
recall correctly) and I think it reduces the chance of finding and grouping 
related tests together - leading to a proliferation of subtly overlapping tests 
rather than a more systematic approach to how a feature is tested. (though 
that's always challenging - different people think in different groupings, etc, 
naming is challenging, etc)


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D98146/new/

https://reviews.llvm.org/D98146

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

Reply via email to