diff options
author | Jakub Jelinek <jakub@redhat.com> | 2017-03-27 10:25:01 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2017-03-27 10:25:01 +0200 |
commit | 7cd200f63f80396e9ddfe163a3fed86fd2aed672 (patch) | |
tree | 9d890861f781d818c9cf51163d9891b54bed78b5 /gcc | |
parent | 79f512ffebee22885684ff63bc3d66e7e6db9b4b (diff) | |
download | gcc-7cd200f63f80396e9ddfe163a3fed86fd2aed672.zip gcc-7cd200f63f80396e9ddfe163a3fed86fd2aed672.tar.gz gcc-7cd200f63f80396e9ddfe163a3fed86fd2aed672.tar.bz2 |
re PR sanitizer/80168 (ICE in make_decl_rtl, at varasm.c:1311 w/ VLA and -fsanitize=address)
PR sanitizer/80168
* asan.c (instrument_derefs): Copy over last operand from
original COMPONENT_REF to the new COMPONENT_REF with
DECL_BIT_FIELD_REPRESENTATIVE.
* ubsan.c (instrument_object_size): Likewise.
* gcc.dg/asan/pr80168.c: New test.
From-SVN: r246492
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/asan.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/asan/pr80168.c | 12 | ||||
-rw-r--r-- | gcc/ubsan.c | 2 |
5 files changed, 28 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8dcd897..f2f40b8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2017-03-27 Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/80168 + * asan.c (instrument_derefs): Copy over last operand from + original COMPONENT_REF to the new COMPONENT_REF with + DECL_BIT_FIELD_REPRESENTATIVE. + * ubsan.c (instrument_object_size): Likewise. + 2017-03-27 Richard Biener <rguenther@suse.de> PR tree-optimization/80170 @@ -1868,7 +1868,8 @@ instrument_derefs (gimple_stmt_iterator *iter, tree t, tree repr = DECL_BIT_FIELD_REPRESENTATIVE (TREE_OPERAND (t, 1)); instrument_derefs (iter, build3 (COMPONENT_REF, TREE_TYPE (repr), TREE_OPERAND (t, 0), repr, - NULL_TREE), location, is_store); + TREE_OPERAND (t, 2)), + location, is_store); return; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0b04afe..3a8e22e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-03-27 Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/80168 + * gcc.dg/asan/pr80168.c: New test. + 2017-03-27 Richard Biener <rguenther@suse.de> PR tree-optimization/80170 diff --git a/gcc/testsuite/gcc.dg/asan/pr80168.c b/gcc/testsuite/gcc.dg/asan/pr80168.c new file mode 100644 index 0000000..de23345 --- /dev/null +++ b/gcc/testsuite/gcc.dg/asan/pr80168.c @@ -0,0 +1,12 @@ +/* PR sanitizer/80168 */ +/* { dg-do compile } */ + +int a; + +int +foo (void) +{ + struct S { int c[a]; int q : 8; int e : 4; } f; + f.e = 4; + return f.e; +} diff --git a/gcc/ubsan.c b/gcc/ubsan.c index 17965ef..323c1cc 100644 --- a/gcc/ubsan.c +++ b/gcc/ubsan.c @@ -1772,7 +1772,7 @@ instrument_object_size (gimple_stmt_iterator *gsi, bool is_lhs) { tree repr = DECL_BIT_FIELD_REPRESENTATIVE (TREE_OPERAND (t, 1)); t = build3 (COMPONENT_REF, TREE_TYPE (repr), TREE_OPERAND (t, 0), - repr, NULL_TREE); + repr, TREE_OPERAND (t, 2)); } break; case ARRAY_REF: |