This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: RFC/RFA: patch for PR 22156: improve SRA for bit-fields
- From: Alexandre Oliva <aoliva at redhat dot com>
- To: Richard Henderson <rth at redhat dot com>
- Cc: Eric Botcazou <ebotcazou at adacore dot com>, gcc-patches at gcc dot gnu dot org
- Date: Thu, 05 Apr 2007 04:21:06 -0300
- Subject: Re: RFC/RFA: patch for PR 22156: improve SRA for bit-fields
- References: <or648xoi7m.fsf@free.oliva.athome.lsd.ic.unicamp.br> <200703191249.52321.ebotcazou@adacore.com> <or8xdsihdy.fsf@free.oliva.athome.lsd.ic.unicamp.br> <oraby8gs5m.fsf@free.oliva.athome.lsd.ic.unicamp.br> <20070320234004.GB28738@redhat.com> <orejnjca8r.fsf@free.oliva.athome.lsd.ic.unicamp.br> <orvegqjhu5.fsf@free.oliva.athome.lsd.ic.unicamp.br>
On Mar 24, 2007, Alexandre Oliva <aoliva@redhat.com> wrote:
> for gcc/ChangeLog
> from Alexandre Oliva <aoliva@redhat.com>
> PR middle-end/22156
> * tree-sra.c (struct sra_elt): Add in_bitfld_block. Remove
> all_no_warning.
> (struct sra_walk_fns): Remove use_all parameter from use.
> (sra_hash_tree): Handle BIT_FIELD_REFs.
> (sra_elt_hash): Don't hash bitfld blocks.
> (sra_elt_eq): Skip them in parent compares as well. Handle
> BIT_FIELD_REFs.
> (sra_walk_expr): Don't maintain or pass down use_all_p.
> (scan_use): Remove use_all parameter.
> (scalarize_use): Likewise. Re-expand assignment to
> BIT_FIELD_REF of gimple_reg. De-scalarize before input or
> output, and re-scalarize after output. Don't mark anything
> for no warning.
> (scalarize_ldst): Adjust.
> (scalarize_walk_gimple_modify_statement): Likewise.
> (build_element_name_1): Handle BIT_FIELD_REFs.
> (instantiate_element): Don't warn for any element whose parent
> is used as a whole.
> (instantiate_missing_elements_1): Return the sra_elt.
> (canon_type_for_field): New.
> (try_instantiate_multiple_fields): New.
> (instantiate_missing_elemnts): Use them.
> (mark_no_warning): Removed.
> (generate_one_element_ref): Handle BIT_FIELD_REFs.
> (REPLDUP, sra_build_elt_assignment): New.
> (generate_copy_inout): Use them.
> (generate_element_copy): Likewise. Handle bitfld differences.
> (generate_element_zero): Don't recurse for blocks. Use
> sra_build_elt_assignment.
> (generate_one_element_int): Take elt instead of var. Use
> sra_build_elt_assignment.
> (generate_element_init_1): Adjust.
> (scalarize_use, scalarize_copy): Use REPLDUP.
> (scalarize_ldst): Move assert before dereference.
> (dump_sra_elt_name): Handle BIT_FIELD_REFs.
Ping?
http://gcc.gnu.org/ml/gcc-patches/2007-03/msg01625.html
--
Alexandre Oliva http://www.lsd.ic.unicamp.br/~oliva/
FSF Latin America Board Member http://www.fsfla.org/
Red Hat Compiler Engineer aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist oliva@{lsd.ic.unicamp.br, gnu.org}