https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86567
Bug ID: 86567 Summary: [8/9 Regression] -Wnonnull/-Wformat/-Wrestrict affect code generation Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: amonakov at gcc dot gnu.org Target Milestone: --- #include <vector> std::vector<int> f() { std::vector<int> r; return r; } starting with gcc-8 ICEs using 'g++ -fcompare-debug=-Wnonnull' (as well as Wformat, Wrestrict, Wsuggest-attribute=format) cp/call.c:build_over_call() has: if (warn_nonnull || warn_format || warn_suggest_attribute_format || warn_restrict) { tree *fargs = (!nargs ? argarray : (tree *) alloca (nargs * sizeof (tree))); for (j = 0; j < nargs; j++) { /* For -Wformat undo the implicit passing by hidden reference done by convert_arg_to_ellipsis. */ if (TREE_CODE (argarray[j]) == ADDR_EXPR && TYPE_REF_P (TREE_TYPE (argarray[j]))) fargs[j] = TREE_OPERAND (argarray[j], 0); else fargs[j] = maybe_constant_value (argarray[j]); } warned_p = check_function_arguments (input_location, fn, TREE_TYPE (fn), nargs, fargs, NULL); } which if bypassed does not cause the ICE, which indicates that something in the snippet may affect code generation (not investigating further).