MaskRay added inline comments.

================
Comment at: clang/test/CodeGen/embed-fat-lto-objects.c:3
+// RUN: %clang -cc1 -triple x86_64-unknown-linux-gnu -flto=full 
-ffat-lto-objects -emit-llvm < %s  | FileCheck %s --check-prefixes=FULL,SPLIT
+
+// RUN: %clang -cc1 -triple x86_64-unknown-linux-gnu -flto=thin 
-fsplit-lto-unit -ffat-lto-objects -emit-llvm < %s  | FileCheck %s 
--check-prefixes=THIN,SPLIT
----------------
paulkirth wrote:
> MaskRay wrote:
> > We need a `-emit-obj` test with `// REQUIRES: x86-registered-target`.
> > Use llvm-readelf to check that .llvm.lto section is present.
> > 
> > We also need a `-S` test, otherwise the behavior of driver `clang -S 
> > -ffat-lto-objects` is untested.
> > 
> > 
> Sure, I can do both of those, but as a general question, isn't the generation 
> of assembly the responsibility of the backend? I believe we have some tests 
> that use `llc` on the the modules that have gone through the FatLTO pipeline. 
> Is that insufficient?
> 
> Also, as a best practice, do you know if there are specific types of changes 
> to `clang` that imply that we'd need to test `-S`? Sorry for all the 
> questions, but I'm trying to get a bit better in how I structure my patches 
> and approach testing.
Ah, sorry for my inaccurate suggestion. You are right.

To test `clang/lib/Driver/Driver.cpp`, we need to test the cc1 options of these 
driver options:

* `-S -ffat-lto-objects -flto`
* `-S -emit-llvm -ffat-lto-objects -flto`
* `-c -ffat-lto-objects -flto` (already tested)

test/CodeGen doesn't need more tests.


================
Comment at: clang/test/Driver/fat-lto-objects.c:10
+// CHECK-CC-NOLTO-NOT: -ffat-lto-objects
+// CHECK-CC-NOLTO-NOT: warning: argument unused during compilation: 
'-ffat-lto-objects'
+
----------------
paulkirth wrote:
> MaskRay wrote:
> > This NOT pattern has no effect as warnings are usually emitted before -cc1.
> > 
> > You can use `--implicit-check-not=warning:`
> I'm happy to try that suggestion, but isn't this testing the generated `cc1` 
> command from the driver(e.g.,  because we're using `%clang` and not 
> `%clang_cc1`)? I //think// that should still produce the warning, shouldn't 
> it? 
> 
> It's been a while since I made the patch, but I recall writing this test, 
> having it fail, and then applying the change to stop it from being an `unused 
> argument`... 
> 
> Also, thanks for all the great feedback on testing. Despite writing 
> many(well, more than a few at least) `lit` tests, I'm still surprised by lots 
> of behaviors, and your suggestions have been very helpful.
Yes, test/Driver just tests how Clang Driver generates warnings/errors and cc1 
options. If there is a warning, it will be before the cc1 line, so `// 
CHECK-CC-NOLTO-NOT: warning: argument unused during compilation: 
'-ffat-lto-objects'` after cc1 will have no effect.

```
% myclang -flto -ffat-lto-objects -pie -c a.cc '-###'
clang version 17.0.0
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /tmp/Debug/bin
clang: warning: argument unused during compilation: '-pie' 
[-Wunused-command-line-argument]
 (in-process)
 "/tmp/Debug/bin/clang-17" "-cc1" ...
```

Actually, we usually don't want to check that a certain warning doesn't occur. 
Rather, we want to test no warning occurs, as it's easy to adjust a warning 
message and get stale tests.

In this case, I think I find a better test strategy: -fdriver-only -v -Werror. 
`-fdriver-only` ensures that an error changes the exit code and lit does check 
the exit code, fulfilling our testing requirement.
```
% myclang -fdriver-only -v -Werror -flto -ffat-lto-objects -pie -fdriver-only 
-c a.cc
clang: error: argument unused during compilation: '-pie' 
[-Werror,-Wunused-command-line-argument]
% echo $?
1
```

> Also, thanks for all the great feedback on testing. Despite writing 
> many(well, more than a few at least) lit tests, I'm still surprised by lots 
> of behaviors, and your suggestions have been very helpful.

NP! Glad to help. I have spent too much time fiddling with driver options...


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D146777

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

Reply via email to