aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-05-15 20:24:03 +0000
committerRichard Stallman <rms@gnu.org>1992-05-15 20:24:03 +0000
commitb505fab860138fe421b466f6e89cbe4a6a419fca (patch)
treee424d78a7e5f1757103956766b2584068cac118c /gcc
parent963dc8f540238beb098625d8de653bbf01de2962 (diff)
downloadgcc-b505fab860138fe421b466f6e89cbe4a6a419fca.zip
gcc-b505fab860138fe421b466f6e89cbe4a6a419fca.tar.gz
gcc-b505fab860138fe421b466f6e89cbe4a6a419fca.tar.bz2
*** empty log message ***
From-SVN: r991
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/i860/fx2800.h39
-rw-r--r--gcc/config/i860/i860.c10
2 files changed, 31 insertions, 18 deletions
diff --git a/gcc/config/i860/fx2800.h b/gcc/config/i860/fx2800.h
index d23f2f6..993bd60 100644
--- a/gcc/config/i860/fx2800.h
+++ b/gcc/config/i860/fx2800.h
@@ -107,26 +107,37 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
tree decl; \
int i; \
\
- for (i=1;*dtyps[i];i++) { \
- decl = IDENTIFIER_GLOBAL_VALUE (get_identifier (dtyps[i])); \
- if (decl) { \
+ for (i=1;*dtyps[i];i++) \
+ for (decl = syms; decl; decl = TREE_CHAIN(decl)) \
+ if ((TREE_CODE (decl) == TYPE_DECL) && \
+ !strcmp(IDENTIFIER_POINTER(DECL_NAME(decl)), dtyps[i])) { \
TYPE_SYMTAB_ADDRESS (TREE_TYPE (decl)) = i; \
typevec[i] = TYPE_DEFINED; \
dbxout_symbol (decl, 0); \
+ break; \
} \
- } \
\
- decl = IDENTIFIER_GLOBAL_VALUE (get_identifier ("long int")); \
- TYPE_SYMTAB_ADDRESS (TREE_TYPE (decl)) = i; \
- typevec[i] = TYPE_DEFINED; \
- fprintf(asmfile,".stab \"long int:t%d=3\",0,0x%x,0,0\n",i++,N_LSYM); \
- TREE_ASM_WRITTEN (decl) = 1; \
+ for (decl = syms; decl; decl = TREE_CHAIN(decl)) \
+ if ((TREE_CODE (decl) == TYPE_DECL) && \
+ !strcmp(IDENTIFIER_POINTER(DECL_NAME(decl)),"long int")) { \
+ TYPE_SYMTAB_ADDRESS (TREE_TYPE (decl)) = i; \
+ typevec[i] = TYPE_DEFINED; \
+ fprintf(asmfile,".stab \"long int:t%d=3\",0,0x%x,0,0\n", \
+ i++,N_LSYM); \
+ TREE_ASM_WRITTEN (decl) = 1; \
+ break; \
+ } \
\
- decl = IDENTIFIER_GLOBAL_VALUE (get_identifier ("long unsigned int"));\
- TYPE_SYMTAB_ADDRESS (TREE_TYPE (decl)) = i; \
- typevec[i] = TYPE_DEFINED; \
- fprintf(asmfile,".stab \"long unsigned int:t%d=17\",0,0x%x,0,0\n",i++,N_LSYM);\
- TREE_ASM_WRITTEN (decl) = 1; \
+ for (decl = syms; decl; decl = TREE_CHAIN(decl)) \
+ if ((TREE_CODE (decl) == TYPE_DECL) && !strcmp( \
+ IDENTIFIER_POINTER(DECL_NAME(decl)),"long unsigned int")) { \
+ TYPE_SYMTAB_ADDRESS (TREE_TYPE (decl)) = i; \
+ typevec[i] = TYPE_DEFINED; \
+ fprintf(asmfile,".stab \"long unsigned int:t%d=17\",0,0x%x,0,0\n",\
+ i++,N_LSYM); \
+ TREE_ASM_WRITTEN (decl) = 1; \
+ break; \
+ } \
next_type_number = i; };
/* Alliant dbx doesn't understand split names... */
diff --git a/gcc/config/i860/i860.c b/gcc/config/i860/i860.c
index 51175c7..f4ecdb2 100644
--- a/gcc/config/i860/i860.c
+++ b/gcc/config/i860/i860.c
@@ -669,12 +669,14 @@ singlemove_string (operands)
}
if (GET_CODE (operands[1]) == CONST_INT)
{
+ if (operands[1] == const0_rtx)
+ return "mov %?r0,%0";
if((INTVAL (operands[1]) & 0xffff0000) == 0)
return "or %L1,%?r0,%0";
+ if((INTVAL (operands[1]) & 0xffff8000) == 0xffff8000)
+ return "adds %1,%?r0,%0";
if((INTVAL (operands[1]) & 0x0000ffff) == 0)
return "orh %H1,%?r0,%0";
- if (operands[1] == const0_rtx)
- return "mov %?r0,%0";
}
return "mov %1,%0";
}
@@ -1196,7 +1198,7 @@ output_size_for_block_move (size, reg, align)
#if 1
cc_status.flags &= ~ CC_KNOW_HI_R31;
- output_asm_insn ("mov %1,%0", xoperands);
+ output_asm_insn (singlemove_string (xoperands), xoperands);
#else
if (GET_CODE (size) == REG)
output_asm_insn ("sub %2,%1,%0", xoperands);
@@ -1621,7 +1623,7 @@ sfmode_constant_to_ulong (x)
abort ();
#if TARGET_FLOAT_FORMAT != HOST_FLOAT_FORMAT
-# error IEEE emulation needed
+ error IEEE emulation needed
#endif
REAL_VALUE_FROM_CONST_DOUBLE (d, x);
u2.f = d;