aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDale Johannesen <dalej@apple.com>2004-09-14 00:35:02 +0000
committerDale Johannesen <dalej@gcc.gnu.org>2004-09-14 00:35:02 +0000
commitc1bbfd3cf8376f1a145632e57f07b77a06926c1b (patch)
tree7d288e94ea4d246188923a80672ebeef3380b496
parent3590f0a64a649dad84c2819a54226b5faf9fcb50 (diff)
downloadgcc-c1bbfd3cf8376f1a145632e57f07b77a06926c1b.zip
gcc-c1bbfd3cf8376f1a145632e57f07b77a06926c1b.tar.gz
gcc-c1bbfd3cf8376f1a145632e57f07b77a06926c1b.tar.bz2
Fix PR 17408 and PR 17409.
From-SVN: r87468
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/c-decl.c7
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr17408.c5
4 files changed, 21 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 839e78b..905684c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2004-09-13 Dale Johannesen <dalej@apple.com>
+
+ PR 17408
+ PR 17409
+ * c-decl.c (start_decl): Repair TREE_STATIC for initialized
+ objects declared extern.
+
2004-09-14 Paul Brook <paul@codesourcery.com>
* config/arm/arm.c (arm_expand_prologue): Make args_to_push a
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 1d6c40d..efed682 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -3012,8 +3012,11 @@ start_decl (struct c_declarator *declarator, struct c_declspecs *declspecs,
TEM may equal DECL or it may be a previous decl of the same name. */
tem = pushdecl (decl);
- if (initialized)
- DECL_EXTERNAL (tem) = 0;
+ if (initialized && DECL_EXTERNAL (tem))
+ {
+ DECL_EXTERNAL (tem) = 0;
+ TREE_STATIC (tem) = 1;
+ }
return tem;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f81a893..b43b488 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2004-09-13 Dale Johannesen <dalej@apple.com>
+
+ * gcc.c-torture/compile/pr17408.c: New test case.
+
2004-09-13 Mark Mitchell <mark@codesourcery.com>
PR c++/16716
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr17408.c b/gcc/testsuite/gcc.c-torture/compile/pr17408.c
new file mode 100644
index 0000000..4819673
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr17408.c
@@ -0,0 +1,5 @@
+/* PRs 17408 and 17409, with different options. */
+extern int t;
+extern int t = 0;
+void f(){t =0;}
+void g(){h(&t);}