On Fri, 2013-04-19 at 21:23 -0400, David Malcolm wrote: > This is the hand-written part of the patch; it is required for the > preceding auto-generated patch to make sense.
[Answering my own patch] This patch isn't yet good enough as-is: upon investigating test case failures I found that the patch wasn't properly handling instances of passes, leading to the symptom of: cc1plus: error: unrecognized command line option '-fdump-tree-fre1' which was because both of the instances of "fre" were erroneously getting the dump switch '-fdump-tree-fre' (i.e. missing the trailing instance number). This highlighted a deeper issue with converting the passes to C++ classes: register_pass expects a pre-allocated pass, but potentially needs to create multiple copies of the pass if it's going to be inserted in multiple places, and gcc/passes.c:make_pass_instance creates these instances using a memcpy with a fixed size (based on the pass type). If we're going to support hanging extra data off of a pass instance, it means a small reorganization here. I'm working on a revised patch series which respects the status quo as per -fdump- option names, and which changes register_pass so that you pass in a callback for creating passes, rather than creating the pass yourself. Dave