[libcxx] r322776 - Fix nodiscard failure tests on compilers w/o -verify.

Eric Fiselier via cfe-commits cfe-commits at lists.llvm.org
Wed Jan 17 14:48:09 PST 2018


Author: ericwf
Date: Wed Jan 17 14:48:09 2018
New Revision: 322776

URL: http://llvm.org/viewvc/llvm-project?rev=322776&view=rev
Log:
Fix nodiscard failure tests on compilers w/o -verify.

Previously .fail.cpp tests for nodiscard were run with -Wunused-result
being a warning, not an error, when the compiler didn't support -verify.

When -verify isn't enabled this change judiciously adds -Werror=unused-result
when to only the failure tests containing the // expected-error string for nodiscard.

As a drive-by change, this patch also adds a missing // UNSUPPORTED: c++2a to
a test which was only supposed to run in C++ <= 11.

Modified:
    libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array11.pass.cpp
    libcxx/trunk/utils/libcxx/test/format.py

Modified: libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array11.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array11.pass.cpp?rev=322776&r1=322775&r2=322776&view=diff
==============================================================================
--- libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array11.pass.cpp (original)
+++ libcxx/trunk/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array11.pass.cpp Wed Jan 17 14:48:09 2018
@@ -12,7 +12,7 @@
 // Note that sized delete operator definitions below are simply ignored
 // when sized deallocation is not supported, e.g., prior to C++14.
 
-// UNSUPPORTED: c++14, c++17
+// UNSUPPORTED: c++14, c++17, c++2a
 // UNSUPPORTED: sanitizer-new-delete
 
 #include <new>

Modified: libcxx/trunk/utils/libcxx/test/format.py
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/utils/libcxx/test/format.py?rev=322776&r1=322775&r2=322776&view=diff
==============================================================================
--- libcxx/trunk/utils/libcxx/test/format.py (original)
+++ libcxx/trunk/utils/libcxx/test/format.py Wed Jan 17 14:48:09 2018
@@ -242,7 +242,18 @@ class LibcxxTestFormat(object):
             test_cxx.useWarnings()
             if '-Wuser-defined-warnings' in test_cxx.warning_flags:
                 test_cxx.warning_flags += ['-Wno-error=user-defined-warnings']
-
+        else:
+            # We still need to enable certain warnings on .fail.cpp test when
+            # -verify isn't enabled. Such as -Werror=unused-result. However,
+            # we don't want it enabled too liberally, which might incorrectly
+            # allow unrelated failure tests to 'pass'.
+            #
+            # Therefore, we check if the test was expected to fail because of
+            # nodiscard before enabling it
+            test_str = "ignoring return value of function declared with " \
+              + "'nodiscard' attribute"
+            if test_str in contents:
+                test_cxx.flags += ['-Werror=unused-result']
         cmd, out, err, rc = test_cxx.compile(source_path, out=os.devnull)
         expected_rc = 0 if use_verify else 1
         if rc == expected_rc:




More information about the cfe-commits mailing list