summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authortrippels <trippels@138bc75d-0d04-0410-961f-82ee72b054a4>2015-03-04 17:28:56 +0000
committertrippels <trippels@138bc75d-0d04-0410-961f-82ee72b054a4>2015-03-04 17:28:56 +0000
commit45e87ca9abf8edb4e36ab704e9fdae03ea2fe94c (patch)
tree7ce90b82daec105b46dc60b65c6c3e744d05dd89 /include
parent36e549211c43f8bb653897505be3cd6e75bc461b (diff)
downloadgcc-45e87ca9abf8edb4e36ab704e9fdae03ea2fe94c.tar.gz
Fix PR65261
Running bootstrap-ubsan on ppc64le shows many instances of: libcpp/lex.c:552:30: runtime error: load of misaligned address 0x01001f31d37a for type 'const uchar', which requires 16 byte alignment But the unaligned vector loads are intended in this case, because they are preferable to forced-alignment on POWER8. So just silence the ubsan errors. 2015-03-02 Markus Trippelsdorf <markus@trippelsdorf.de> include/ PR target/65261 * ansidecl.h (ATTRIBUTE_NO_SANITIZE_UNDEFINED): New macro. libcpp/ PR target/65261 * lex.c (search_line_fast): Silence ubsan errors. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221190 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'include')
-rw-r--r--include/ChangeLog5
-rw-r--r--include/ansidecl.h9
2 files changed, 14 insertions, 0 deletions
diff --git a/include/ChangeLog b/include/ChangeLog
index 689873b26b3..bd072ae59b4 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,8 @@
+2015-03-02 Markus Trippelsdorf <markus@trippelsdorf.de>
+
+ PR target/65261
+ * ansidecl.h (ATTRIBUTE_NO_SANITIZE_UNDEFINED): New macro.
+
2015-02-19 Pedro Alves <palves@redhat.com>
* floatformat.h [__cplusplus]: Wrap in extern "C".
diff --git a/include/ansidecl.h b/include/ansidecl.h
index 0fb23bba792..04d75c33f74 100644
--- a/include/ansidecl.h
+++ b/include/ansidecl.h
@@ -276,6 +276,15 @@ So instead we use the macro below and test it against specific values. */
# endif /* GNUC >= 4.3 */
#endif /* ATTRIBUTE_HOT */
+/* Attribute 'no_sanitize_undefined' was valid as of gcc 4.9. */
+#ifndef ATTRIBUTE_NO_SANITIZE_UNDEFINED
+# if (GCC_VERSION >= 4009)
+# define ATTRIBUTE_NO_SANITIZE_UNDEFINED __attribute__ ((no_sanitize_undefined))
+# else
+# define ATTRIBUTE_NO_SANITIZE_UNDEFINED
+# endif /* GNUC >= 4.9 */
+#endif /* ATTRIBUTE_NO_SANITIZE_UNDEFINED */
+
/* We use __extension__ in some places to suppress -pedantic warnings
about GCC extensions. This feature didn't work properly before
gcc 2.8. */