RFC: Gimple combine/folding interface

Andrew Pinski pinskia@gmail.com
Sat Jul 20 01:01:00 GMT 2013


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.

Thanks,
Andrew Pinski



More information about the Gcc-patches mailing list