Hi, Currently multiple return-struct-* tests from MPX testsuite fail. This patch fixes it. Bootstrapped and tested on x86_64-unknown-linux-gnu. Applied to trunk. I'm going to port it to GCC5 after 5.3 release.
Thanks, Ilya -- gcc/ 2015-12-03 Ilya Enkovich <enkovich....@gmail.com> * cfgexpand.c (expand_gimple_stmt_1): Return statement with DECL as return value is allowed to have NULL bounds. diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 1990e10..2c3b23d 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -3534,6 +3534,12 @@ expand_gimple_stmt_1 (gimple *stmt) { tree result = DECL_RESULT (current_function_decl); + /* Mark we have return statement with missing bounds. */ + if (!bnd + && chkp_function_instrumented_p (cfun->decl) + && !DECL_P (op0)) + bnd = error_mark_node; + /* If we are not returning the current function's RESULT_DECL, build an assignment to it. */ if (op0 != result) @@ -3550,9 +3556,6 @@ expand_gimple_stmt_1 (gimple *stmt) op0 = build2 (MODIFY_EXPR, TREE_TYPE (result), result, op0); } - /* Mark we have return statement with missing bounds. */ - if (!bnd && chkp_function_instrumented_p (cfun->decl)) - bnd = error_mark_node; } if (!op0)