diff options
author | Jakub Jelinek <jakub@redhat.com> | 2017-03-07 06:11:14 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2017-03-07 06:11:14 +0000 |
commit | 913ca3e6cb5748b051064c285a283c7151202504 (patch) | |
tree | 650681b7c596b0039d28f13112a1d8d99a50ca8c | |
parent | ebe90a15ce29a9583f788c0e0142476ba628089e (diff) |
PR sanitizer/79897
* ubsan.c (ubsan_encode_value): Call mark_addressable on the
temporary.
* c-c++-common/ubsan/pr79897.c: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@245945 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/ubsan/pr79897.c | 15 | ||||
-rw-r--r-- | gcc/ubsan.c | 1 |
4 files changed, 27 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2727acd1929..eb06b5ab2eb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-03-07 Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/79897 + * ubsan.c (ubsan_encode_value): Call mark_addressable on the + temporary. + 2017-03-06 Jakub Jelinek <jakub@redhat.com> PR c++/79821 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2f27e4b535c..9c8b87e90c7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-03-07 Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/79897 + * c-c++-common/ubsan/pr79897.c: New test. + 2017-03-06 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/79571 diff --git a/gcc/testsuite/c-c++-common/ubsan/pr79897.c b/gcc/testsuite/c-c++-common/ubsan/pr79897.c new file mode 100644 index 00000000000..0dadcffe98d --- /dev/null +++ b/gcc/testsuite/c-c++-common/ubsan/pr79897.c @@ -0,0 +1,15 @@ +/* PR sanitizer/79897 */ +/* { dg-do compile } */ +/* { dg-options "-fsanitize=enum -O2" } */ + +enum E +{ + A = 0, + B = ~0U + 1LL +} x = A; + +int +main () +{ + return x != A; +} diff --git a/gcc/ubsan.c b/gcc/ubsan.c index 11a41e1dc53..17965efde5c 100644 --- a/gcc/ubsan.c +++ b/gcc/ubsan.c @@ -145,6 +145,7 @@ ubsan_encode_value (tree t, bool in_expand_p) code by making vars unnecessarily addressable. */ tree var = create_tmp_var (type); tree tem = build2 (MODIFY_EXPR, void_type_node, var, t); + mark_addressable (var); if (in_expand_p) { rtx mem |