Hello, On Fri, 13 Mar 2020, Erick Ochoa wrote:
> + for (tree parm = DECL_ARGUMENTS (undefined_function->decl); parm; parm = > DECL_CHAIN (parm)) > + { > + tree type = TREE_TYPE(parm); > + if (dump_file) fprintf(dump_file, "I want the type, do I have it? > %s\n", type ? "true" : "false"); > + } > + } > + return 0; > +} > > I have added the complete patch below, however the function iphw_execute > encapsulates the logic I am trying at the moment. > > The problem is that while this program runs, DECL_ARGUMENTS returns NULL and > therefore the loop is never entered. This is true for functions that have > arguments, such as puts/malloc/... and others in glibc. As argument (types) conceptually belong to the functions type (not its decl), you should look at the function decls type, not at DECL_ARGUMENTS. See the FOREACH_FUNCTION_ARGS iterator and its helpers. Note that you need to pass it TREE_TYPE(funcdecl). (DECL_ARGUMENTS is the list of formal parameters viewed from the function bodies perspective, so without a body that isn't filled). Ciao, Michael.