summaryrefslogtreecommitdiff
path: root/gcc/optabs.c
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2002-02-24 12:46:52 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2002-02-24 12:46:52 +0000
commite99172f220aa963aaa0fd1e0f07819249cb98a93 (patch)
tree99233f48d28edd8bdceacfb41c695098e8b5393d /gcc/optabs.c
parent8c275f0229ae41e95f0ee735d6fa31676acf072c (diff)
downloadgcc-e99172f220aa963aaa0fd1e0f07819249cb98a93.tar.gz
* optabs.c (widen_operand): Only call convert_modes for
promoted SUBREG if signedness matches. * config/alpha/alpha.md (*addsi_se2, *subsi_se2): New patterns. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50004 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/optabs.c')
-rw-r--r--gcc/optabs.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/optabs.c b/gcc/optabs.c
index 2a2ebb3a8df..69fb999a7de 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -191,7 +191,8 @@ widen_operand (op, mode, oldmode, unsignedp, no_extend)
do so. */
if (! no_extend
|| GET_MODE (op) == VOIDmode
- || (GET_CODE (op) == SUBREG && SUBREG_PROMOTED_VAR_P (op)))
+ || (GET_CODE (op) == SUBREG && SUBREG_PROMOTED_VAR_P (op)
+ && SUBREG_PROMOTED_UNSIGNED_P (op) == unsignedp))
return convert_modes (mode, oldmode, op, unsignedp);
/* If MODE is no wider than a single word, we return a paradoxical