public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: Ada broken on i686-linux (some more progress)
@ 2004-09-13  7:39 Richard Kenner
  2004-09-13 21:48 ` Laurent GUERBY
  0 siblings, 1 reply; 4+ messages in thread
From: Richard Kenner @ 2004-09-13  7:39 UTC (permalink / raw)
  To: laurent; +Cc: gcc

    Thanks for looking into this, I confirm that with HEAD plus your patch
    below stage2 completes, then it ICEs later while building the RTS
    on some code which doesn't look loop-related.

Correct, it's not.

    ../../xgcc -B../../ -c -g -O2 -fPIC      -W -Wall -gnatpg  g-exctra.adb -o g-exctra.o
    g-exctra.adb:69: error: Found a virtual definition for a GIMPLE register
    while verifying SSA_NAME decorator_traceback_31 in statement
    #   gnat__exception_traces__current_decoratorD.447_26 = V_MAY_DEF <gnat__exception_traces__current_decoratorD.447_15>;
    #   D.462_30 = V_MAY_DEF <D.462_20>;
    #   decorator_tracebackD.454_31 = V_MAY_DEF <decorator_tracebackD.454_14>;
    #   D.464_27 = V_MAY_DEF <D.464_25>;
    #   VUSE <D.461_24>;
    D.464 = gnat__exception_traces__current_decorator.1_16 (D.461);

I can't remember anymore exactly what's fixed by what, but I think this is
fixed by a change to utils.c that Arno has but was waiting for other things
to be fixed.  In create_var_decl.c, the setting of TREE_STATIC should look
like:

  /* If it's public and not external, always allocate storage for it.
     At the global binding level we need to allocate static storage for the
     variable if and only if it's not external. If we are not at the top level
     we allocate automatic storage unless requested not to.  */
  TREE_STATIC (var_decl)
    = public_flag || (global_bindings_p () ? !extern_flag : static_flag);

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Ada broken on i686-linux (some more progress)
  2004-09-13  7:39 Ada broken on i686-linux (some more progress) Richard Kenner
@ 2004-09-13 21:48 ` Laurent GUERBY
  0 siblings, 0 replies; 4+ messages in thread
From: Laurent GUERBY @ 2004-09-13 21:48 UTC (permalink / raw)
  To: Richard Kenner; +Cc: gcc

With HEAD after Arnaud commit and Zdenek patch, I now get on x86:

