This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
[tree-ssa] Merge results as of 2003-05-06
- From: Diego Novillo <dnovillo at redhat dot com>
- To: gcc at gcc dot gnu dot org
- Cc: Jason Merrill <jason at redhat dot com>, Jeff Law <law at redhat dot com>
- Date: Tue, 6 May 2003 23:20:01 -0400
- Subject: [tree-ssa] Merge results as of 2003-05-06
- Organization: Red Hat Canada
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.