On Fri, 2015-11-13 at 09:12 -0500, David Malcolm wrote: [...snip...] > > diff --git a/gcc/passes.c b/gcc/passes.c > > index dd8d00a..e634c5c 100644 > > --- a/gcc/passes.c > > +++ b/gcc/passes.c > > @@ -81,6 +81,13 @@ opt_pass::clone () > > internal_error ("pass %s does not support cloning", name); > > } > > > > +void > > +opt_pass::set_pass_param (unsigned int, bool) > > +{ > > + internal_error ("pass %s needs a set_pass_param implementation to handle > > the" > > + " extra argument in NEXT_PASS", name); > > +} > > Shouldn't this error message refer to NEXT_PASS_WITH_ARG? (since > set_pass_param only gets called when someone starts using > NEXT_PASS_WITH_ARG in passes.def)
[...snip...] > > diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h > > index 49e22a9..7b2571f 100644 > > --- a/gcc/tree-pass.h > > +++ b/gcc/tree-pass.h > > @@ -83,6 +83,7 @@ public: > > > > The default implementation prints an error message and aborts. */ > > virtual opt_pass *clone (); > > + virtual void set_pass_param (unsigned int, bool); > > Is the patch missing the implementation of opt_pass::set_pass_param? Do > you see a linker error? > > Maybe opt_pass::set_pass_param should have a comment/error explaining to > the developer that they got here because they set NEXT_PASS_WITH_ARG and > didn't implement how the arg gets stored. Gah, -ENO_COFFEE; I now see it above (and indeed I commented on it). Sorry for the noise. Dave