Hi, Inspired from thread_sanityzer GCC pass I am trying to instrument every memory access of a chosen function. Through the gate of my pass (GCC plugin 6.1), I only instrument function which name is present in a text file. Then I changed a little bit of thread_sanytizer pass to instrument every memory access inside these functions. My problem happens on C++ code as simple as : int main(int argc, char * argv[]) { Domain dom; int b = dom.relt(); int a = dom.elt(); return 0; } in domain.hpp there is : the domain class with relt returning a reference and elt returning a const NO reference. The SSA code generated is : Location: File (simple_main.cpp) Line (8) <bb 2>: DomAin::DomAin (&dom); <bb 3>: b_4 = DomAin::elt (&dom); # DEBUG b => b_4 _6 = DomAin::relt (&dom); *correspondance_instrument_load_store* (11, _6, &"simple_main.cpp"[0]); a_7 = *_6; # DEBUG a => a_7 _8 = 0; dom ={v} {CLOBBER}; return _8; <L2>: dom ={v} {CLOBBER}; resx 1 BUT if I just left either int b = dom.relt(); OR int a = dom.elt(); alone in the main, there is no segfault. Error trace : 0xac0eff crash_signal ../../gcc/toplev.c:333 0x93374e inline_edge_summary ../../gcc/ipa-inline.h:281 0x93374e estimate_function_body_sizes ../../gcc/ipa-inline-analysis.c:2648 0x937066 compute_inline_parameters(cgraph_node*, bool) ../../gcc/ipa-inline-analysis.c:2953 0xb5fe9a convert_callers_for_node ../../gcc/tree-sra.c:5112 0xb69a9e cgraph_node::call_for_symbol_and_aliases(bool (*)(cgraph_node*, void*), void*, bool) ../../gcc/cgraph.h:3071 0xb69a9e convert_callers ../../gcc/tree-sra.c:5127 0xb69a9e modify_function ../../gcc/tree-sra.c:5183 0xb69a9e ipa_early_sra ../../gcc/tree-sra.c:5411 0xb69a9e execute ../../gcc/tree-sra.c:5458 Thank you for your help, - Hugo