re PR target/30987 (Problem while compiling gcc for score)

2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>

	PR target/30987
	* config/score/misc.md (bitclr_c, bitset_c, bittgl_c): remove.
	* config/score/predicate.md (const_pow2, const_npow2): remove.
	* config/score/score.h (ASM_OUTPUT_EXTERNAL): add ASM_OUTPUT_EXTERNAL undef.
	PR target/30474
	* config/score/score.c (score_print_operand): makes sure that only lower 
        bits are used.

From-SVN: r124983
This commit is contained in:
Chen Liqin 2007-05-23 06:09:20 +00:00 committed by Chen Liqin
parent b80cca7b47
commit 6d0ceb7638
5 changed files with 13 additions and 48 deletions

View File

@ -1,3 +1,13 @@
2007-05-23 Chen Liqin <liqin@sunnorth.com.cn>
PR target/30987
* config/score/misc.md (bitclr_c, bitset_c, bittgl_c): remove.
* config/score/predicate.md (const_pow2, const_npow2): remove.
* config/score/score.h (ASM_OUTPUT_EXTERNAL): add ASM_OUTPUT_EXTERNAL undef.
PR target/30474
* config/score/score.c (score_print_operand): makes sure that only lower
bits are used.
2007-05-22 Ian Lance Taylor <iant@google.com>
* tree-vrp.c (avoid_overflow_infinity): New static function,

View File

@ -380,38 +380,3 @@
[(set_attr "type" "arith")
(set_attr "mode" "SI")])
(define_insn "bitclr_c"
[(set (match_operand:SI 0 "register_operand" "=e,d")
(and:SI (match_operand:SI 1 "register_operand" "0,d")
(match_operand:SI 2 "const_npow2")))
(clobber (reg:CC CC_REGNUM))]
""
"@
bitclr! %0, %F2
bitclr.c %0, %1, %F2"
[(set_attr "type" "arith")
(set_attr "mode" "SI")])
(define_insn "bitset_c"
[(set (match_operand:SI 0 "register_operand" "=e,d")
(ior:SI (match_operand:SI 1 "register_operand" "0,d")
(match_operand:SI 2 "const_pow2")))
(clobber (reg:CC CC_REGNUM))]
""
"@
bitset! %0, %E2
bitset.c %0, %1, %E2"
[(set_attr "type" "arith")
(set_attr "mode" "SI")])
(define_insn "bittgl_c"
[(set (match_operand:SI 0 "register_operand" "=e,d")
(xor:SI (match_operand:SI 1 "register_operand" "0,d")
(match_operand:SI 2 "const_pow2")))
(clobber (reg:CC CC_REGNUM))]
""
"@
bittgl! %0, %E2
bittgl.c %0, %1, %E2"
[(set_attr "type" "arith")
(set_attr "mode" "SI")])

View File

@ -75,14 +75,3 @@
return IMM_IN_RANGE (INTVAL (op), 15, 1);
})
(define_predicate "const_pow2"
(match_code "const_int")
{
return IMM_IS_POW_OF_2 ((unsigned HOST_WIDE_INT) INTVAL (op), 0, 31);
})
(define_predicate "const_npow2"
(match_code "const_int")
{
return IMM_IS_POW_OF_2 (~(unsigned HOST_WIDE_INT) INTVAL (op), 0, 31);
})

View File

@ -1167,7 +1167,7 @@ score_print_operand (FILE *file, rtx op, int c)
{
gcc_assert (code == CONST_INT);
fprintf (file, HOST_WIDE_INT_PRINT_HEX,
(unsigned HOST_WIDE_INT) INTVAL (op) >> 16);
(INTVAL (op) >> 16) & 0xffff);
}
else if (c == 'D')
{
@ -1175,7 +1175,7 @@ score_print_operand (FILE *file, rtx op, int c)
{
rtx temp = gen_lowpart (SImode, op);
gcc_assert (GET_MODE (op) == SFmode);
fprintf (file, HOST_WIDE_INT_PRINT_HEX, INTVAL (temp));
fprintf (file, HOST_WIDE_INT_PRINT_HEX, INTVAL (temp) & 0xffffffff);
}
else
output_addr_const (file, op);

View File

@ -785,6 +785,7 @@ typedef struct score_args
output anything and let undefined symbol become external. However
the assembler uses length information on externals to allocate in
data/sdata bss/sbss, thereby saving exec time. */
#undef ASM_OUTPUT_EXTERNAL
#define ASM_OUTPUT_EXTERNAL(STREAM, DECL, NAME) \
score_output_external (STREAM, DECL, NAME)