cleanup of CONST_DOUBLE.

Richard Sandiford rdsandiford@googlemail.com
Sun Jul 29 16:36:00 GMT 2012


Kenneth Zadeck <zadeck@naturalbridge.com> writes:
> Given that Richard Sandiford advised on all of the non trivial changes, 
> I am going to check this patch in in the next few days unless i hear 
> some comments otherwise.

TBH I'd only looked at the ones you flagged.  This time...

> diff -puNr '--exclude=.git' '--exclude=.svn' gccBaseline/gcc/cfgexpand.c gccWide/gcc/cfgexpand.c
> --- gccBaseline/gcc/cfgexpand.c	2012-07-22 16:55:01.235983016 -0400
> +++ gccWide/gcc/cfgexpand.c	2012-07-25 19:42:16.456201001 -0400
> @@ -3634,7 +3634,7 @@ expand_debug_locations (void)
>  			|| (GET_MODE (val) == VOIDmode
>  			    && (CONST_INT_P (val)
>  				|| GET_CODE (val) == CONST_FIXED
> -				|| GET_CODE (val) == CONST_DOUBLE
> +				|| CONST_DOUBLE_P (val) 
>  				|| GET_CODE (val) == LABEL_REF)));

should be CONST_DOUBLE_AS_INT_P (because we know it's VOIDmode already).

> -	  if ((CONSTANT_P (op) && !CONST_INT_P (op)
> -	       && (GET_CODE (op) != CONST_DOUBLE || GET_MODE (op) != VOIDmode))
> +	  if ((CONSTANT_P (op) && !CONST_INT_P (op) && !CONST_DOUBLE_AS_INT_P (op))

Long line (keep on two).

> +/* Predicate yielding true iff X is an rtx for a double-int.  */
> +#define CONST_DOUBLE_AS_INT_P(X) (GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) == VOIDmode)
> +
> +/* Predicate yielding true iff X is an rtx for a double-int.  */
> +#define CONST_DOUBLE_AS_FLOAT_P(X) (GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) != VOIDmode)
> +

Long lines.  Should be:

#define CONST_DOUBLE_AS_INT_P(X) \
  (GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) == VOIDmode)

etc.

> -	  && (CONST_INT_P (XEXP (op0, 1))
> -	      || GET_CODE (XEXP (op0, 1)) == CONST_DOUBLE)
> +	  && (CONST_INT_P (XEXP (op0, 1)) || CONST_DOUBLE_AS_INT_P (XEXP (op0, 1)))

Long line (keep on two).

> -	  && (CONST_INT_P (XEXP (op0, 1))
> -	      || GET_CODE (XEXP (op0, 1)) == CONST_DOUBLE)
> +	  && (CONST_INT_P (XEXP (op0, 1)) || CONST_DOUBLE_AS_INT_P (XEXP (op0, 1)))

Same.

> -      && (CONST_INT_P (op1)
> -	  || GET_CODE (op1) == CONST_DOUBLE)
> -      && (CONST_INT_P (XEXP (op0, 1))
> -	  || GET_CODE (XEXP (op0, 1)) == CONST_DOUBLE))
> +      && (CONST_INT_P (op1) || CONST_DOUBLE_AS_INT_P (op1))
> +      && (CONST_INT_P (XEXP (op0, 1)) || CONST_DOUBLE_AS_INT_P (XEXP (op0, 1))))

Same.

Looks good otherwise.

Richard



More information about the Gcc-patches mailing list