diff options
author | Jakub Jelinek <jakub@redhat.com> | 2013-08-13 18:58:46 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2013-08-13 18:58:46 +0200 |
commit | 99c2bd544a3f84ae1716a0d8d973c98fc0534f86 (patch) | |
tree | ec01d99db111aa47b904f9a5e9fe3b3d7d4535c4 /gcc | |
parent | 2efdbf0f3c085ca257f06acf045a8d9e8586df04 (diff) | |
download | gcc-99c2bd544a3f84ae1716a0d8d973c98fc0534f86.zip gcc-99c2bd544a3f84ae1716a0d8d973c98fc0534f86.tar.gz gcc-99c2bd544a3f84ae1716a0d8d973c98fc0534f86.tar.bz2 |
re PR middle-end/56417 (internal compiler error: verify_gimple failed)
PR sanitizer/56417
* asan.c (instrument_strlen_call): Fix typo in comment.
Use char * type even for the lhs of POINTER_PLUS_EXPR.
* gcc.dg/asan/pr56417.c: New test.
From-SVN: r201696
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/asan.c | 9 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/asan/pr56417.c | 9 |
4 files changed, 24 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2cf949b..682328e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-08-13 Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/56417 + * asan.c (instrument_strlen_call): Fix typo in comment. + Use char * type even for the lhs of POINTER_PLUS_EXPR. + 2013-08-13 Steve Ellcey <sellcey@mips.com> * config/mips/mips.md (prefetch): Use lw instead of ld on @@ -1635,7 +1635,7 @@ instrument_mem_region_access (tree base, tree len, access to the last byte of the argument; it uses the result of the call to deduce the offset of that last byte. - Upon completion, iff the call has actullay been instrumented, this + Upon completion, iff the call has actually been instrumented, this function returns TRUE and *ITER points to the statement logically following the built-in strlen function call *ITER was initially pointing to. Otherwise, the function returns FALSE and *ITER @@ -1666,10 +1666,10 @@ instrument_strlen_call (gimple_stmt_iterator *iter) /* Instrument the access to the first byte of str_arg. i.e: _1 = str_arg; instrument (_1); */ + tree cptr_type = build_pointer_type (char_type_node); gimple str_arg_ssa = gimple_build_assign_with_ops (NOP_EXPR, - make_ssa_name (build_pointer_type - (char_type_node), NULL), + make_ssa_name (cptr_type, NULL), str_arg, NULL); gimple_set_location (str_arg_ssa, loc); gimple_stmt_iterator gsi = *iter; @@ -1688,8 +1688,7 @@ instrument_strlen_call (gimple_stmt_iterator *iter) pointer_plus expr: (_1 + len). */ gimple stmt = gimple_build_assign_with_ops (POINTER_PLUS_EXPR, - make_ssa_name (TREE_TYPE (str_arg), - NULL), + make_ssa_name (cptr_type, NULL), gimple_assign_lhs (str_arg_ssa), len); gimple_set_location (stmt, loc); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c264264..6e1b630 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-08-13 Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/56417 + * gcc.dg/asan/pr56417.c: New test. + 2013-08-13 Eric Botcazou <ebotcazou@adacore.com> * gnat.dg/loop_optimization16.adb: New test. diff --git a/gcc/testsuite/gcc.dg/asan/pr56417.c b/gcc/testsuite/gcc.dg/asan/pr56417.c new file mode 100644 index 0000000..b7eabf1 --- /dev/null +++ b/gcc/testsuite/gcc.dg/asan/pr56417.c @@ -0,0 +1,9 @@ +/* PR sanitizer/56417 */ +/* { dg-do compile } */ +/* { dg-options "-w" } */ + +int +foo (void) +{ + return __builtin_strlen (&foo); +} |