diff options
author | trippels <trippels@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-03-04 17:28:56 +0000 |
---|---|---|
committer | trippels <trippels@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-03-04 17:28:56 +0000 |
commit | 45e87ca9abf8edb4e36ab704e9fdae03ea2fe94c (patch) | |
tree | 7ce90b82daec105b46dc60b65c6c3e744d05dd89 /include | |
parent | 36e549211c43f8bb653897505be3cd6e75bc461b (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | include/ansidecl.h | 9 |
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. */ |