From f2c5fa498fa8014b96f4ba6d552e2eb50bdcf5bb Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Tue, 22 Mar 2016 21:28:02 -0400 Subject: [PATCH 09/91] FIXME: handle INSN_UID, flags, and extra text for 'r' --- gcc/read-md.c | 2 +- gcc/read-rtl.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/gcc/read-md.c b/gcc/read-md.c index 6c58878..aab5f12 100644 --- a/gcc/read-md.c +++ b/gcc/read-md.c @@ -372,7 +372,7 @@ read_skip_spaces (void) if (c != '*') { unread_char (c); - fatal_with_file_and_line ("stray '/' in file"); + return '/'; } prevc = 0; diff --git a/gcc/read-rtl.c b/gcc/read-rtl.c index 7549a91..c414e7f 100644 --- a/gcc/read-rtl.c +++ b/gcc/read-rtl.c @@ -1180,6 +1180,54 @@ read_rtx_code (const char *code_name) if (iterator) record_iterator_use (iterator, return_rtx); + /* Check for flags. */ + do + { + i = read_char (); + if (i == '/') + { + char flag_char = read_char (); + fprintf (stderr, "FIXME: handling flag `/%c'\n", flag_char); + switch (flag_char) + { + case 's': + RTX_FLAG (return_rtx, in_struct) = 1; + break; + case 'v': + RTX_FLAG (return_rtx, volatil) = 1; + break; + case 'u': + RTX_FLAG (return_rtx, unchanging) = 1; + break; + case 'f': + RTX_FLAG (return_rtx, frame_related) = 1; + break; + case 'j': + RTX_FLAG (return_rtx, jump) = 1; + break; + case 'c': + RTX_FLAG (return_rtx, call) = 1; + break; + case 'i': + RTX_FLAG (return_rtx, return_val) = 1; + break; + default: + fatal_with_file_and_line ("unrecognized flag: `%c'", flag_char); + } + } + else + { + unread_char (i); + break; + } + } while (1); + + if (INSN_CHAIN_CODE_P (code)) + { + read_name (&name); + INSN_UID (return_rtx) = atoi (name.string); + } + /* If what follows is `: mode ', read it and store the mode in the rtx. */ @@ -1419,6 +1467,10 @@ read_rtx_code (const char *code_name) validate_const_int (name.string); set_regno_raw (return_rtx, atoi (name.string), 1); REG_ATTRS (return_rtx) = NULL; +#ifndef GENERATOR_FILE + read_name (&name); // FIXME + fprintf (stderr, "FIXME: 'r': extra string `%s'\n", name.string); +#endif break; default: -- 1.8.5.3