diff --git a/paddle/fluid/framework/ir/fusion_group/code_generator.cc b/paddle/fluid/framework/ir/fusion_group/code_generator.cc index 438a06f0f9acebbb0b7033f6ad171cf71b0cc082..6555a65c3bd4c21740b3d44ac18a756d50d22f00 100644 --- a/paddle/fluid/framework/ir/fusion_group/code_generator.cc +++ b/paddle/fluid/framework/ir/fusion_group/code_generator.cc @@ -263,12 +263,17 @@ std::string CodeGenerator::EmitParameters( } size_t index = 0; + std::vector output_args; for (auto id : output_ids) { if (intermediate_ids.find(id) == intermediate_ids.end()) { - ret << dtypes.at(id) << "* " << ArgName(id); - if (index != output_ids.size() - 1) { - ret << ", "; - } + std::string args_str = dtypes.at(id) + "* " + ArgName(id); + output_args.push_back(args_str); + } + } + for (auto args : output_args) { + ret << args; + if (index != output_args.size() - 1) { + ret << ", "; } index++; } diff --git a/paddle/fluid/framework/ir/fusion_group/subgraph.h b/paddle/fluid/framework/ir/fusion_group/subgraph.h index 40707b7c8bb7f58b62c9ac7f2178e27cf424920d..66b17e9f6fe95519b7687bc1c5725684c5c98610 100644 --- a/paddle/fluid/framework/ir/fusion_group/subgraph.h +++ b/paddle/fluid/framework/ir/fusion_group/subgraph.h @@ -155,7 +155,7 @@ class SubGraph { if (node->IsOp()) { auto inputs = node->inputs; for (auto* in : inputs) { - if (in == n) { + if (in && in->Name() == n->Name()) { if (!Has(node)) enable_remove = false; leaf_graph = false; }