diff options
author | Chen Liqin <liqin@sunnorth.com.cn> | 2007-05-23 06:09:20 +0000 |
---|---|---|
committer | Chen Liqin <liqin@gcc.gnu.org> | 2007-05-23 06:09:20 +0000 |
commit | 6d0ceb7638fa91572e3fb39d957f0ff404bc4619 (patch) | |
tree | aca436d9f67d652a8b921381597d788379fdefe7 /gcc | |
parent | b80cca7b47325f8c46d6f35c0a5d7aa17a28e7c5 (diff) | |
download | gcc-6d0ceb7638fa91572e3fb39d957f0ff404bc4619.zip gcc-6d0ceb7638fa91572e3fb39d957f0ff404bc4619.tar.gz gcc-6d0ceb7638fa91572e3fb39d957f0ff404bc4619.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/config/score/misc.md | 35 | ||||
-rw-r--r-- | gcc/config/score/predicates.md | 11 | ||||
-rw-r--r-- | gcc/config/score/score.c | 4 | ||||
-rw-r--r-- | gcc/config/score/score.h | 1 |
5 files changed, 13 insertions, 48 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ab1dc58..52da89f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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, diff --git a/gcc/config/score/misc.md b/gcc/config/score/misc.md index 5da7240..b43497f 100644 --- a/gcc/config/score/misc.md +++ b/gcc/config/score/misc.md @@ -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")]) diff --git a/gcc/config/score/predicates.md b/gcc/config/score/predicates.md index eefb497..07c4b43 100644 --- a/gcc/config/score/predicates.md +++ b/gcc/config/score/predicates.md @@ -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); -}) diff --git a/gcc/config/score/score.c b/gcc/config/score/score.c index 9fc179e..2d6f721 100644 --- a/gcc/config/score/score.c +++ b/gcc/config/score/score.c @@ -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); diff --git a/gcc/config/score/score.h b/gcc/config/score/score.h index eb3b4f5..3d36a38 100644 --- a/gcc/config/score/score.h +++ b/gcc/config/score/score.h @@ -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) |