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

Re: var_args for rs6000 backend


"Yao qi" <qiyaobit@hotmail.com> writes:

> Do you mean the value of TARGET_HARD_FLOAT is *1* when option -mhard-float
> is specified according to rs6000.opt ?

Yes.  TARGET_HARD_FLOAT is defined as

#define TARGET_HARD_FLOAT ((target_flags & MASK_SOFT_FLOAT) == 0)

The -mhard-float option will clear the MASK_SOFT_FLOAT bit in
target_flags.

The default setting of the MASK_SOFT_FLOAT bit in target_flags depends
upon the default processor.

> If so, that is to say, in rs6000_gimplify_va_arg() , the condations
> statement in
> line 5734,
>    5733
>    5734   if (TARGET_HARD_FLOAT && TARGET_FPRS
>    5735       && (TYPE_MODE (type) == SFmode || TYPE_MODE (type) == DFmode
> 
> is *always* FALSE and all the float  parameters wiil be passed in GPRs
> instead of FPRs.
> Am I right?  Everyone here could verify or deny it, thanks in advance!

The condition is not always false.  The value depends on exactly how
you have configured the compiler and exactly what options you pass.

Ian


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