aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorZack Weinberg <zack@gcc.gnu.org>2004-03-04 05:49:06 +0000
committerZack Weinberg <zack@gcc.gnu.org>2004-03-04 05:49:06 +0000
commit3205a71e4c6b228e3b7ea99a657b4b42ffa3db69 (patch)
tree53b0c86b0cf1541d9e8b95a2eb630d9d8c0f69fe /gcc
parente8d8a0344bb901cfa7e19c4f7f85bed9f38dd1f8 (diff)
downloadgcc-3205a71e4c6b228e3b7ea99a657b4b42ffa3db69.zip
gcc-3205a71e4c6b228e3b7ea99a657b4b42ffa3db69.tar.gz
gcc-3205a71e4c6b228e3b7ea99a657b4b42ffa3db69.tar.bz2
re PR c/13728 (Duplicate parameter names not detected)
PR 13728 * c-decl.c (diagnose_mismatched_decls): Issue an error for two parameters with the same name, unless one is a forward decl. Do not issue a redundant-redeclaration warning for forward decls of parameters. * gcc.dg/decl-4.c: New testcase. From-SVN: r78888
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog38
-rw-r--r--gcc/c-decl.c23
-rw-r--r--gcc/testsuite/ChangeLog55
-rw-r--r--gcc/testsuite/gcc.dg/decl-4.c10
4 files changed, 81 insertions, 45 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2b8701e..f1dd35f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2004-03-03 Zack Weinberg <zack@codesourcery.com>
+
+ PR 13728
+ * c-decl.c (diagnose_mismatched_decls): Issue an error for two
+ parameters with the same name, unless one is a forward decl.
+ Do not issue a redundant-redeclaration warning for forward
+ decls of parameters.
+
2004-03-04 David Edelsohn <edelsohn@gnu.org>
* doc/install.texi (*-ibm-aix*): Document use of Bash to speed up
@@ -94,7 +102,7 @@
2004-03-03 Stuart Hastings <stuart@apple.com>
* gcc/config.gcc: Arrange for Darwin/x86 to build libgcc_eh.a.
-
+
2004-03-03 Eric Botcazou <ebotcazou@libertysurf.fr>
* config/sparc/sparc.c (noov_compare64_op): Fix typo.
@@ -389,10 +397,10 @@
2004-03-02 Richard Henderson <rth@redhat.com>
- PR middle-end/11767
- * coverage.c (coverage_counter_ref): Set MEM_NOTRAP_P.
- * optabs.c (prepare_cmp_insn): Force trapping memories to registers
- before the compare, if flag_non_call_exceptions.
+ PR middle-end/11767
+ * coverage.c (coverage_counter_ref): Set MEM_NOTRAP_P.
+ * optabs.c (prepare_cmp_insn): Force trapping memories to registers
+ before the compare, if flag_non_call_exceptions.
2004-03-02 Richard Henderson <rth@redhat.com>
@@ -873,7 +881,7 @@
enable_rtl_dump_file): Declare.
2004-02-27 Eric Botcazou <ebotcazou@act-europe.fr>
- Roger Sayle <roger@eyesopen.com>
+ Roger Sayle <roger@eyesopen.com>
* fold-const.c (fold): Revert 2004-02-25 change. Use the original
operands to build a tree with swapped operands.
@@ -1084,11 +1092,11 @@
2004-02-24 Aldy Hernandez <aldyh@redhat.com>
- * config/rs6000/spe.md (spe_fix_truncsfsi2): Delete.
- (spe_fixuns_truncsfsi2): Delete.
+ * config/rs6000/spe.md (spe_fix_truncsfsi2): Delete.
+ (spe_fixuns_truncsfsi2): Delete.
- * config/rs6000/rs6000.md (fix_truncsfsi2): Delete.
- (fixuns_truncsfsi2): Delete.
+ * config/rs6000/rs6000.md (fix_truncsfsi2): Delete.
+ (fixuns_truncsfsi2): Delete.
2004-02-24 Josef Zlomek <zlomekj@suse.cz>
@@ -1578,7 +1586,7 @@
* config/i386/i386.c: Rename pni to sse3.
* config/i386/i386.h: Likewise.
- * config/i386/i386.md: Likewise.
+ * config/i386/i386.md: Likewise.
* config/i386/pmmintrin.h: Likewise.
* doc/extend.texi: Likewise.
* doc/invoke.texi: Likewise.
@@ -1628,7 +1636,7 @@
(movdf_softfloat64): Ditto.
2004-02-23 Fariborz Jahanian <fjahanian@apple.com>
- * config/rs6000/rs6000.c (function_arg): call to
+ * config/rs6000/rs6000.c (function_arg): call to
rs6000_mixed_function_arg for DFmode moved to allow
normal DFmode incoming register assignment.
@@ -1668,7 +1676,7 @@
TARGET_DEFAULT_SHORT_ENUMS. Update the description.
2004-02-23 Eric Botcazou <ebotcazou@libertysurf.fr>
- Falk Hueffner <falk@debian.org>
+ Falk Hueffner <falk@debian.org>
PR c/14188
* builtins.c (expand_builtin_va_arg): Emit an informative message
@@ -1810,7 +1818,7 @@
2004-02-20 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
- PR c++/12007
+ PR c++/12007
* dbxout.c (dbxout_parms): Check that DECL_RTL and DECL_INCOMING_RTL
are set for parameters before outputing debugging information.
@@ -1860,7 +1868,7 @@
2004-02-20 Matt Kraai <kraai@alumni.cmu.edu>
* doc/install.texi (Building the Ada compiler): Remove
- example.
+ example.
2004-02-20 James E Wilson <wilson@specifixinc.com>
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 1145363..5a4a28f 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -1211,8 +1211,18 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl,
}
}
}
- else /* VAR_DECL */
+ else /* PARM_DECL, VAR_DECL */
{
+ /* Redeclaration of a PARM_DECL is invalid unless this is the
+ real position of a forward-declared parameter (GCC extension). */
+ if (TREE_CODE (newdecl) == PARM_DECL
+ && (!TREE_ASM_WRITTEN (olddecl) || TREE_ASM_WRITTEN (newdecl)))
+ {
+ error ("%Jredefinition of parameter '%D'", newdecl, newdecl);
+ locate_old_decl (olddecl, error);
+ return false;
+ }
+
/* These bits are only type qualifiers when applied to objects. */
if (TREE_THIS_VOLATILE (newdecl) != TREE_THIS_VOLATILE (olddecl))
{
@@ -1241,10 +1251,13 @@ diagnose_mismatched_decls (tree newdecl, tree olddecl,
&& warn_redundant_decls
/* Don't warn about a function declaration followed by a
definition. */
- && !(TREE_CODE (newdecl) == FUNCTION_DECL
- && DECL_INITIAL (newdecl) && !DECL_INITIAL (olddecl))
- /* Don't warn about an extern followed by a definition. */
- && !(DECL_EXTERNAL (olddecl) && !DECL_EXTERNAL (newdecl)))
+ && !(TREE_CODE (newdecl) == FUNCTION_DECL
+ && DECL_INITIAL (newdecl) && !DECL_INITIAL (olddecl))
+ /* Don't warn about an extern followed by a definition. */
+ && !(DECL_EXTERNAL (olddecl) && !DECL_EXTERNAL (newdecl))
+ /* Don't warn about forward parameter decls. */
+ && !(TREE_CODE (newdecl) == PARM_DECL
+ && TREE_ASM_WRITTEN (olddecl) && !TREE_ASM_WRITTEN (newdecl)))
{
warning ("%Jredundant redeclaration of '%D'", newdecl, newdecl);
warned = true;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 07317d5..b0edee4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2004-03-03 Zack Weinberg <zack@codesourcery.com>
+
+ PR 13728
+ * gcc.dg/decl-4.c: New testcase.
+
2004-03-03 Kazu Hirata <kazu@cs.umass.edu>
* gcc.dg/torture/builtin-explog-1.c (PREC): Make it the same
@@ -23,7 +28,7 @@
PR c++/14360
* g++.old-deja/g++.ns/koenig5.C: Remove some error markers.
-
+
PR c++/14361
* g++.dg/parse/defarg7.C: New test.
@@ -92,8 +97,8 @@
2004-02-26 Richard Henderson <rth@redhat.com>
- * g++.dg/ext/attrib10.C: Mark for warning.
- * gcc.dg/attr-alias-1.c: New.
+ * g++.dg/ext/attrib10.C: Mark for warning.
+ * gcc.dg/attr-alias-1.c: New.
2004-02-26 Richard Henderson <rth@redhat.com>
@@ -105,28 +110,28 @@
* lib/target-supports.exp (check-iconv-available): New function.
* lib/gcc-dg.exp (dg-require-iconv): New function.
Use above.
- * gcc.dg/charset: New directory.
- * gcc.dg/charset/charset.exp: New file.
- * gcc.dg/charset/asm1.c: Ditto.
- * gcc.dg/charset/asm2.c: Ditto.
- * gcc.dg/charset/asm3.c: Ditto.
- * gcc.dg/charset/asm4.c: Ditto.
- * gcc.dg/charset/asm5.c: Ditto.
- * gcc.dg/charset/attribute1.c: Ditto.
- * gcc.dg/charset/attribute2.c: Ditto.
- * gcc.dg/charset/string1.c: Ditto.
- * g++.dg/charset: New directory.
- * g++.dg/dg.exp: Add here. Special options.
- * g++.dg/charset/charset.exp: New file.
- * g++.dg/charset/asm1.c: Ditto.
- * g++.dg/charset/asm2.c: Ditto.
- * g++.dg/charset/asm3.c: Ditto.
- * g++.dg/charset/asm4.c: Ditto.
- * g++.dg/charset/attribute1.c: Ditto.
- * g++.dg/charset/attribute2.c: Ditto.
- * g++.dg/charset/extern1.cc: Ditto.
- * g++.dg/charset/extern2.cc: Ditto.
- * g++.dg/charset/string1.c: Ditto.
+ * gcc.dg/charset: New directory.
+ * gcc.dg/charset/charset.exp: New file.
+ * gcc.dg/charset/asm1.c: Ditto.
+ * gcc.dg/charset/asm2.c: Ditto.
+ * gcc.dg/charset/asm3.c: Ditto.
+ * gcc.dg/charset/asm4.c: Ditto.
+ * gcc.dg/charset/asm5.c: Ditto.
+ * gcc.dg/charset/attribute1.c: Ditto.
+ * gcc.dg/charset/attribute2.c: Ditto.
+ * gcc.dg/charset/string1.c: Ditto.
+ * g++.dg/charset: New directory.
+ * g++.dg/dg.exp: Add here. Special options.
+ * g++.dg/charset/charset.exp: New file.
+ * g++.dg/charset/asm1.c: Ditto.
+ * g++.dg/charset/asm2.c: Ditto.
+ * g++.dg/charset/asm3.c: Ditto.
+ * g++.dg/charset/asm4.c: Ditto.
+ * g++.dg/charset/attribute1.c: Ditto.
+ * g++.dg/charset/attribute2.c: Ditto.
+ * g++.dg/charset/extern1.cc: Ditto.
+ * g++.dg/charset/extern2.cc: Ditto.
+ * g++.dg/charset/string1.c: Ditto.
2004-02-26 Mark Mitchell <mark@codesourcery.com>
diff --git a/gcc/testsuite/gcc.dg/decl-4.c b/gcc/testsuite/gcc.dg/decl-4.c
new file mode 100644
index 0000000..acc7e77
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/decl-4.c
@@ -0,0 +1,10 @@
+/* Redeclaration of parameters is an error. PR 13728. */
+/* { dg-do compile } */
+
+void f (int fred, /* { dg-error "previous definition" "" } */
+ int fred); /* { dg-error "redefinition of parameter" "" } */
+
+void f2 (int fred, /* { dg-error "previous definition" "" } */
+ int fred) /* { dg-error "redefinition of parameter" "" } */
+{
+}