current gcc doesnot like -fno-builtin

Richard Henderson rth@cygnus.com
Mon Apr 24 16:32:00 GMT 2000


On Sun, Apr 23, 2000 at 01:52:38PM -0700, Ulrich Drepper wrote:
> The current mainline gcc does not like not to be allowed to use
> builtins.  I append a file below which when compiled with
> 
> 	./cc1 -O3 -fno-builtin v.i 
> 
> on a x86 machine crashes gcc in `subst_constant'.

This is a problem with 

Thu Apr 20 14:19:18 MET DST 2000  Jan Hubicka  <jh@suse.cz>

        * calls.c (expand_call): Avoid unnecesary precalculation
        and outgoing parameters space guarding for sibling calls.
        (store_one_arg): Likewise.

We have 

      /* Precompute any arguments as needed.  */
      if (pass)
        precompute_arguments (flags, num_actuals, args);
[...]
          /* Construct an "equal form" for the value which mentions all the
             arguments in order as well as the function name.  */
          for (i = 0; i < num_actuals; i++)
            note = gen_rtx_EXPR_LIST (VOIDmode, args[i].initial_value, note);
          note = gen_rtx_EXPR_LIST (VOIDmode, funexp, note);

The only place initial_value is set up is in precompute_arguments,
so during pass == 0, we'll create a REG_EQUAL note like

	(reg_equal (expr_list (symbol_ref "ffs")
		     (expr_list (nil) (nil))))

It's probably reasonable to omit the libcall and associated notes
from the sibcall sequence, since sibcall transformations happen
before CSE, and once the transformation is applied we cannot CSE
the libcall.



r~


More information about the Gcc-bugs mailing list