This is the mail archive of the gcc-patches@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]

more tru64 fixes


On Wed, Mar 27, 2002 at 09:12:25PM +0100, Rainer Orth wrote:
> > > Warning: Unresolved:
> > > __gxx_personality_v0
> 
> No, this fails since xgcc is used to link a C++ shared object, thus missing
> -lstdc++ from the link line.  I've sent the details to Tom in private mail.

That's not right either.  AFAIK, libgcj should only be using
__gcj_personality_v0 because of #pragma GCC java_exceptions.

> > > +FAIL: g++.ext/instantiate2.C not instantiated (test for errors, line 19)
> > > +FAIL: g++.ext/instantiate3.C not instantiated (test for errors, line 13)
> > 
> > Should check -- these may be the same as the g++.dg instances.
> 
> Indeed: 

Ok.  I have an idea about how to test these differently via
scan-assembler rather than link errors.  Might work better.

> > >From cc1?  I wonder if I can reproduce this from cross-compile...
> 
> Yep: here's a stack trace in case this helps:

It does help.  I have no idea why this wouldn't show up in a
cross compile.  It really should have.  Untested patch attached.

> > > +FAIL: gcc.c-torture/execute/ieee/fp-cmp-3.c execution,  -O0 
> > 
> > Very Bad.  This _really_ ought to work.
> 
> This one abort's at line 27:
> 
>   if (dnan != x)
>     x = 1.0;
>   else
>     abort ();
> 
> gdb says: x = 1, dnan = NaNQ at this point.

As expected.  Actually, the Issue that I should have noted before
is that we're testing long double.  Which unlike Linux is 128-bit.
I'll give the generated code a once-over before poking you again.


r~


	* c-decl.c (finish_function): New arg can_defer_p.  Pass it
	on to c_expand_body.
	* c-tree.h (finish_function): Update decl.
	* c-objc-common.c, c-parse.in, objc/objc-act.c: Update calls.

Index: c-decl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/c-decl.c,v
retrieving revision 1.300.2.3
diff -c -p -d -u -r1.300.2.3 c-decl.c
--- c-decl.c	2002/03/16 00:58:56	1.300.2.3
+++ c-decl.c	2002/03/27 21:56:45
@@ -6893,11 +6893,13 @@ store_parm_decls ()
 
    This is called after parsing the body of the function definition.
 
-   NESTED is nonzero if the function being finished is nested in another.  */
+   NESTED is nonzero if the function being finished is nested in another.
+   CAN_DEFER_P is nonzero if the function may be deferred.  */
 
 void
-finish_function (nested)
+finish_function (nested, can_defer_p)
      int nested;
