Hi, I am trying to dump the final-most gimple (in ssa) file. My understanding is that lto encodes GIMPLE IR in the bytestream of the object files and accordingly I invoke PLUGIN_PASS_MANAGER_SETUP to embed my faux dummy pass after 'pass_ipa_lto_finish_out'. Is ssa information available at the 'all_lto_gen_passes' stage? Also, should I check for other properties (PROP_trees) and should I bother with TODO_cleanup_cfg? Error message: cc1: fatal error: pass ‘ipa_lto_gimple_out’ not found but is referenced by new pass ‘gimpleSSA_out’ Any help would be greatly appreciated. Thank you. Regards, Karthik -----------------------------------####################----------------------------------- -----------------------------------####################----------------------------------- #include "gcc-plugin.h" #include "config.h" #include "system.h" #include "coretypes.h" #include "tree.h" #include "intl.h" #include "tm.h" #include "gimple.h" #include "tree-pass.h" #include <string.h> int plugin_is_GPL_compatible; struct ipa_opt_pass_d pass_dump_GSSA = { { IPA_PASS, "gimpleSSA_out", /* name */ NULL, /* gate */ NULL, /* execute */ NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number - a nonzero static_pass_number indicates that the pass is already in the list. */ 0, /* tv_id */ PROP_ssa, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ TODO_update_ssa_any | TODO_dump_func /* todo_flags_finish */ }, NULL, /* generate_summary */ NULL, /* write_summary */ NULL, /* read_summary */ NULL, /* function_read_summary */ NULL, /* stmt_fixup */ 0, /* TODOs */ NULL, /* function_transform */ NULL /* variable_transform */ }; int plugin_init (struct plugin_name_args *plugin_info, struct plugin_gcc_version *version) { /* if (!plugin_default_version_check (version, &gcc_version)) return 1; */ struct register_pass_info pass_info; const char *plugin_name = plugin_info->base_name; int argc = plugin_info->argc; struct plugin_argument *argv = plugin_info->argv; pass_info.pass = &pass_dump_GSSA.pass; pass_info.reference_pass_name = "ipa_lto_gimple_out"; /*Do it for every instance if it is 0. */ pass_info.ref_pass_instance_number = 0; /* This pass can go almost anywhere as long as you're in SSA form */ pass_info.pos_op = PASS_POS_INSERT_AFTER; /* Register this new pass with GCC */ register_callback (plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &pass_info); /* Register the user attribute */ /*register_callback (plugin_name, PLUGIN_ATTRIBUTES, register_attributes, NULL); */ return 0; } -----------------------------------####################----------------------------------- -----------------------------------####################----------------------------------- GCC=/usr/local/bin/gcc-4.5 PLUGIN_SOURCE_FILES= plugin_dumpGimpleSSA.c PLUGIN_OBJECT_FILES= $(patsubst %.c,%.o,$(PLUGIN_SOURCE_FILES)) GCCPLUGINS_DIR:= $(shell $(GCC) -print-file-name=plugin) CFLAGS+= -I$(GCCPLUGINS_DIR)/include -fPIC -O2 dumpGimpleSSA_plugin.so: $(PLUGIN_OBJECT_FILES) $(GCC) -shared $^ -o $@ -----------------------------------####################----------------------------------- /usr/local/bin/gcc-4.5 -v -O2 -o prova -fdump-tree-all -fplugin=/home/karthik/Temp/dumpGimpleSSA_plugin.so ../../prova.c -----------------------------------####################----------------------------------- _________________________________________________________________ The New Busy think 9 to 5 is a cute idea. Combine multiple calendars with Hotmail. http://www.windowslive.com/campaign/thenewbusy?tile=multicalendar&ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_5