[PATCH 00/10] Second attempt to fix PR47654 and PR49649

Sebastian Pop sebpop@gmail.com
Thu Jul 21 18:32:00 GMT 2011


Hi,

This patch-set addresses the comments from Tobias on fixing PR47654.

The first patches are cleanups:

- Start counting nesting level from 0 and use the standard "Polyhedral
    SCattering Transformed" psct_* interface.
- Do not compute twice type, lb, and ub.
- Record the loop level that defines a clast_name.
- Cleanup function params using a struct.
- Add fixme comment.
- Rename gcc_type_for_clast_* into type_for_clast_*
- Remove max_signed_precision_type.

The following patch is an optimization:

- Compute once and cache the LB and UB for each clast_name.

that uses the hashtable of clast_names to also attach the information
on bounds of the name: this would avoid asking "polyhedral questions"
every time we see the name of an induction variable in an expression.

The following patch is also an optimization:

- Generate signed types whenever possible.

this makes us generate signed types instead of unsigned, whenever the
interval would still fit in a signed type of the same precision.

Finally the fix for PR47654:

- Infer types based on lb and ub.

I adapted the previous patch such that we now compute both the type
and the bounds during the same traversal of the CLAST tree.  The
computation of the type now also integrates the information of the
bounds of the sub-expressions and the result of the expression.

The patch-set bootstrapped and tested on amd64-linux.  Ok for trunk?

Thanks,
Sebastian



More information about the Gcc-patches mailing list