On Fri, Jul 19, 2013 at 5:09 PM, Andrew Pinski <pins...@gmail.com> wrote:
> I was creating a new gimple/folding interface and wanted some opinions
> on the interface.
>
> typedef double_int (*nonzerobits_t)(tree var);
> typedef tree (*valueizer_t)(tree var);
>
> class gimple_combine
> {
> public:
>   gimple_combine(nonzerobits_t a, valueizer_t b) : nonzerobitsf(a),
> valueizerv(b), allow_full_reassiocation(false) {}
>   gimple_combine() : nonzerobitsf(NULL), valueizerv(NULL),
> allow_full_reassiocation(false) {}
>   gimple_combine(bool reas) : nonzerobitsf(NULL), valueizerv(NULL),
> allow_full_reassiocation(reas) {}
>   tree build2 (location_t, enum tree_code, tree, tree, tree);
>   tree build1 (location_t, enum tree_code, tree, tree);
>   tree build3 (location_t, enum tree_code, tree, tree, tree, tree);
>   tree combine (gimple);
> private:
>   nonzerobits_t nonzerobitsf;
>   valueizer_t valueizerv;
>   bool allow_full_reassiocation;
>   tree binary (location_t, enum tree_code, tree, tree, tree);
>   tree unary (location_t, enum tree_code, tree, tree);
>   tree ternary (location_t, enum tree_code, tree, tree, tree, tree);
> };
>
> bool replace_rhs_after_ssa_combine (gimple_stmt_iterator *, tree);
>
> This is what I have so far and wonder if there is anything else I
> should include.
>
> This will be used to replace the folding code in fold-const.c and 
> gimple-fold.c.

I placed what I decided in a branch in git:

http://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/gimple-ssa-combine.h;h=3d597291c1756cdf6e3318fd190ac70911ceb702;hb=d32468a31ab5e50fabab3a04303f6892ad890fd5

Note I won't have time to work on this again until the middle of August or so.

The status of the current patch is that it is able to build libgcc but
there are some addition ICEs due to checking to make sure all of the
forwprop optimizations are pushed over to gimple_combine (since I
started this work on an older code base).

Thanks,
Andrew Pinski

>
> Thanks,
> Andrew Pinski

Reply via email to