This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: var_args for rs6000 backend
- From: Ian Lance Taylor <ian at airs dot com>
- To: "Yao qi" <qiyaobit at hotmail dot com>
- Cc: pinskia at physics dot uc dot edu, gcc at gcc dot gnu dot org
- Date: 09 Sep 2005 00:14:51 -0700
- Subject: Re: var_args for rs6000 backend
- References: <BAY12-F1326F33A3F1C74BFA52F2CDF980@phx.gbl>
"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