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]

[tree-ssa] Fix alpha bootstrap failure


Volatile variables should not be scalarized.  This showed up while
trying to bootstrap on alpha.  We try to scalarize a variable used
inside a VA_ARG_EXPR (which are marked volatile until we implement
VA_ARG_EXPR lowering).

The sibcall.c fix is to quell a valid warning about uninitialized
variables.


Diego.


	* tree-sra.c (can_be_scalarized_p): Reject volatile variables.

	* sibcall.c (skip_copy_to_return_value): Initialize 'hardret' and
	'softret'.

Index: sibcall.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/sibcall.c,v
retrieving revision 1.38.2.9
diff -d -c -p -r1.38.2.9 sibcall.c
*** sibcall.c	18 Nov 2003 23:06:35 -0000	1.38.2.9
--- sibcall.c	16 Dec 2003 03:09:09 -0000
*************** static rtx
*** 144,150 ****
  skip_copy_to_return_value (rtx orig_insn)
  {
    rtx insn, set = NULL_RTX;
!   rtx hardret, softret;
  
    /* If there is no return value, we have nothing to do.  */
    if (! identify_call_return_value (PATTERN (orig_insn), &hardret, &softret))
--- 144,150 ----
  skip_copy_to_return_value (rtx orig_insn)
  {
    rtx insn, set = NULL_RTX;
!   rtx hardret = NULL_RTX, softret = NULL_RTX;
  
    /* If there is no return value, we have nothing to do.  */
    if (! identify_call_return_value (PATTERN (orig_insn), &hardret, &softret))
Index: tree-sra.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-sra.c,v
retrieving revision 1.1.2.8
diff -d -c -p -r1.1.2.8 tree-sra.c
*** tree-sra.c	15 Dec 2003 22:58:34 -0000	1.1.2.8
--- tree-sra.c	16 Dec 2003 03:09:09 -0000
*************** can_be_scalarized_p (tree var)
*** 176,181 ****
--- 176,192 ----
        return false;
      }
  
+   if (TREE_THIS_VOLATILE (var))
+     {
+       if (dump_file && (dump_flags & TDF_DETAILS))
+ 	{
+ 	  fprintf (dump_file, "Cannot scalarize variable ");
+ 	  print_generic_expr (dump_file, var, 0);	 
+ 	  fprintf (dump_file, " because it is declared volatile\n");
+ 	}
+       return false;
+     }
+ 
    type = TREE_TYPE (var);
    nfields = 0;
    for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field))



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