From db6024341750de505c0480a0f2f70bd1be983631 Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Wed, 13 Apr 2016 15:29:02 -0400 Subject: [PATCH 85/91] FIXME: move flag parsing into its own function --- gcc/read-rtl.c | 84 +++++++++++++++++++++++++++++++--------------------------- 1 file changed, 45 insertions(+), 39 deletions(-) diff --git a/gcc/read-rtl.c b/gcc/read-rtl.c index 1ce9dd3..b3da541 100644 --- a/gcc/read-rtl.c +++ b/gcc/read-rtl.c @@ -1231,6 +1231,50 @@ static void strip_trailing_whitespace (char *desc) #endif /* #ifndef GENERATOR_FILE */ +/* Subroutine of read_rtx_code, for parsing zero or more flags. */ + +static void +read_flags (rtx return_rtx) +{ + while (1) + { + int ch = read_char (); + if (ch != '/') + { + unread_char (ch); + break; + } + + int flag_char = read_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); + } + } +} + /* Subroutine of read_rtx and read_nested_rtx. CODE_NAME is the name of either an rtx code or a code iterator. Parse the rest of the rtx and return it. */ @@ -1281,45 +1325,7 @@ read_rtx_code (const char *code_name) record_iterator_use (iterator, return_rtx); /* Check for flags. */ - do - { - i = read_char (); - if (i == '/') - { - char flag_char = read_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); + read_flags (return_rtx); /* Read REG_NOTE names for EXPR_LIST and INSN_LIST. */ #ifndef GENERATOR_FILE -- 1.8.5.3