mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 22:51:06 +08:00
re PR sanitizer/65367 (indefinite loop occurs with sanitize enabled and certain optimization options)
PR sanitizer/65367 * ubsan.c (ubsan_expand_objsize_ifn): Update GSI instead of GSI_ORIG when only removing the statement. Handle expanding UBSAN_OBJECT_SIZE separately. * c-c++-common/ubsan/pr65367.c: New test. Co-Authored-By: Jakub Jelinek <jakub@redhat.com> From-SVN: r221325
This commit is contained in:
parent
dac2639d6d
commit
0757674c83
@ -1,3 +1,11 @@
|
||||
2015-03-10 Marek Polacek <polacek@redhat.com>
|
||||
Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR sanitizer/65367
|
||||
* ubsan.c (ubsan_expand_objsize_ifn): Update GSI instead of GSI_ORIG
|
||||
when only removing the statement. Handle expanding UBSAN_OBJECT_SIZE
|
||||
separately.
|
||||
|
||||
2015-03-10 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/65286
|
||||
|
@ -1,3 +1,8 @@
|
||||
2015-03-10 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR sanitizer/65367
|
||||
* c-c++-common/ubsan/pr65367.c: New test.
|
||||
|
||||
2015-03-10 Ilya Enkovich <ilya.enkovich@intel.com>
|
||||
|
||||
* lib/mpx-dg.exp (mpx_link_flags): Set path to wrappers library.
|
||||
|
9
gcc/testsuite/c-c++-common/ubsan/pr65367.c
Normal file
9
gcc/testsuite/c-c++-common/ubsan/pr65367.c
Normal file
@ -0,0 +1,9 @@
|
||||
/* PR sanitizer/65367 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-fno-tree-ccp -fno-tree-copy-prop -fno-tree-dominator-opts -fno-tree-fre -fsanitize=object-size" } */
|
||||
|
||||
int
|
||||
foo (char *p)
|
||||
{
|
||||
return *((const char *) "") - *p;
|
||||
}
|
@ -1022,11 +1022,16 @@ ubsan_expand_objsize_ifn (gimple_stmt_iterator *gsi)
|
||||
|
||||
/* Point GSI to next logical statement. */
|
||||
*gsi = gsi_start_bb (fallthru_bb);
|
||||
|
||||
/* Get rid of the UBSAN_OBJECT_SIZE call from the IR. */
|
||||
unlink_stmt_vdef (stmt);
|
||||
gsi_remove (&gsi_orig, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Get rid of the UBSAN_OBJECT_SIZE call from the IR. */
|
||||
unlink_stmt_vdef (stmt);
|
||||
gsi_remove (&gsi_orig, true);
|
||||
gsi_remove (gsi, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user