Hi all,

When I build lm32-elf-gcc, it failed at libgcc configure due to
lm32-elf-cc1 segment fault when compile conftest.c:

void bar ();
void clean (int *);
void foo ()
{
  int i __attribute__ ((cleanup (clean)));
  bar();
}

Then I find lm32_legitimate_constant_p return false too much times, it
shouldn't like this, I think.

And I find the movsi pattern has handle the pic and reloc_operand, but
lm32_legitimate_constant_p
handle them again, so, I think maybe it is unnecessary.

When I remove the unnecessary constant legitimate check, lm32-elf-gcc
is built OK.
And I made a patch for this. Please review.

---
 gcc/config/lm32/lm32.c |    4 ----
 1 file changed, 4 deletions(-)

diff --git a/gcc/config/lm32/lm32.c b/gcc/config/lm32/lm32.c
index 376df05..47024ff 100644
--- a/gcc/config/lm32/lm32.c
+++ b/gcc/config/lm32/lm32.c
@@ -1236,9 +1236,5 @@ lm32_move_ok (enum machine_mode mode, rtx operands[2]) {
 static bool
 lm32_legitimate_constant_p (enum machine_mode mode, rtx x)
 {
-  /* 32-bit addresses require multiple instructions.  */
-  if (!flag_pic && reloc_operand (x, mode))
-    return false;
-
   return true;
 }
--

ChangeLog

2012-07-10  Jia Liu  <pro...@gmail.com>

gcc/
        * config/lm32/lm32.c (lm32_legitimate_constant_p): Remove
unnecessary constant legitimate check.

Regards,
Jia

Attachment: 0001-remove-the-unnecessary-constant-check.patch
Description: Binary data

Reply via email to