From 3dcd7d459532baf13446d089777a29142b0fb5e2 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Fri, 16 May 2003 02:05:29 +0000 Subject: combine.c (expand_compound_operation): Make sure that zero_extend operation is profitable. 2003-05-15 Eric Christopher * combine.c (expand_compound_operation): Make sure that zero_extend operation is profitable. From-SVN: r66853 --- gcc/ChangeLog | 5 +++++ gcc/combine.c | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 413e827..699bba0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-05-15 Eric Christopher + + * combine.c (expand_compound_operation): Make sure + that zero_extend operation is profitable. + 2003-05-15 Richard Henderson * config/alpha/linux.h, config/alpha/linux-elf.h: Remove diff --git a/gcc/combine.c b/gcc/combine.c index bff8b08..79f0226 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -5802,7 +5802,15 @@ expand_compound_operation (x) == 0))) { rtx temp = gen_rtx_ZERO_EXTEND (GET_MODE (x), XEXP (x, 0)); - return expand_compound_operation (temp); + rtx temp2 = expand_compound_operation (temp); + + /* Make sure this is a profitable operation. */ + if (rtx_cost (x, SET) > rtx_cost (temp2, SET)) + return temp2; + else if (rtx_cost (x, SET) > rtx_cost (temp, SET)) + return temp; + else + return x; } /* We can optimize some special cases of ZERO_EXTEND. */ -- cgit v1.1