> Prevents the following UBSAN error: > > ./xgcc -B. > /home/marxin/Programming/gcc/gcc/testsuite/g++.dg/torture/pr49770.C -O2 -c > /home/marxin/Programming/gcc2/gcc/ipa-modref-tree.h:482:22: runtime error: > load of value 2, which is not a valid value for type 'bool' > #0 0x1fdb4d1 in modref_tree<int>::merge(modref_tree<int>*, > vec<modref_parm_map, va_heap, vl_ptr>*) > /home/marxin/Programming/gcc2/gcc/ipa-modref-tree.h:482 > #1 0x1fcadaa in merge_call_side_effects(modref_summary*, gimple*, > modref_summary*, bool) /home/marxin/Programming/gcc2/gcc/ipa-modref.c:511 > #2 0x1fcbadd in analyze_call > /home/marxin/Programming/gcc2/gcc/ipa-modref.c:642 > #3 0x1fcc061 in analyze_stmt > /home/marxin/Programming/gcc2/gcc/ipa-modref.c:732 > #4 0x1fccf31 in analyze_function > /home/marxin/Programming/gcc2/gcc/ipa-modref.c:823 > #5 0x1fd17e5 in execute > /home/marxin/Programming/gcc2/gcc/ipa-modref.c:1441 > #6 0x25cca6e in execute_one_pass(opt_pass*) > /home/marxin/Programming/gcc2/gcc/passes.c:2509 > #7 0x25cd39b in execute_pass_list_1 > /home/marxin/Programming/gcc2/gcc/passes.c:2597 > #8 0x25cd450 in execute_pass_list_1 > /home/marxin/Programming/gcc2/gcc/passes.c:2598 > #9 0x25cd4ee in execute_pass_list(function*, opt_pass*) > /home/marxin/Programming/gcc2/gcc/passes.c:2608 > #10 0x25c7a5a in do_per_function_toporder(void (*)(function*, void*), > void*) /home/marxin/Programming/gcc2/gcc/passes.c:1726 > #11 0x25cfa3f in execute_ipa_pass_list(opt_pass*) > /home/marxin/Programming/gcc2/gcc/passes.c:2941 > #12 0x173572d in ipa_passes > /home/marxin/Programming/gcc2/gcc/cgraphunit.c:2642 > #13 0x17364ee in symbol_table::compile() > /home/marxin/Programming/gcc2/gcc/cgraphunit.c:2777 > #14 0x17372d9 in symbol_table::finalize_compilation_unit() > /home/marxin/Programming/gcc2/gcc/cgraphunit.c:3022 > #15 0x2a1f00a in compile_file > /home/marxin/Programming/gcc2/gcc/toplev.c:485 > #16 0x2a27dc8 in do_compile > /home/marxin/Programming/gcc2/gcc/toplev.c:2321 > #17 0x2a283cc in toplev::main(int, char**) > /home/marxin/Programming/gcc2/gcc/toplev.c:2460 > #18 0x54f21cd in main /home/marxin/Programming/gcc2/gcc/main.c:39 > #19 0x7ffff6f0de09 in __libc_start_main ../csu/libc-start.c:314 > #20 0x9eac09 in _start > (/home/marxin/Programming/gcc2/objdir/gcc/cc1plus+0x9eac09) > > Patch can bootstrap on x86_64-linux-gnu and survives regression tests. > > Ready to be installed?
OK (to silence valgrind). The situation here is harmless - when param_index is -1 the param_offset_known has no meaning, but we still merge it into the summary. Honza