diff options
| author | aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-05-20 23:05:59 +0000 |
|---|---|---|
| committer | aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-05-20 23:05:59 +0000 |
| commit | 964d057cbb4cee7704c5e4e32bab22d1ef72e93f (patch) | |
| tree | 27ff2933a8b8d3766088f082ac8e3c703fd06230 | |
| parent | e6e5d4bf2d8dbe3d76d07dc147d6e3da8af2892d (diff) | |
| download | ppe42-gcc-964d057cbb4cee7704c5e4e32bab22d1ef72e93f.tar.gz ppe42-gcc-964d057cbb4cee7704c5e4e32bab22d1ef72e93f.zip | |
* config/mn10300/mn10300.md (movdi, movdf): 64-bit clean-up.
* config/mn10300/mn10300.c (print_operand): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34062 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 3 | ||||
| -rw-r--r-- | gcc/config/mn10300/mn10300.c | 20 | ||||
| -rw-r--r-- | gcc/config/mn10300/mn10300.md | 12 |
3 files changed, 24 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a1a00b16193..fa37460e93c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2000-05-20 Alexandre Oliva <aoliva@cygnus.com> + * config/mn10300/mn10300.md (movdi, movdf): 64-bit clean-up. + * config/mn10300/mn10300.c (print_operand): Likewise. + * final.c (split_double): Right shift of negative values is not portable. diff --git a/gcc/config/mn10300/mn10300.c b/gcc/config/mn10300/mn10300.c index 8104a508e64..fcd86a242a7 100644 --- a/gcc/config/mn10300/mn10300.c +++ b/gcc/config/mn10300/mn10300.c @@ -177,8 +177,12 @@ print_operand (file, x, code) } case CONST_INT: - print_operand_address (file, x); - break; + { + rtx low, high; + split_double (x, &low, &high); + fprintf (file, "%ld", (long)INTVAL (low)); + break; + } default: abort (); @@ -231,11 +235,13 @@ print_operand (file, x, code) } case CONST_INT: - if (INTVAL (x) < 0) - print_operand_address (file, GEN_INT (-1)); - else - print_operand_address (file, GEN_INT (0)); - break; + { + rtx low, high; + split_double (x, &low, &high); + fprintf (file, "%ld", (long)INTVAL (high)); + break; + } + default: abort (); } diff --git a/gcc/config/mn10300/mn10300.md b/gcc/config/mn10300/mn10300.md index 3accb095cd4..125815b1037 100644 --- a/gcc/config/mn10300/mn10300.md +++ b/gcc/config/mn10300/mn10300.md @@ -419,8 +419,10 @@ case 11: if (GET_CODE (operands[1]) == CONST_INT) { - val[0] = INTVAL (operands[1]); - val[1] = val[0] < 0 ? -1 : 0; + rtx low, high; + split_double (operands[1], &low, &high); + val[0] = INTVAL (low); + val[1] = INTVAL (high); } if (GET_CODE (operands[1]) == CONST_DOUBLE) { @@ -567,8 +569,10 @@ case 11: if (GET_CODE (operands[1]) == CONST_INT) { - val[0] = INTVAL (operands[1]); - val[1] = val[0] < 0 ? -1 : 0; + rtx low, high; + split_double (operands[1], &low, &high); + val[0] = INTVAL (low); + val[1] = INTVAL (high); } if (GET_CODE (operands[1]) == CONST_DOUBLE) { |

