diff options
author | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-10-20 21:00:23 +0000 |
---|---|---|
committer | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-10-20 21:00:23 +0000 |
commit | 7e91b548b970eb3b300adad4d1e58587dfd170a2 (patch) | |
tree | 98407a614491ba2e6e3f90bd531334efd0366b60 /gcc/calls.c | |
parent | c8fbcf5814ca7d33e2ed28e487be37e72372c18e (diff) | |
download | gcc-7e91b548b970eb3b300adad4d1e58587dfd170a2.tar.gz |
PR rtl-optimization/54315
* calls.c (expand_call): Don't deal specifically with BLKmode values
returned in naked registers.
* expr.h (copy_blkmode_from_reg): Adjust prototype.
* expr.c (copy_blkmode_from_reg): Rename first parameter into TARGET and
make it required. Assert that SRCREG hasn't BLKmode. Add a couple of
short-circuits for common cases and be prepared for sub-word registers.
(expand_assignment): Call copy_blkmode_from_reg for BLKmode values
returned in naked registers.
(store_expr): Likewise.
(store_field): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@192641 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/calls.c')
-rw-r--r-- | gcc/calls.c | 10 |
1 files changed, 0 insertions, 10 deletions
diff --git a/gcc/calls.c b/gcc/calls.c index d4ef639dc10..64e4b09870c 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -3327,16 +3327,6 @@ expand_call (tree exp, rtx target, int ignore) sibcall_failure = 1; } } - else if (TYPE_MODE (rettype) == BLKmode) - { - rtx val = valreg; - if (GET_MODE (val) != BLKmode) - val = avoid_likely_spilled_reg (val); - target = copy_blkmode_from_reg (target, val, rettype); - - /* We can not support sibling calls for this case. */ - sibcall_failure = 1; - } else target = copy_to_reg (avoid_likely_spilled_reg (valreg)); |