+     int can_defer_p;
 {
   tree fndecl = current_function_decl;
 
@@ -6973,7 +6975,7 @@ finish_function (nested)
   if (! nested)
     {
       /* Generate RTL for the body of this function.  */
-      c_expand_body (fndecl, nested, 1);
+      c_expand_body (fndecl, nested, can_defer_p);
 
       /* Let the error reporting routines know that we're outside a
 	 function.  For a nested function, this value is used in
Index: c-objc-common.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/c-objc-common.c,v
retrieving revision 1.3
diff -c -p -d -u -r1.3 c-objc-common.c
--- c-objc-common.c	2002/02/22 00:08:59	1.3
+++ c-objc-common.c	2002/03/27 21:56:45
@@ -324,7 +324,7 @@ finish_cdtor (body)
 
   RECHAIN_STMTS (body, COMPOUND_BODY (body));
 
-  finish_function (0);
+  finish_function (0, 0);
 }
 
 /* Called at end of parsing, but before end-of-file processing.  */
Index: c-parse.in
===================================================================
RCS file: /cvs/gcc/gcc/gcc/c-parse.in,v
retrieving revision 1.127
diff -c -p -d -u -r1.127 c-parse.in
--- c-parse.in	2002/02/08 07:51:10	1.127
+++ c-parse.in	2002/03/27 21:56:45
@@ -395,7 +395,7 @@ fndef:
 	  save_filename save_lineno compstmt_or_error
 		{ DECL_SOURCE_FILE (current_function_decl) = $7;
 		  DECL_SOURCE_LINE (current_function_decl) = $8;
-		  finish_function (0); 
+		  finish_function (0, 1); 
 		  POP_DECLSPEC_STACK; }
 	| declspecs_ts setspecs declarator error
 		{ POP_DECLSPEC_STACK; }
@@ -409,7 +409,7 @@ fndef:
 	  save_filename save_lineno compstmt_or_error
 		{ DECL_SOURCE_FILE (current_function_decl) = $7;
 		  DECL_SOURCE_LINE (current_function_decl) = $8;
-		  finish_function (0); 
+		  finish_function (0, 1); 
 		  POP_DECLSPEC_STACK; }
 	| declspecs_nots setspecs notype_declarator error
 		{ POP_DECLSPEC_STACK; }
@@ -423,7 +423,7 @@ fndef:
 	  save_filename save_lineno compstmt_or_error
 		{ DECL_SOURCE_FILE (current_function_decl) = $6;
 		  DECL_SOURCE_LINE (current_function_decl) = $7;
-		  finish_function (0); 
+		  finish_function (0, 1); 
 		  POP_DECLSPEC_STACK; }
 	| setspecs notype_declarator error
 		{ POP_DECLSPEC_STACK; }
@@ -1582,7 +1582,7 @@ nested_function:
 		{ tree decl = current_function_decl;
 		  DECL_SOURCE_FILE (decl) = $5;
 		  DECL_SOURCE_LINE (decl) = $6;
-		  finish_function (1);
+		  finish_function (1, 1);
 		  pop_function_context (); 
 		  add_decl_stmt (decl); }
 	;
@@ -1612,7 +1612,7 @@ notype_nested_function:
 		{ tree decl = current_function_decl;
 		  DECL_SOURCE_FILE (decl) = $5;
 		  DECL_SOURCE_LINE (decl) = $6;
-		  finish_function (1);
+		  finish_function (1, 1);
 		  pop_function_context (); 
 		  add_decl_stmt (decl); }
 	;
Index: c-tree.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/c-tree.h,v
retrieving revision 1.81
diff -c -p -d -u -r1.81 c-tree.h
--- c-tree.h	2002/02/06 20:40:16	1.81
+++ c-tree.h	2002/03/27 21:56:45
@@ -181,7 +181,7 @@ extern tree define_label                
 							 tree));
 extern void finish_decl                         PARAMS ((tree, tree, tree));
 extern tree finish_enum                         PARAMS ((tree, tree, tree));
-extern void finish_function                     PARAMS ((int));
+extern void finish_function                     PARAMS ((int, int));
 extern tree finish_struct                       PARAMS ((tree, tree, tree));
 extern tree get_parm_info                       PARAMS ((int));
 extern tree grokfield                           PARAMS ((const char *, int, tree, tree, tree));
Index: objc/objc-act.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/objc/objc-act.c,v
retrieving revision 1.126
diff -c -p -d -u -r1.126 objc-act.c
--- objc-act.c	2002/02/18 03:54:30	1.126
+++ objc-act.c	2002/03/27 22:03:48
@@ -1773,7 +1773,7 @@ build_module_descriptor ()
 
     c_expand_expr_stmt (decelerator);
 
-    finish_function (0);
+    finish_function (0, 0);
 
     return XEXP (DECL_RTL (init_function_decl), 0);
   }
@@ -7307,7 +7307,7 @@ void
 finish_method_def ()
 {
   lang_expand_function_end = objc_expand_function_end;
-  finish_function (0);
+  finish_function (0, 1);
   lang_expand_function_end = NULL;
 
   /* Required to implement _msgSuper. This must be done AFTER finish_function,


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