diff options
Diffstat (limited to 'gnu/usr.bin/cc/cc1plus/expr.c')
| -rw-r--r-- | gnu/usr.bin/cc/cc1plus/expr.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gnu/usr.bin/cc/cc1plus/expr.c b/gnu/usr.bin/cc/cc1plus/expr.c index c2213d5f661d8..3b4f65d1b81d7 100644 --- a/gnu/usr.bin/cc/cc1plus/expr.c +++ b/gnu/usr.bin/cc/cc1plus/expr.c @@ -148,9 +148,16 @@ cplus_expand_expr (exp, target, tmode, modifier) { if (pcc_struct_return) { + extern int flag_access_control; + int old_ac = flag_access_control; + tree init = build (RTL_EXPR, type, 0, return_target); TREE_ADDRESSABLE (init) = 1; + + flag_access_control = 0; expand_aggr_init (slot, init, 0); + flag_access_control = old_ac; + if (TYPE_NEEDS_DESTRUCTOR (type)) { init = build (RTL_EXPR, build_reference_type (type), 0, |