../../xgcc -B../../ -c -g -O2 -fPIC      -W -Wall -gnatpg  g-regexp.adb -o g-regexp.o
g-regexp.adb: In function `GNAT.REGEXP.COMPILE.CREATE_SECONDARY_TABLE':
g-regexp.adb:1087: error: Definition in block 5 does not dominate use in block 110
for SSA_NAME: D.1826_717
in statement:
ivtmp.864D.4683_228 = &(*table.51D.1822_144)[J99b.52D.1827_3]{lb: 1 sz: D.1826_717 * 4}[0];

+===========================GNAT BUG DETECTED==============================+
| 4.0.0 20040913 (experimental) (i686-pc-linux-gnu) verify_ssa failed.     |
| Error detected at g-regexp.adb:1389:1                                    |


and on x86_64:

cd rts; ../../xgcc -B../../ -shared -fPIC \
        -o libgnat-3.5.so \
...

-Wl,-soname,libgnat-3.5.so \
         -lm
s-fatlfl.o(.bss+0x0): In function `system.fat_lflt.fat_long_float.scaling':
/home/guerby/work/gcc/build/build-20040913T200122/gcc/ada/rts/s-fatgen.adb:540: multiple definition of `r'
s-fatflt.o(.bss+0x0):/home/guerby/work/gcc/build/build-20040913T200122/gcc/ada/rts/s-fatgen.adb:540: first defined here
s-fatllf.o(.bss+0x0): In function `system.fat_llf.fat_long_long_float.scaling':
/home/guerby/work/gcc/build/build-20040913T200122/gcc/ada/rts/s-fatgen.adb:538: multiple definition of `r'
s-fatflt.o(.bss+0x0):/home/guerby/work/gcc/build/build-20040913T200122/gcc/ada/rts/s-fatgen.adb:540: first defined here
s-fatsfl.o(.bss+0x0): In function `system.fat_sflt.fat_short_float.scaling':
/home/guerby/work/gcc/build/build-20040913T200122/gcc/ada/rts/s-fatgen.adb:540: multiple definition of `r'
s-fatflt.o(.bss+0x0):/home/guerby/work/gcc/build/build-20040913T200122/gcc/ada/rts/s-fatgen.adb:540: first defined here
collect2: ld returned 1 exit status
make[5]: *** [gnatlib-shared-default] Error 1

Laurent

On Mon, 2004-09-13 at 05:17, Richard Kenner wrote:
>     Thanks for looking into this, I confirm that with HEAD plus your patch
>     below stage2 completes, then it ICEs later while building the RTS
>     on some code which doesn't look loop-related.
> 
> Correct, it's not.
> 
>     ../../xgcc -B../../ -c -g -O2 -fPIC      -W -Wall -gnatpg  g-exctra.adb -o g-exctra.o
>     g-exctra.adb:69: error: Found a virtual definition for a GIMPLE register
>     while verifying SSA_NAME decorator_traceback_31 in statement
>     #   gnat__exception_traces__current_decoratorD.447_26 = V_MAY_DEF <gnat__exception_traces__current_decoratorD.447_15>;
>     #   D.462_30 = V_MAY_DEF <D.462_20>;
>     #   decorator_tracebackD.454_31 = V_MAY_DEF <decorator_tracebackD.454_14>;
>     #   D.464_27 = V_MAY_DEF <D.464_25>;
>     #   VUSE <D.461_24>;
>     D.464 = gnat__exception_traces__current_decorator.1_16 (D.461);
> 
> I can't remember anymore exactly what's fixed by what, but I think this is
> fixed by a change to utils.c that Arno has but was waiting for other things
> to be fixed.  In create_var_decl.c, the setting of TREE_STATIC should look
> like:
> 
>   /* If it's public and not external, always allocate storage for it.
>      At the global binding level we need to allocate static storage for the
>      variable if and only if it's not external. If we are not at the top level
>      we allocate automatic storage unless requested not to.  */
>   TREE_STATIC (var_decl)
>     = public_flag || (global_bindings_p () ? !extern_flag : static_flag);
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Ada broken on i686-linux (some more progress)
@ 2004-09-13 22:08 Richard Kenner
  0 siblings, 0 replies; 4+ messages in thread
From: Richard Kenner @ 2004-09-13 22:08 UTC (permalink / raw)
  To: laurent; +Cc: gcc

    s-fatlfl.o(.bss+0x0): In function `system.fat_lflt.fat_long_float.scaling':
    /home/guerby/work/gcc/build/build-20040913T200122/gcc/ada/rts/s-fatgen.adb:540: multiple definition of `r'
    s-fatflt.o(.bss+0x0):/home/guerby/work/gcc/build/build-20040913T200122/gcc/ada/rts/s-fatgen.adb:540: first defined here

I'm assuming this is a problem in the Ada front end, though I haven't
gotten a chance to look at it yet.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Ada broken on i686-linux (some more progress)
  2004-09-12 22:12 ` Zdenek Dvorak
@ 2004-09-12 23:33   ` Laurent GUERBY
  0 siblings, 0 replies; 4+ messages in thread
From: Laurent GUERBY @ 2004-09-12 23:33 UTC (permalink / raw)
  To: Zdenek Dvorak; +Cc: Richard Kenner, gcc, hubicka

Thanks for looking into this, I confirm that with HEAD plus your patch
below stage2 completes, then it ICEs later while building the RTS
on some code which doesn't look loop-related.

x86:
../../xgcc -B../../ -c -g -O2 -fPIC      -W -Wall -gnatpg  g-exctra.adb -o g-exctra.o
g-exctra.adb: In function `GNAT.EXCEPTION_TRACES.DECORATOR_WRAPPER':
g-exctra.adb:69: error: Found a virtual definition for a GIMPLE register
while verifying SSA_NAME decorator_traceback_31 in statement
#   gnat__exception_traces__current_decoratorD.447_26 = V_MAY_DEF <gnat__exception_traces__current_decoratorD.447_15>;
#   D.462_30 = V_MAY_DEF <D.462_20>;
#   decorator_tracebackD.454_31 = V_MAY_DEF <decorator_tracebackD.454_14>;
#   D.464_27 = V_MAY_DEF <D.464_25>;
#   VUSE <D.461_24>;
D.464 = gnat__exception_traces__current_decorator.1_16 (D.461);

+===========================GNAT BUG DETECTED==============================+
| 4.0.0 20040912 (experimental) (i686-pc-linux-gnu) verify_ssa failed.     |
| Error detected at g-exctra.adb:127:1                                     |

