diff options
author | mycroft <mycroft@138bc75d-0d04-0410-961f-82ee72b054a4> | 1992-07-06 20:15:06 +0000 |
---|---|---|
committer | mycroft <mycroft@138bc75d-0d04-0410-961f-82ee72b054a4> | 1992-07-06 20:15:06 +0000 |
commit | d3115c9016ed0fd89d6c951a2ed8bfe013af49a7 (patch) | |
tree | 4ab72bd153a36b9459a8c41247387a25bab2d88d /gcc/rtl.c | |
parent | 89e6665983bb273f6fd6a89e0b1aa50eedc522dc (diff) | |
download | gcc-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.c | 53 |
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 |