CVS: gcc/gcc-3.3/gcc/config/msp430 msp430.c,1.84,1.85

Dmitry Diky <[email protected]>
Newsgroups gmane.comp.hardware.texas-instruments.msp430.gcc.cvs
Message-ID <[email protected]>
Update of /cvsroot/mspgcc/gcc/gcc-3.3/gcc/config/msp430
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27871

Modified Files:
	msp430.c 
Log Message:
allocate internal registers via static buffer to avoid memory conflicts.


Index: msp430.c
===================================================================
RCS file: /cvsroot/mspgcc/gcc/gcc-3.3/gcc/config/msp430/msp430.c,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -w -d -r1.84 -r1.85
--- msp430.c	8 Jul 2004 19:21:09 -0000	1.84
+++ msp430.c	26 Oct 2004 16:12:28 -0000	1.85
@@ -428,6 +428,27 @@
 rtx mpy_rtx, mpys_rtx, mac_rtx, macs_rtx, op2_rtx, reslo_rtx, reshi_rtx,
     sumext_rtx, ressi_rtx;
 
+
+static char __dummy[1024];
+
+rtx
+sym_ref(mode, arg)
+enum machine_mode mode;
+const char *arg;
+{
+  rtx rt;
+  static int i = 0;
+  rt = (rtx) &__dummy[i];
+  i += sizeof(*rt);
+  memset(rt,0,4);
+  PUT_CODE(rt,SYMBOL_REF);
+  PUT_MODE(rt,mode);
+  XSTR(rt,0) = arg;
+
+  return rt;
+}
+
+
 void
 msp430_init_once ()
 {
@@ -444,15 +465,15 @@
   __RESSI	<- not natural 
  *****************************/
 
-  mpy_rtx = gen_rtx_MEM (HImode, gen_rtx_SYMBOL_REF (HImode, "__MPY"));
-  mpys_rtx = gen_rtx_MEM (HImode, gen_rtx_SYMBOL_REF (HImode, "__MPYS"));
-  mac_rtx = gen_rtx_MEM (HImode, gen_rtx_SYMBOL_REF (HImode, "__MAC"));
-  macs_rtx = gen_rtx_MEM (HImode, gen_rtx_SYMBOL_REF (HImode, "__MACS"));
-  op2_rtx = gen_rtx_MEM (HImode, gen_rtx_SYMBOL_REF (HImode, "__OP2"));
-  reslo_rtx = gen_rtx_MEM (HImode, gen_rtx_SYMBOL_REF (HImode, "__RESLO"));
-  reshi_rtx = gen_rtx_MEM (HImode, gen_rtx_SYMBOL_REF (HImode, "__RESHI"));
-  sumext_rtx = gen_rtx_MEM (HImode, gen_rtx_SYMBOL_REF (HImode, "__SUMEXT"));
-  ressi_rtx = gen_rtx_MEM (SImode, gen_rtx_SYMBOL_REF (SImode, "__RESLO"));
+  mpy_rtx = gen_rtx_MEM (HImode, sym_ref (HImode, "__MPY"));
+  mpys_rtx = gen_rtx_MEM (HImode, sym_ref (HImode, "__MPYS"));
+  mac_rtx = gen_rtx_MEM (HImode, sym_ref (HImode, "__MAC"));
+  macs_rtx = gen_rtx_MEM (HImode, sym_ref (HImode, "__MACS"));
+  op2_rtx = gen_rtx_MEM (HImode, sym_ref (HImode, "__OP2"));
+  reslo_rtx = gen_rtx_MEM (HImode, sym_ref (HImode, "__RESLO"));
+  reshi_rtx = gen_rtx_MEM (HImode, sym_ref (HImode, "__RESHI"));
+  sumext_rtx = gen_rtx_MEM (HImode, sym_ref (HImode, "__SUMEXT"));
+  ressi_rtx = gen_rtx_MEM (SImode, sym_ref (SImode, "__RESLO"));
   return;
 }
 
@@ -9151,7 +9172,7 @@
       rtx mult, op1, op2;
       rtvec vec;
       /* prepare 'call' pattern */
-      if (sext)
+      if (sext==1)
 	{
 	  op1 = gen_rtx_SIGN_EXTEND (op0mode, r10);
 	  op2 = gen_rtx_SIGN_EXTEND (op0mode, r12);
@@ -9161,7 +9182,6 @@
 	  op1 = r10;
 	  op2 = r12;
 	}
-
       mult = gen_rtx_MULT (op0mode, op1, op2);
       set = gen_rtx_SET (op0mode, r14, mult);
       vec = gen_rtvec (3, set, clob1, clob2);



-------------------------------------------------------
This SF.net email is sponsored by: IT Product Guide on ITManagersJournal
Use IT products in your business? Tell us what you think of them. Give us
Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more
http://productguide.itmanagersjournal.com/guidepromo.tmpl
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.