backtrace:
(gdb) bt
#0  internal_error (msgid=0x1 <Address 0x1 out of bounds>) at /home/guerby/work/gcc/version-head/gcc/diagnostic.c:543
#1  0x082ebefa in verify_ssa () at /home/guerby/work/gcc/version-head/gcc/tree-ssa.c:612
#2  0x082ece45 in execute_todo (properties=604, flags=15) at /home/guerby/work/gcc/version-head/gcc/tree-optimize.c:442
#3  0x082ed08a in execute_pass_list (pass=0x8777640) at /home/guerby/work/gcc/version-head/gcc/tree-optimize.c:512
#4  0x082ed0c5 in execute_pass_list (pass=0x8777300) at /home/guerby/work/gcc/version-head/gcc/tree-optimize.c:537
#5  0x082ed361 in tree_rest_of_compilation (fndecl=0x4026a9f8, nested_p=0 '\0') at /home/guerby/work/gcc/version-head/gcc/tree-optimize.c:618
#6  0x08064f8f in gnat_expand_body (gnu_decl=0x4026a9f8) at /home/guerby/work/gcc/version-head/gcc/ada/misc.c:652
#7  0x0862521b in cgraph_expand_function (node=0x4026e244) at /home/guerby/work/gcc/version-head/gcc/cgraphunit.c:814
#8  0x08626c52 in cgraph_optimize () at /home/guerby/work/gcc/version-head/gcc/cgraphunit.c:1680
#9  0x085cb2d5 in toplev_main (argc=1, argv=0xbffff364) at /home/guerby/work/gcc/version-head/gcc/toplev.c:991
#10 0x4004c500 in __libc_start_main () from /lib/tls/libc.so.6
#11 0x08049dd1 in _start () at ../sysdeps/i386/elf/start.S:102


x86_64:
../../xgcc -B../../ -c -g -O2 -fPIC      -W -Wall -gnatpg  g-exctra.adb -o g-exctra.o
+===========================GNAT BUG DETECTED==============================+
| 4.0.0 20040912 (experimental) (x86_64-unknown-linux-gnu) GCC error:      |
| in var_ann, at tree-flow-inline.h:34                                     |
| Error detected at g-exctra.adb:127:1                                     |

Laurent

