patch for machine independent rtl section to hide case statements for different types of constants.
Kenneth Zadeck
zadeck@naturalbridge.com
Tue Aug 21 17:14:00 GMT 2012
I am certainly not going to check it in if there are any issues with the
patch. However, this was basically a trivial lexicographical cleanup,
and if no one has any comments on it after a reasonable amount of time,
then i do feel this is ok. Obviously if anyone has any comments. that
is completely a different issue.
I named it this way CASE_CONST_SCALAR_INTEGER because i need to
introduce in the next patch a predicate that looks like
/* Predicate yielding true iff X is an rtx for a integer const. */
#if TARGET_SUPPORTS_WIDE_INT == 1
#define CONST_INTEGER_P(X) \
(CONST_INT_P (X) || CONST_WIDE_INT_P (X))
#else
#define CONST_INTEGER_P(X) \
(CONST_INT_P (X) || CONST_DOUBLE_AS_INT_P (X))
#endif
for all of the rtxs that represent an integer. And this name was
consistent with that. It may be that you have a suggestion for the
name of predicate as well but it seemed to make more sense to have the
rtxs be consistent rather than rtx/mode consistent.
kenny
On 08/21/2012 12:56 PM, Richard Sandiford wrote:
> Kenneth Zadeck <zadeck@naturalbridge.com> writes:
>> I plan to commit this in a few days unless someone has some comments.
>> This is a mostly trivial patch and the changes from that are Richard
>> Sandiford's and he is an rtl maintainer.
> Please don't do this. Patches need to be sent for review in their
> final form. Obviously, having got this far with the patch, you're free
> to beat me up if I don't review it. :-)
>
> Anyway, please do call it CASE_CONST_SCALAR_INT rather than
> CASE_CONST_SCALAR_INTEGER. Like I said in my original mail,
> CASE_CONST_SCALAR_INT chimes nicely with SCALAR_INT_MODE_P, etc.,
> and (as I didn't say) it'd be better not to have two spellings
> of the same thing.
>
>> diff -upNr '--exclude=.svn' gccBaseline/gcc/combine.c gccWCase/gcc/combine.c
>> --- gccBaseline/gcc/combine.c 2012-08-17 09:35:24.802195795 -0400
>> +++ gccWCase/gcc/combine.c 2012-08-20 15:43:34.659362244 -0400
>> @@ -531,12 +531,10 @@ find_single_use_1 (rtx dest, rtx *loc)
>>
>> switch (code)
>> {
>> - case CONST_INT:
>> case CONST:
>> case LABEL_REF:
>> case SYMBOL_REF:
>> - case CONST_DOUBLE:
>> - case CONST_VECTOR:
>> + CASE_CONST_UNIQUE:
>> case CLOBBER:
>> return 0;
>>
>> @@ -12788,10 +12786,8 @@ mark_used_regs_combine (rtx x)
>> {
>> case LABEL_REF:
>> case SYMBOL_REF:
>> - case CONST_INT:
>> case CONST:
>> - case CONST_DOUBLE:
>> - case CONST_VECTOR:
>> + CASE_CONST_UNIQUE:
>> case PC:
>> case ADDR_VEC:
>> case ADDR_DIFF_VEC:
> These were supposed to be CASE_CONST_ANY. The omission of CONST_FIXED
> looks like an oversight.
>
>> switch (code)
>> {
>> - case CONST_INT:
>> - case CONST_DOUBLE:
>> - case CONST_FIXED:
>> + CASE_CONST_UNIQUE:
>> case SYMBOL_REF:
>> case CONST:
>> case LABEL_REF:
> This was suppsoed to be CASE_CONST_ANY too. The omission of CONST_VECTOR
> looks like an oversight.
>
>> +/* Match CONST_*s for which pointer equality corresponds to value
>> +equality. */
> Should be:
>
> /* Match CONST_*s for which pointer equality corresponds to value equality. */
>
> (probably an artefact of my work mailer, sorry)
>
>> +
>> +
>> +
> Rather a lot of whitespace there. One line seems enough, since we're
> just before the definition of CONST_INT_P.
>
> OK with those changes, thanks.
>
> Richard
More information about the Gcc-patches
mailing list