diff options
author | Alexander Basov <coohpt@gmail.com> | 2015-08-03 19:34:31 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2015-08-03 13:34:31 -0600 |
commit | de0fb9055c0928960ecc8e3a5fe990728611c3ca (patch) | |
tree | a36a9bce7ffcf52891f3053b06bef0050c844f81 /gcc/expr.c | |
parent | f2fef1c8a3a93f320e9842d09a0ad44d0157281b (diff) | |
download | gcc-de0fb9055c0928960ecc8e3a5fe990728611c3ca.zip gcc-de0fb9055c0928960ecc8e3a5fe990728611c3ca.tar.gz gcc-de0fb9055c0928960ecc8e3a5fe990728611c3ca.tar.bz2 |
re PR middle-end/64744 (ARM: gcc internal compiler error: in store_field, at expr.c:6659)
PR middle-end/64744
PR middle-end/48470
PR middle-end/43404
* cfgexpand.c (expand_one_var): Add check if stack is going to
be used in naked function.
* expr.c (expand_expr_addr_expr_1): Remove excess checking
whether expression should not reside in MEM.
* function.c (use_register_for_decl): Do not use registers for
non-register things (volatile, float, BLKMode) in naked functions.
PR middle-end/64744
PR middle-end/48470
PR middle-end/43404
* gcc.target/arm/pr43404.c : New testcase.
* gcc.target/arm/pr48470.c : New testcase.
* gcc.target/arm/pr64744-1.c : New testcase.
* gcc.target/arm/pr64744-2.c : New testcase.
From-SVN: r226528
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 10 |
1 files changed, 1 insertions, 9 deletions
@@ -7603,15 +7603,7 @@ expand_expr_addr_expr_1 (tree exp, rtx target, machine_mode tmode, marked TREE_ADDRESSABLE, which will be either a front-end or a tree optimizer bug. */ - if (TREE_ADDRESSABLE (exp) - && ! MEM_P (result) - && ! targetm.calls.allocate_stack_slots_for_args ()) - { - error ("local frame unavailable (naked function?)"); - return result; - } - else - gcc_assert (MEM_P (result)); + gcc_assert (MEM_P (result)); result = XEXP (result, 0); /* ??? Is this needed anymore? */ |