================
@@ -815,3 +815,29 @@ void test_var() {
}
} // namespace templates
+
+namespace muliple_read_volatile {
+ volatile int v1;
+
+ void PositiveTest(){
+ int x = 0;
+ int y = 0;
+ x = v1 + v1; // cxx11-warning {{unsequenced accesses to volatile
qualified 'v1'}}
+ // cxx17-warning@-1 {{unsequenced accesses to volatile
qualified 'v1'}}
+ v1 = v1 * v1; // cxx11-warning {{unsequenced accesses to volatile
qualified 'v1'}}
+ // cxx17-warning@-1 {{unsequenced accesses to volatile
qualified 'v1'}}
+ x = v1 + (y++, v1); // cxx11-warning {{unsequenced accesses to volatile
qualified 'v1'}}
+ // cxx17-warning@-1 {{unsequenced accesses to volatile
qualified 'v1'}}
+ x = v1 + v1 || y; // cxx11-warning {{unsequenced accesses to volatile
qualified 'v1'}}
+ // cxx17-warning@-1 {{unsequenced accesses to volatile
qualified 'v1'}}
+ }
+
+ void NegativeTest(){
+ int x = 0;
+ int y = 0;
+ x = v1 + y; // no-warning
+ v1 = v1 * y; // no-warning
+ x = (v1, v1); // no-warning
+ x = v1 || v1; // no-warning
+ }
+} // namespace muliple_read_volatile
----------------
Fznamznon wrote:
Hmm, are you using check-clang build target to verify that tests are ok?
In `SemaCXX/warn-unsequenced.cpp` seems a wrong diagnostic message is caught by
expected-warning directives.
I think in most of CodeGen tests the new warning fires and they use Werror as I
can see in the summary
https://github.com/llvm/llvm-project/actions/runs/21958635491?pr=180955 .
CodeGen tests usually don't mark diagnostic messages and check emitted code
instead so an error will prevent such tests from passing. The tests need to be
examined whether they are intentionally trigger the new warning and if they do
and the warning is correct for these, we probably need to disable the warning
for these via command line. Otherwise bugs in the warning or the tests need to
be fixed.
https://github.com/llvm/llvm-project/pull/180955
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits