25 setName(
"Reassociation");
27 using Transform::postorder;
29 const IR::Node *reassociate(IR::Operation_Binary *root);
31 const IR::Node *postorder(IR::Add *expr)
override {
return reassociate(expr); }
32 const IR::Node *postorder(IR::Mul *expr)
override {
return reassociate(expr); }
33 const IR::Node *postorder(IR::BOr *expr)
override {
return reassociate(expr); }
34 const IR::Node *postorder(IR::BAnd *expr)
override {
return reassociate(expr); }
35 const IR::Node *postorder(IR::BXor *expr)
override {
return reassociate(expr); }
36 const IR::BlockStatement *preorder(IR::BlockStatement *bs)
override {
39 if (bs->hasAnnotation(IR::Annotation::disableOptimizationAnnotation)) prune();
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13