Summary: | [s390] ICE in _cpp_pop_context | ||
---|---|---|---|
Product: | gcc | Reporter: | Evan Nemerson <evan> |
Component: | target | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | guojiufu, michael.crusoe |
Priority: | P3 | Keywords: | ice-on-valid-code |
Version: | 10.1.1 | ||
Target Milestone: | --- | ||
See Also: | https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101168 | ||
Host: | Target: | s390 | |
Build: | Known to work: | ||
Known to fail: | 10.1.0, 9.3.0 | Last reconfirmed: | 2024-03-26 00:00:00 |
Description
Evan Nemerson
2020-06-20 06:26:14 UTC
This seems to also happen on s390x with -mzvector: # s390x-linux-gnu-gcc-10 -march=z14 -mzvector -o test test.c test.c:4:1: internal compiler error: in _cpp_pop_context, at libcpp/macro.c:2644 4 | b(vector double) | ^ 0x11da337 _cpp_pop_context ../../src/libcpp/macro.c:2644 0x11dcd67 expand_arg ../../src/libcpp/macro.c:2601 0x11dc41f replace_args ../../src/libcpp/macro.c:1879 0x11dc41f enter_macro_context ../../src/libcpp/macro.c:1421 0x11dc7e8 cpp_get_token_1 ../../src/libcpp/macro.c:2891 0x6393fe c_lex_with_flags(tree_node**, unsigned int*, unsigned char*, int) ../../src/gcc/c-family/c-lex.c:458 0x5c96a5 c_lex_one_token ../../src/gcc/c/c-parser.c:270 0x5f6517 c_parser_peek_token(c_parser*) ../../src/gcc/c/c-parser.c:474 0x5f6517 c_parse_file() ../../src/gcc/c/c-parser.c:21742 0x64054b c_common_parse_file() ../../src/gcc/c-family/c-opts.c:1190 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <file:///usr/share/doc/gcc-10/README.Bugs> for instructions. The powerpc issue was fixed in GCC 13 (most likely by r13-220-g067fe66c8ba9b16feacf66fce9ae668091e42821 ). s390 most likely needs the same treatment: ``` [apinski@xeond2 rs6000]$ git diff ../s390/s390-c.cc diff --git a/gcc/config/s390/s390-c.cc b/gcc/config/s390/s390-c.cc index 8d3d1a467a8..8096b1ff7c1 100644 --- a/gcc/config/s390/s390-c.cc +++ b/gcc/config/s390/s390-c.cc @@ -275,7 +275,7 @@ s390_macro_to_expand (cpp_reader *pfile, const cpp_token *tok) /* __vector long __bool a; */ if (ident == C_CPP_HASHNODE (__bool_keyword)) expand_bool_p = true; - else + else if (ident) { /* Triggered with: __vector long long __bool a; */ do ``` I cannot test this at all, and a similar testcase in PR 101168 should be added for s390. (In reply to Andrew Pinski from comment #2) > The powerpc issue was fixed in GCC 13 (most likely by > r13-220-g067fe66c8ba9b16feacf66fce9ae668091e42821 ). > > s390 most likely needs the same treatment: > ``` > [apinski@xeond2 rs6000]$ git diff ../s390/s390-c.cc > diff --git a/gcc/config/s390/s390-c.cc b/gcc/config/s390/s390-c.cc > index 8d3d1a467a8..8096b1ff7c1 100644 > --- a/gcc/config/s390/s390-c.cc > +++ b/gcc/config/s390/s390-c.cc > @@ -275,7 +275,7 @@ s390_macro_to_expand (cpp_reader *pfile, const cpp_token > *tok) > /* __vector long __bool a; */ > if (ident == C_CPP_HASHNODE (__bool_keyword)) > expand_bool_p = true; > - else > + else if (ident) > { > /* Triggered with: __vector long long __bool a; */ > do > > ``` > > I cannot test this at all, and a similar testcase in PR 101168 should be > added for s390. Test with cross-compiling, this code can fix the issue as expected. The master branch has been updated by Jiu Fu Guo <guojiufu@gcc.gnu.org>: https://gcc.gnu.org/g:83bc41e8364360b63eaa59c88e2fb499a6751233 commit r15-14-g83bc41e8364360b63eaa59c88e2fb499a6751233 Author: Jiufu Guo <guojiufu@linux.ibm.com> Date: Wed Mar 27 14:15:40 2024 +0800 s390: avoid peeking eof after __vector Same like PR101168, it is need for s390 to avoid peeking eof after vector keyword. And similar test case is also ok for s390. PR target/95782 gcc/ChangeLog: * config/s390/s390-c.cc (s390_macro_to_expand): Avoid empty identifier. gcc/testsuite/ChangeLog: * g++.target/s390/pr95782.C: New test. Patch was committed. |