aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2013-08-13 18:58:46 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2013-08-13 18:58:46 +0200
commit99c2bd544a3f84ae1716a0d8d973c98fc0534f86 (patch)
treeec01d99db111aa47b904f9a5e9fe3b3d7d4535c4 /gcc
parent2efdbf0f3c085ca257f06acf045a8d9e8586df04 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/asan.c9
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/asan/pr56417.c9
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
diff --git a/gcc/asan.c b/gcc/asan.c
index 78321b0..1756b07 100644
--- a/gcc/asan.c
+++ b/gcc/asan.c
@@ -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);
+}