On Sun, 2004-09-12 at 21:46, Zdenek Dvorak wrote:
> Hello,
> 
> >     could you please check whether this patch helps?
> > 
> > I can't say for sure it if "helps" or not, but this failure is
> > still present:
> 
> this turned out not to be a sharing issue, but misshandling of
> array_ref_element_size and array_ref_low_bound.  The following
> patch should hopefully get you at least a bit further.
> 
> Zdenek
> 
> Index: tree-ssa-loop-ivopts.c
> ===================================================================
> RCS file: /cvs/gcc/gcc/gcc/tree-ssa-loop-ivopts.c,v
> retrieving revision 2.9
> diff -c -3 -p -r2.9 tree-ssa-loop-ivopts.c
> *** tree-ssa-loop-ivopts.c	10 Sep 2004 08:56:36 -0000	2.9
> --- tree-ssa-loop-ivopts.c	12 Sep 2004 19:35:03 -0000
> *************** dump_iv (FILE *file, struct iv *iv)
> *** 305,310 ****
> --- 305,314 ----
>     print_generic_expr (file, iv->ssa_name, TDF_SLIM);
>     fprintf (file, "\n");
>   
> +   fprintf (file, "  type ");
> +   print_generic_expr (file, TREE_TYPE (iv->base), TDF_SLIM);
> +   fprintf (file, "\n");
> + 
>     if (iv->step)
>       {
>         fprintf (file, "  base ");
> *************** dump_use (FILE *file, struct iv_use *use
> *** 358,391 ****
>         gcc_unreachable ();
>       }
>   
> !    fprintf (file, "  in statement ");
> !    print_generic_expr (file, use->stmt, TDF_SLIM);
> !    fprintf (file, "\n");
> ! 
> !    fprintf (file, "  at position ");
> !    if (use->op_p)
> !      print_generic_expr (file, *use->op_p, TDF_SLIM);
> !    fprintf (file, "\n");
> ! 
> !    if (iv->step)
> !      {
> !        fprintf (file, "  base ");
> !        print_generic_expr (file, iv->base, TDF_SLIM);
> !        fprintf (file, "\n");
> ! 
> !        fprintf (file, "  step ");
> !        print_generic_expr (file, iv->step, TDF_SLIM);
> !        fprintf (file, "\n");
> !      }
> !    else
> !      {
> !        fprintf (file, "  invariant ");
> !        print_generic_expr (file, iv->base, TDF_SLIM);
> !        fprintf (file, "\n");
> !      }
>   
> !    fprintf (file, "  related candidates ");
> !    dump_bitmap (file, use->related_cands);
>   }
>   
>   /* Dumps information about the uses to FILE.  */
> --- 362,399 ----
>         gcc_unreachable ();
>       }
>   
> !   fprintf (file, "  in statement ");
> !   print_generic_expr (file, use->stmt, TDF_SLIM);
> !   fprintf (file, "\n");
> ! 
> !   fprintf (file, "  at position ");
> !   if (use->op_p)
> !     print_generic_expr (file, *use->op_p, TDF_SLIM);
> !   fprintf (file, "\n");
> ! 
> !   fprintf (file, "  type ");
> !   print_generic_expr (file, TREE_TYPE (iv->base), TDF_SLIM);
> !   fprintf (file, "\n");
> ! 
> !   if (iv->step)
> !     {
> !       fprintf (file, "  base ");
> !       print_generic_expr (file, iv->base, TDF_SLIM);
> !       fprintf (file, "\n");
> ! 
> !       fprintf (file, "  step ");
> !       print_generic_expr (file, iv->step, TDF_SLIM);
> !       fprintf (file, "\n");
> !     }
> !   else
> !     {
> !       fprintf (file, "  invariant ");
> !       print_generic_expr (file, iv->base, TDF_SLIM);
> !       fprintf (file, "\n");
> !     }
>   
> !   fprintf (file, "  related candidates ");
> !   dump_bitmap (file, use->related_cands);
>   }
>   
>   /* Dumps information about the uses to FILE.  */
> *************** dump_cand (FILE *file, struct iv_cand *c
> *** 438,459 ****
>         break;
>       }
>   
> !    if (iv->step)
> !      {
> !        fprintf (file, "  base ");
> !        print_generic_expr (file, iv->base, TDF_SLIM);
> !        fprintf (file, "\n");
> ! 
> !        fprintf (file, "  step ");
> !        print_generic_expr (file, iv->step, TDF_SLIM);
> !        fprintf (file, "\n");
> !      }
> !    else
> !      {
> !        fprintf (file, "  invariant ");
> !        print_generic_expr (file, iv->base, TDF_SLIM);
> !        fprintf (file, "\n");
> !      }
>   }
>   
>   /* Returns the info for ssa version VER.  */
> --- 446,471 ----
>         break;
>       }
>   
> !   fprintf (file, "  type ");
> !   print_generic_expr (file, TREE_TYPE (iv->base), TDF_SLIM);
> !   fprintf (file, "\n");
> ! 
> !   if (iv->step)
> !     {
> !       fprintf (file, "  base ");
> !       print_generic_expr (file, iv->base, TDF_SLIM);
> !       fprintf (file, "\n");
> ! 
> !       fprintf (file, "  step ");
> !       print_generic_expr (file, iv->step, TDF_SLIM);
> !       fprintf (file, "\n");
> !     }
> !   else
> !     {
> !       fprintf (file, "  invariant ");
> !       print_generic_expr (file, iv->base, TDF_SLIM);
> !       fprintf (file, "\n");
> !     }
>   }
>   
>   /* Returns the info for ssa version VER.  */
> *************** idx_find_step (tree base, tree *idx, voi
> *** 1150,1156 ****
>   {
>     struct ifs_ivopts_data *dta = data;
>     struct iv *iv;
> !   tree step, type, iv_type, iv_step;
>     
>     if (TREE_CODE (*idx) != SSA_NAME)
>       return true;
> --- 1162,1170 ----
>   {
>     struct ifs_ivopts_data *dta = data;
>     struct iv *iv;
> !   tree step, type, iv_type, iv_step, lbound;
> !   basic_block def_bb;
> !   struct loop *loop = dta->ivopts_data->current_loop;
>     
>     if (TREE_CODE (*idx) != SSA_NAME)
>       return true;
> *************** idx_find_step (tree base, tree *idx, voi
> *** 1167,1173 ****
>     iv_type = TREE_TYPE (iv->base);
>     type = build_pointer_type (TREE_TYPE (base));
>     if (TREE_CODE (base) == ARRAY_REF)
> !     step = array_ref_element_size (base);
>     else
>       /* The step for pointer arithmetics already is 1 byte.  */
>       step = build_int_cst (type, 1);
> --- 1181,1210 ----
>     iv_type = TREE_TYPE (iv->base);
>     type = build_pointer_type (TREE_TYPE (base));
>     if (TREE_CODE (base) == ARRAY_REF)
> !     {
> !       step = array_ref_element_size (base);
> !       lbound = array_ref_low_bound (base);
> ! 
> !       /* We only handle addresses whose step is an integer constant.  */
> !       if (TREE_CODE (step) != INTEGER_CST)
> ! 	return false;
> ! 
> !       /* We need the lower bound to be invariant in loop, since otherwise
> ! 	 we are unable to initialize a new induction variable created
> ! 	 in strength reduction -- we need to take the address of the
> ! 	 reference in front of the loop.  */
> !       if (is_gimple_min_invariant (lbound))
> ! 	; /* Nothing to do.  */
> !       else if (TREE_CODE (lbound) != SSA_NAME)
> ! 	return false;
> !       else
> ! 	{
> ! 	  def_bb = bb_for_stmt (SSA_NAME_DEF_STMT (lbound));
> ! 	  if (def_bb
> ! 	      && flow_bb_inside_loop_p (loop, def_bb))
> ! 	    return false;
> ! 	}
> !     }
>     else
>       /* The step for pointer arithmetics already is 1 byte.  */
>       step = build_int_cst (type, 1);
> *************** idx_find_step (tree base, tree *idx, voi
> *** 1198,1207 ****
>      object is passed to it in DATA.  */
>   
>   static bool
> ! idx_record_use (tree base ATTRIBUTE_UNUSED, tree *idx,
>   		void *data)
>   {
>     find_interesting_uses_op (data, *idx);
>     return true;
>   }
>   
> --- 1235,1249 ----
>      object is passed to it in DATA.  */
>   
>   static bool
> ! idx_record_use (tree base, tree *idx,
>   		void *data)
>   {
>     find_interesting_uses_op (data, *idx);
> +   if (TREE_CODE (base) == ARRAY_REF)
> +     {
> +       find_interesting_uses_op (data, array_ref_element_size (base));
> +       find_interesting_uses_op (data, array_ref_low_bound (base));
> +     }
>     return true;
>   }
>   
> *************** find_interesting_uses_stmt (struct ivopt
> *** 1318,1329 ****
>   	default: ;
>   	}
>   
> !       if (TREE_CODE_CLASS (TREE_CODE (lhs)) == 'r')
>   	{
>   	  find_interesting_uses_address (data, stmt, &TREE_OPERAND (stmt, 0));
>   	  find_interesting_uses_op (data, rhs);
>   	  return;
>   	}
>       }
>   
>     if (TREE_CODE (stmt) == PHI_NODE
> --- 1360,1381 ----
>   	default: ;
>   	}
>   
> !       /* Handle memory = gimple_val.  */
> !       if (TREE_CODE_CLASS (TREE_CODE (lhs)) == 'r'
> ! 	  && is_gimple_val (rhs))
>   	{
>   	  find_interesting_uses_address (data, stmt, &TREE_OPERAND (stmt, 0));
>   	  find_interesting_uses_op (data, rhs);
>   	  return;
>   	}
> + 
> +       /* TODO -- we should also handle address uses of type
> + 
> + 	 memory = call (whatever);
> + 
> + 	 and
> + 
> + 	 call (memory).  */
>       }
>   
>     if (TREE_CODE (stmt) == PHI_NODE
> *************** static tree
> *** 1995,2004 ****
>   get_computation_at (struct loop *loop,
>   		    struct iv_use *use, struct iv_cand *cand, tree at)
>   {
> !   tree ubase = unsave_expr_now (use->iv->base);
> !   tree ustep = unsave_expr_now (use->iv->step);
> !   tree cbase = unsave_expr_now (cand->iv->base);
> !   tree cstep = unsave_expr_now (cand->iv->step);
>     tree utype = TREE_TYPE (ubase), ctype = TREE_TYPE (cbase);
>     tree uutype;
>     tree expr, delta;
> --- 2047,2056 ----
>   get_computation_at (struct loop *loop,
>   		    struct iv_use *use, struct iv_cand *cand, tree at)
>   {
> !   tree ubase = use->iv->base;
> !   tree ustep = use->iv->step;
> !   tree cbase = cand->iv->base;
> !   tree cstep = cand->iv->step;
>     tree utype = TREE_TYPE (ubase), ctype = TREE_TYPE (cbase);
>     tree uutype;
>     tree expr, delta;
> *************** iv_value (struct iv *iv, tree niter)
> *** 2905,2911 ****
>     tree type = TREE_TYPE (iv->base);
>   
>     niter = fold_convert (type, niter);
> !   val = fold (build2 (MULT_EXPR, type, iv->step, unsave_expr_now (niter)));
>   
>     return fold (build2 (PLUS_EXPR, type, iv->base, val));
>   }
> --- 2957,2963 ----
>     tree type = TREE_TYPE (iv->base);
>   
>     niter = fold_convert (type, niter);
> !   val = fold (build2 (MULT_EXPR, type, iv->step, niter));
>   
>     return fold (build2 (PLUS_EXPR, type, iv->base, val));
>   }
> *************** rewrite_use_outer (struct ivopts_data *d
> *** 4125,4130 ****
> --- 4177,4183 ----
>   	value = get_computation_at (data->current_loop,
>   				    use, cand, last_stmt (exit->src));
>   
> +       value = unshare_expr (value);
>         op = force_gimple_operand (value, &stmts, true, SSA_NAME_VAR (tgt));
>   	  
>         /* If we will preserve the iv anyway and we would need to perform
> Index: tree-ssa-loop-niter.c
> ===================================================================
> RCS file: /cvs/gcc/gcc/gcc/tree-ssa-loop-niter.c,v
> retrieving revision 2.7
> diff -c -3 -p -r2.7 tree-ssa-loop-niter.c
> *** tree-ssa-loop-niter.c	5 Sep 2004 15:24:15 -0000	2.7
> --- tree-ssa-loop-niter.c	12 Sep 2004 19:35:03 -0000
> *************** inverse (tree x, tree mask)
> *** 84,105 ****
>     return rslt;
>   }
>   
> - /* Returns unsigned variant of TYPE.  */
> - 
> - tree
> - unsigned_type_for (tree type)
> - {
> -   return make_unsigned_type (TYPE_PRECISION (type));
> - }
> - 
> - /* Returns signed variant of TYPE.  */
> - 
> - static tree
> - signed_type_for (tree type)
> - {
> -   return make_signed_type (TYPE_PRECISION (type));
> - }
> - 
>   /* Determine the number of iterations according to condition (for staying
>      inside loop) which compares two induction variables using comparison
>      operator CODE.  The induction variable on left side of the comparison
> --- 84,89 ----
> Index: tree.c
> ===================================================================
> RCS file: /cvs/gcc/gcc/gcc/tree.c,v
> retrieving revision 1.426
> diff -c -3 -p -r1.426 tree.c
> *** tree.c	11 Sep 2004 21:14:38 -0000	1.426
> --- tree.c	12 Sep 2004 19:35:07 -0000
> *************** tree_fold_gcd (tree a, tree b)
> *** 5939,5942 ****
> --- 5939,5958 ----
>       }
>   }
>   
> + /* Returns unsigned variant of TYPE.  */
> + 
> + tree
> + unsigned_type_for (tree type)
> + {
> +   return lang_hooks.types.unsigned_type (type);
> + }
> + 
> + /* Returns signed variant of TYPE.  */
> + 
> + tree
> + signed_type_for (tree type)
> + {
> +   return lang_hooks.types.signed_type (type);
> + }
> + 
>   #include "gt-tree.h"
> Index: tree.h
> ===================================================================
> RCS file: /cvs/gcc/gcc/gcc/tree.h,v
> retrieving revision 1.619
> diff -c -3 -p -r1.619 tree.h
> *** tree.h	11 Sep 2004 21:14:39 -0000	1.619
> --- tree.h	12 Sep 2004 19:35:09 -0000
> *************** extern tree build_empty_stmt (void);
> *** 2786,2791 ****
> --- 2786,2792 ----
>   
>   extern tree make_signed_type (int);
>   extern tree make_unsigned_type (int);
> + extern tree signed_type_for (tree);
>   extern tree unsigned_type_for (tree);
>   extern void initialize_sizetypes (bool);
>   extern void set_sizetype (tree);
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-09-13 21:20 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-09-13  7:39 Ada broken on i686-linux (some more progress) Richard Kenner
2004-09-13 21:48 ` Laurent GUERBY
  -- strict thread matches above, loose matches on Subject: below --
2004-09-13 22:08 Richard Kenner
2004-09-12  3:56 Ada broken on i686-linux (some progress) Richard Kenner
2004-09-12 22:12 ` Zdenek Dvorak
2004-09-12 23:33   ` Ada broken on i686-linux (some more progress) Laurent GUERBY

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).