[Bug c++/20746] [4.0 only] Incorrect return value for covariant return function returning null ptr

2005-07-12 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-07-12 
11:29 ---
Subject: Bug 20746

CVSROOT:/cvs/gcc
Module name:gcc
Branch: gcc-4_0-branch
Changes by: [EMAIL PROTECTED]   2005-07-12 11:28:03

Modified files:
gcc/cp : ChangeLog class.c cp-tree.def cp-tree.h decl.c 
 decl2.c error.c method.c parser.c pt.c 
 semantics.c 
gcc/testsuite  : ChangeLog 
gcc/testsuite/g++.dg/overload: error1.C 
gcc/testsuite/g++.dg/parse: crash11.C 
gcc/testsuite/g++.old-deja/g++.benjamin: warn02.C 
gcc/testsuite/g++.old-deja/g++.brendan: arm2.C 
gcc/testsuite/g++.old-deja/g++.other: redecl2.C redecl4.C 
gcc/testsuite/g++.old-deja/g++.pt: memtemp78.C 
Added files:
gcc/testsuite/g++.dg/abi: covariant5.C 
gcc/testsuite/g++.dg/init: member1.C 
gcc/testsuite/g++.dg/other: crash-4.C 
gcc/testsuite/g++.dg/parse: crash26.C defarg9.C 

Log message:
cp:
PR c++/20678
* error.c (dump_expr) COMPONENT_REF case: Check DECL_NAME is not
null.

PR 21903
* cp-tree.def (DEFAULT_ARG): Document TREE_CHAIN use.
* parser.c (cp_parser_late_parsing_default_args): Propagate parsed
argument to any early instantiations.
* pt.c (tsubst_arg_types): Chain early instantiation of default
arg.

PR c++/20789
* decl.c (cp_finish_decl): Clear runtime runtime initialization if
in-class decl's initializer is bad.

PR c++/21929
* parser.c (struct cp_parser): Document that scope could be
error_mark.
(cp_parser_diagnose_invalid_type_name): Cope with error_mark for
scope.
(cp_parser_nested_name_specifier): Return NULL_TREE on error.
(cp_parser_postfix_expression): Deal with null or error_mark
scope.
(cp_parser_elaborated_type_specifier): Adjust
cp_parser_nested_name_specifier call.

PR c++/20746
* method.c (use_thunk): Protect covariant pointer return
adjustments from NULL pointers.
testsuite:
PR c++/20678
* g++.dg/other/crash-4.C: New.

PR 21903
* g++.dg/parse/defarg9.C: New.

PR c++/21929
* g++.dg/parse/crash26.C: New.

PR c++/20789
* g++.dg/init/member1.C: New.

PR c++/20746
* g++.dg/abi/covariant5.C: New.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=1.4648.2.63r2=1.4648.2.64
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/class.c.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=1.707.2.3r2=1.707.2.4
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/cp-tree.def.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=1.94.4.2r2=1.94.4.3
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/cp-tree.h.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=1.1106.2.8r2=1.1106.2.9
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl.c.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=1.1371.2.14r2=1.1371.2.15
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl2.c.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=1.770.2.2r2=1.770.2.3
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/error.c.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=1.279.2.1r2=1.279.2.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/method.c.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=1.322.4.4r2=1.322.4.5
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/parser.c.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=1.319.2.10r2=1.319.2.11
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/pt.c.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=1.978.2.12r2=1.978.2.13
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/semantics.c.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=1.463.2.4r2=1.463.2.5
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=1.5084.2.268r2=1.5084.2.269
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/abi/covariant5.C.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=NONEr2=1.1.10.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/init/member1.C.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=NONEr2=1.1.10.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/other/crash-4.C.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=NONEr2=1.1.8.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/overload/error1.C.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=1.2r2=1.2.112.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/crash26.C.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=NONEr2=1.1.8.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/parse/defarg9.C.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=NONEr2=1.1.10.1

[Bug c++/20746] [4.0 only] Incorrect return value for covariant return function returning null ptr

2005-07-12 Thread nathan at gcc dot gnu dot org

--- Additional Comments From nathan at gcc dot gnu dot org  2005-07-12 
11:29 ---
fixed on 4.0 branch

-- 
   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution||FIXED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20746


[Bug c++/20746] [4.0 only] Incorrect return value for covariant return function returning null ptr

2005-07-06 Thread giovannibajo at libero dot it

--- Additional Comments From giovannibajo at libero dot it  2005-07-06 
22:35 ---
I reopen the bug so we don't forget about this for 4.0.2.

Stephen, to clarify: we know that this is indeed a bug, and this is why it 
*was* fixed for 4.1. The fact is that the 4.0 serie is already out so we 
usually just consider regression fixes for it (that is, patches which fix 
problems appeared in 4.0 which were not present before). Since the code you 
provided never worked on any version of GCC, we assume it could wait another 
iteration up to 4.1. Anyway, Mark already approved it for 4.0.2 as an exception 
to the rule, so the fix will be present in that version.

-- 
   What|Removed |Added

 Status|RESOLVED|REOPENED
 Resolution|FIXED   |
Summary|Incorrect return value for  |[4.0 only] Incorrect return
   |covariant return function   |value for covariant return
   |returning null ptr  |function returning null ptr
   Target Milestone|4.1.0   |4.0.2


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20746