This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
This patch came about as I was tidying up and putting to bed the ongoing work on PRs, for others to follow up. I had written this some months ago but could not get it to handle error conditions without segfaulting. I noticed what this was due to this morning..... blush.....
gfc_error ("Beginning of message at %L followed by ", "end of message", &expr->where);
I was completely blind to the errant comma and put the patch to one side.... more blushing.... Since it is error_on_valid, I thought it best to submit it myself, since I am up to speed on it.
Beyond this, the fix is straight forward. Since the iterators are not available, whilst gfc_match_init_expr and check_init_expr are doing their respective things, the appearance of variable expressions for the iterator start, end or steps causes errors. The way around this is to signal that we are matching a data statement and use this to avoid checking for variable references. In this way, all the other good things happen, like checking for inquiry functions, etc. The expressions then go on to resolve.c, where in looping through the iterators, they are copied and simplified. Since the iterators are on the iterator stack, simplification now works and EXPR_CONSTANTs are produced. The previous check that iterator expressions were constant has now been removed. The testcase is a rejigging of the reporter's; the array is reduced in size so that the correct emplacement of the values can be checked.
Attachment:
Change.Logs
Description: Text document
Attachment:
pr23232.diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |