This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[tree-ssa] Merge results as of 2003-05-06


This merge has been quite nasty.  I still haven't checked it in
because there are few regressions that are in areas that Jeff and
Jason have been recently, and they have volunteered to take a
look.

What's more convenient for you guys?  Should I commit the merge
or would you rather apply the patch to your local trees?  I'd
rather commit the merge first, so that we don't have to start
swapping patches back and forth.

The regressions don't look too serious and they all seem to be in
localized spots, so I wouldn't mind committing the merge and work
on fixing these regressions.

If you'd rather apply the patch to your local trees:

http://people.redhat.com/dnovillo/pub/20030506-tree-ssa-mainline-merge.diff.bz2


There's one patch that I had to apply to the C++ front end that
I'd like a second opinion on:

===================================================================
RCS file: RCS/decl.c,v
retrieving revision 1.1
diff -dup -r1.1 decl.c
--- decl.c	2003/05/06 01:03:40	1.1
+++ decl.c	2003/05/06 19:40:25
@@ -10542,7 +10542,8 @@ grokdeclarator (tree declarator,
 	 array or function or pointer, and DECLARATOR has had its
 	 outermost layer removed.  */
 
-      if (type == error_mark_node)
+      if (type == error_mark_node
+	  && declarator != error_mark_node)
 	{
 	  if (TREE_CODE (declarator) == SCOPE_REF)
 	    declarator = TREE_OPERAND (declarator, 1);

We were aborting in g++.old-deja/g++.oliva/template1.C after
emitting two error messages on the code.  The problem is that
grokdeclarator was trying to get the operand from
error_mark_node.  The patch prevents that, but I'm not sure if
it's the right fix.  For that test, we now emit:

g++.old-deja/g++.oliva/template1.C:10: error: `dim' has not been declared
g++.old-deja/g++.oliva/template1.C:10: error: `dim' has not been declared
g++.old-deja/g++.oliva/template1.C: In function `void bar()':
g++.old-deja/g++.oliva/template1.C:14: error: no matching function for call to `foo<0>::bar(int)'
g++.old-deja/g++.oliva/template1.C:10: note: candidates are: static void foo<P>::bar() [with int P = 0]

In contrast, mainline emits the 'confused by earlier messages' error.


Thanks.  Diego.

-----------------------------------------------------------------------------
20030506/gcc.sum:
-----------------------------------------------------------------------------
FAIL: gcc.c-torture/execute/20011024-1.c compilation
FAIL: gcc.c-torture/execute/980526-1.c compilation
FAIL: gcc.misc-tests/bprob-2.c compilation
	 
    These have been introduced by the new remove_useless_stmts_and_vars
    In the case of 20011024-1.c, we are removing the
    FUNCTION_DECL for abort, which causes
    dwarf2out:add_abstract_origin_attribute to get very confused.
    I haven't looked at the other two, but they show the same
    error and are fixed if I undo the change.


FAIL: gcc.c-torture/execute/string-opt-18.c compilation
FAIL: gcc.c-torture/execute/string-opt-18.c execution
FAIL: gcc.c-torture/execute/string-opt-18.c execution
FAIL: gcc.c-torture/execute/string-opt-18.c execution
FAIL: gcc.c-torture/execute/string-opt-18.c execution
FAIL: gcc.c-torture/execute/string-opt-18.c execution

    These are due to a new builtin (stpcpy).  This is the test I
    was telling you about today, Jeff.


-------------------------------------------------------------------------------


20030506/g++.sum:

FAIL: g++.dg/compat/eh/new1 x_tst.o compile
FAIL: g++.dg/abi/cookie2.C (test for excess errors)
FAIL: g++.dg/eh/new1.C (test for excess errors)
FAIL: g++.dg/init/new5.C (test for excess errors)
FAIL: g++.old-deja/g++.abi/arraynew.C (test for excess errors)
FAIL: g++.old-deja/g++.brendan/new3.C (test for excess errors)
FAIL: g++.old-deja/g++.jason/vecdel.C (test for excess errors)
FAIL: g++.old-deja/g++.law/ctors15.C (test for excess errors)
FAIL: g++.old-deja/g++.mike/eh46.C (test for excess errors)
FAIL: g++.old-deja/g++.oliva/delete2.C (test for excess errors)
FAIL: g++.old-deja/g++.oliva/delete3.C (test for excess errors)
FAIL: g++.old-deja/g++.other/new3.C (test for excess errors)
FAIL: g++.old-deja/g++.pt/crash49.C (test for excess errors)

    Jason, all these fail while trying to add a temp variable in
    gimple_add_tmp_var.  The variable we are trying to add
    already has a TREE_CHAIN, which triggers an abort.


FAIL: g++.dg/eh/cond1.C (test for excess errors)

    This is the problem I mentioned in
    http://gcc.gnu.org/ml/gcc/2003-04/msg00386.html about the
    gimplifier trying to put the call to __cxa_throw on the RHS
    of an assignment.  The patch in that URL fixes the test case
    but I'm not sure that it is the correct one.

    
FAIL: g++.dg/eh/cleanup1.C (test for excess errors)

    This causes the compiler to enter an infinite loop in
    function.c:preserve_temp_slots.  The linked list temp_slots
    is circular.  The program compiles fine with
    -fdisable-simple.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]