summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2009-01-24 21:36:09 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2009-01-24 21:36:09 +0000
commite7e7c0fe7891322de1bb0a8991ce4b04856f2f28 (patch)
tree8aa0cd10ba1655e3f28c1d19cd88b6abf511e564
parente6d46e2767b2c337435f59c720a6f50c4ea11d13 (diff)
downloadppe42-gcc-e7e7c0fe7891322de1bb0a8991ce4b04856f2f28.tar.gz
ppe42-gcc-e7e7c0fe7891322de1bb0a8991ce4b04856f2f28.zip
PR c/38957
* c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way as PLUS_EXPR. * gcc.dg/pr38957.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143654 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/c-typeck.c4
-rw-r--r--gcc/testsuite/ChangeLog9
-rw-r--r--gcc/testsuite/gcc.dg/pr38957.c16
4 files changed, 32 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0c957db3b6a..ecf9e467041 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2009-01-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/38957
+ * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
+ as PLUS_EXPR.
+
2009-01-24 Julian Brown <julian@codesourcery.com>
* config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index 35c8d232878..4b9b2b30d00 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -7226,8 +7226,10 @@ c_finish_return (tree retval)
{
switch (TREE_CODE (inner))
{
- CASE_CONVERT: case NON_LVALUE_EXPR:
+ CASE_CONVERT:
+ case NON_LVALUE_EXPR:
case PLUS_EXPR:
+ case POINTER_PLUS_EXPR:
inner = TREE_OPERAND (inner, 0);
continue;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7e40d4e4958..5425b0250da 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,8 +1,13 @@
-2009-01-24 David Billinghurst (billingd@gcc.gnu.org)
+2009-01-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/38957
+ * gcc.dg/pr38957.c: New test.
+
+2009-01-24 David Billinghurst <billingd@gcc.gnu.org>
PR fortran/38955
* gfortran.dg/array_constructor_24.f: Allow tolerance when
- comparing floats
+ comparing floats.
2009-01-24 Sebastian Pop <sebastian.pop@amd.com>
diff --git a/gcc/testsuite/gcc.dg/pr38957.c b/gcc/testsuite/gcc.dg/pr38957.c
new file mode 100644
index 00000000000..f94cd7627b4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr38957.c
@@ -0,0 +1,16 @@
+/* PR c/38957 */
+/* { dg-do compile } */
+
+char *
+foo (void)
+{
+ char a[2];
+ return a+1; /* { dg-warning "returns address of local variable" } */
+}
+
+char *
+bar (void)
+{
+ char a[2];
+ return a; /* { dg-warning "returns address of local variable" } */
+}
OpenPOWER on IntegriCloud