summaryrefslogtreecommitdiff
path: root/gcc/rtl.c
diff options
context:
space:
mode:
authormycroft <mycroft@138bc75d-0d04-0410-961f-82ee72b054a4>1992-07-06 20:15:06 +0000
committermycroft <mycroft@138bc75d-0d04-0410-961f-82ee72b054a4>1992-07-06 20:15:06 +0000
commitd3115c9016ed0fd89d6c951a2ed8bfe013af49a7 (patch)
tree4ab72bd153a36b9459a8c41247387a25bab2d88d /gcc/rtl.c
parent89e6665983bb273f6fd6a89e0b1aa50eedc522dc (diff)
downloadgcc-d3115c9016ed0fd89d6c951a2ed8bfe013af49a7.tar.gz
entered into RCS
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@1476 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/rtl.c')
-rw-r--r--gcc/rtl.c53
1 files changed, 48 insertions, 5 deletions
diff --git a/gcc/rtl.c b/gcc/rtl.c
index a145e54ab50..7b646c3573e 100644
--- a/gcc/rtl.c
+++ b/gcc/rtl.c
@@ -36,6 +36,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
extern struct obstack *rtl_obstack;
extern long ftell();
+
+#if HOST_BITS_PER_WIDE_INT != HOST_BITS_PER_INT
+extern long atol();
+#endif
/* Indexed by rtx code, gives number of operands for an rtx with that code.
Does NOT include rtx header data (code and links).
@@ -136,6 +140,8 @@ char *rtx_format[] = {
"i" an integer
prints the integer
"n" like "i", but prints entries from `note_insn_name'
+ "w" an integer of width HOST_BITS_PER_WIDE_INT
+ prints the integer
"s" a pointer to a string
prints the string
"S" like "s", but optional:
@@ -282,6 +288,7 @@ copy_rtx (orig)
XEXP (copy, i) = copy_rtx (XEXP (orig, i));
break;
+ case '0':
case 'u':
XEXP (copy, i) = XEXP (orig, i);
break;
@@ -297,9 +304,21 @@ copy_rtx (orig)
}
break;
- default:
+ case 'w':
+ XWINT (copy, i) = XWINT (orig, i);
+ break;
+
+ case 'i':
XINT (copy, i) = XINT (orig, i);
break;
+
+ case 's':
+ case 'S':
+ XSTR (copy, i) = XSTR (orig, i);
+ break;
+
+ default:
+ abort ();
}
}
return copy;
@@ -355,6 +374,7 @@ copy_most_rtx (orig, may_share)
XEXP (copy, i) = copy_most_rtx (XEXP (orig, i), may_share);
break;
+ case '0':
case 'u':
XEXP (copy, i) = XEXP (orig, i);
break;
@@ -371,9 +391,22 @@ copy_most_rtx (orig, may_share)
}
break;
- default:
+ case 'w':
+ XWINT (copy, i) = XWINT (orig, i);
+ break;
+
+ case 'n':
+ case 'i':
XINT (copy, i) = XINT (orig, i);
break;
+
+ case 's':
+ case 'S':
+ XSTR (copy, i) = XSTR (orig, i);
+ break;
+
+ default:
+ abort ();
}
}
return copy;
@@ -500,6 +533,7 @@ read_rtx (infile)
rtx return_rtx;
register int c;
int tmp_int;
+ HOST_WIDE_INT tmp_wide;
/* Linked list structure for making RTXs: */
struct rtx_list
@@ -612,8 +646,7 @@ read_rtx (infile)
}
/* get vector length and allocate it */
XVEC (return_rtx, i) = (list_counter
- ? rtvec_alloc (list_counter)
- : (struct rtvec_def *) NULL);
+ ? rtvec_alloc (list_counter) : NULL_RTVEC);
if (list_counter > 0)
{
next_rtx = list_rtx;
@@ -684,6 +717,16 @@ read_rtx (infile)
}
break;
+ case 'w':
+ read_name (tmp_char, infile);
+#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT
+ tmp_wide = atoi (tmp_char);
+#else
+ tmp_wide = atol (tmp_char);
+#endif
+ XWINT (return_rtx, i) = tmp_wide;
+ break;
+
case 'i':
case 'n':
read_name (tmp_char, infile);
@@ -737,7 +780,7 @@ init_rtl ()
/* Set the GET_RTX_FORMAT of CONST_DOUBLE to a string
of as many `i's as we now have elements. */
for (i = 0; i < rtx_length[(int) CONST_DOUBLE]; i++)
- *s++ = 'i';
+ *s++ = 'w';
*s++ = 0;
}
#endif