GCC version of https://reviews.llvm.org/D52386

2019-09-21  Kamil Rytarowski  <n...@gmx.com>

        * cppbuiltin.c (define_builtin_macros_for_compilation_flags): Add new
        builtin __SANITIZE_UNDEFINED__ macros for fsanitize=undefined switch.
        * doc/cpp.texi: Document new macros.

        * c-c++-common/lsan/sanitize-undefined-macro.c: New test.
---
 gcc/ChangeLog                                        |  6 ++++++
 gcc/cppbuiltin.c                                     |  3 +++
 gcc/doc/cpp.texi                                     |  3 +++
 gcc/testsuite/ChangeLog                              |  4 ++++
 .../c-c++-common/ubsan/sanitize-ubsan-macro.c        | 12 ++++++++++++
 5 files changed, 28 insertions(+)
 create mode 100644 gcc/testsuite/c-c++-common/ubsan/sanitize-ubsan-macro.c

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7b773167433..4f99190ca0c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-21  Kamil Rytarowski  <n...@gmx.com>
+
+       * cppbuiltin.c (define_builtin_macros_for_compilation_flags): Add new
+       builtin __SANITIZE_UNDEFINED__ macros for fsanitize=undefined switch.
+       * doc/cpp.texi: Document new macros.
+
 2019-09-20  Jonas Pfeil  <jonas.pf...@uli-ulm.de>

        * config/microblaze/microblaze.h (ASM_OUTPUT_SKIP): Use
diff --git a/gcc/cppbuiltin.c b/gcc/cppbuiltin.c
index 60e5bedc366..221fb68b575 100644
--- a/gcc/cppbuiltin.c
+++ b/gcc/cppbuiltin.c
@@ -93,6 +93,9 @@ define_builtin_macros_for_compilation_flags (cpp_reader 
*pfile)
   if (flag_sanitize & SANITIZE_ADDRESS)
     cpp_define (pfile, "__SANITIZE_ADDRESS__");

+  if (flag_sanitize & SANITIZE_UNDEFINED)
+    cpp_define (pfile, "__SANITIZE_UNDEFINED__");
+
   if (flag_sanitize & SANITIZE_THREAD)
     cpp_define (pfile, "__SANITIZE_THREAD__");

diff --git a/gcc/doc/cpp.texi b/gcc/doc/cpp.texi
index f2de39a270c..3145d3ebab4 100644
--- a/gcc/doc/cpp.texi
+++ b/gcc/doc/cpp.texi
@@ -2359,6 +2359,9 @@ in use.
 This macro is defined, with value 1, when @option{-fsanitize=address}
 or @option{-fsanitize=kernel-address} are in use.

+@item __SANITIZE_UNDEFINED__
+This macro is defined, with value 1, when @option{-fsanitize=undefined} is in 
use.
+
 @item __SANITIZE_THREAD__
 This macro is defined, with value 1, when @option{-fsanitize=thread} is in use.

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 05c25ee28ce..e35880b1b2f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-21  Kamil Rytarowski  <n...@gmx.com>
+
+       * c-c++-common/usan/sanitize-undefined-macro.c: New test.
+
 2019-09-20  Iain Sandoe  <i...@sandoe.co.uk>

        * gcc.target/i386/naked-1.c: Alter options to use non-
diff --git a/gcc/testsuite/c-c++-common/ubsan/sanitize-ubsan-macro.c 
b/gcc/testsuite/c-c++-common/ubsan/sanitize-ubsan-macro.c
new file mode 100644
index 00000000000..ecca41da32e
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/ubsan/sanitize-ubsan-macro.c
@@ -0,0 +1,12 @@
+/* Check that -fsanitize=undefined options defines __SANITIZE_UNDEFINED__ 
macros.  */
+/* { dg-do compile } */
+/* { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } */
+
+int
+main ()
+{
+#ifndef __SANITIZE_UNDEFINED__
+  bad construction
+#endif
+  return 0;
+}
--
2.23.0

Reply via email to