Bug 96802 - [11 Regression] ICE in ix86_handle_option, at common/config/i386/i386-common.c:338
Summary: [11 Regression] ICE in ix86_handle_option, at common/config/i386/i386-common....
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 11.0
: P3 normal
Target Milestone: 11.0
Assignee: H.J. Lu
URL: https://gcc.gnu.org/pipermail/gcc-pat...
Keywords: patch
Depends on:
Blocks:
 
Reported: 2020-08-26 16:45 UTC by Arseny Solokha
Modified: 2020-08-26 19:58 UTC (History)
1 user (show)

See Also:
Host:
Target: x86_64-unknown-linux-gnu
Build:
Known to work:
Known to fail:
Last reconfirmed: 2020-08-26 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Arseny Solokha 2020-08-26 16:45:32 UTC
gcc-11.0.0-alpha20200823 snapshot (g:87c753ac241f25d222d46ba1ac66ceba89d6a200) ICEs when compiling gcc/testsuite/gcc.target/aarch64/target_attr_11.c:

% x86_64-unknown-linux-gnu-gcc-11.0.0 -c gcc/testsuite/gcc.target/aarch64/target_attr_11.c
gcc/testsuite/gcc.target/aarch64/target_attr_11.c:8:1: internal compiler error: in ix86_handle_option, at common/config/i386/i386-common.c:338
    8 | {
      | ^
0x7a563c ix86_handle_option(gcc_options*, gcc_options*, cl_decoded_option const*, unsigned int)
	/var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200823/work/gcc-11-20200823/gcc/common/config/i386/i386-common.c:338
0x1152123 ix86_valid_target_attribute_inner_p
	/var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200823/work/gcc-11-20200823/gcc/config/i386/i386-options.c:1200
0x1151fcf ix86_valid_target_attribute_inner_p
	/var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200823/work/gcc-11-20200823/gcc/config/i386/i386-options.c:1088
0x1156d7d ix86_valid_target_attribute_tree(tree_node*, tree_node*, gcc_options*, gcc_options*, bool)
	/var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200823/work/gcc-11-20200823/gcc/config/i386/i386-options.c:1302
0x1157064 ix86_valid_target_attribute_p(tree_node*, tree_node*, tree_node*, int)
	/var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200823/work/gcc-11-20200823/gcc/config/i386/i386-options.c:1408
0x8a9382 handle_target_attribute
	/var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200823/work/gcc-11-20200823/gcc/c-family/c-attribs.c:4379
0x7b2947 decl_attributes(tree_node**, tree_node*, int, tree_node*)
	/var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200823/work/gcc-11-20200823/gcc/attribs.c:714
0x7cf96d start_function(c_declspecs*, c_declarator*, tree_node*)
	/var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200823/work/gcc-11-20200823/gcc/c/c-decl.c:9184
0x82c920 c_parser_declaration_or_fndef
	/var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200823/work/gcc-11-20200823/gcc/c/c-parser.c:2434
0x8364a3 c_parser_external_declaration
	/var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200823/work/gcc-11-20200823/gcc/c/c-parser.c:1773
0x836fb9 c_parser_translation_unit
	/var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200823/work/gcc-11-20200823/gcc/c/c-parser.c:1646
0x836fb9 c_parse_file()
	/var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200823/work/gcc-11-20200823/gcc/c/c-parser.c:21819
0x890efd c_common_parse_file()
	/var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200823/work/gcc-11-20200823/gcc/c-family/c-opts.c:1188
Comment 1 Uroš Bizjak 2020-08-26 18:57:08 UTC
Looks like fallout from recent general-regs-only function attribute addition.

CC author.
Comment 2 H.J. Lu 2020-08-26 19:40:53 UTC
A patch is posted at

https://gcc.gnu.org/pipermail/gcc-patches/2020-August/552720.html
Comment 3 GCC Commits 2020-08-26 19:58:18 UTC
The master branch has been updated by H.J. Lu <hjl@gcc.gnu.org>:

https://gcc.gnu.org/g:8f1ea8ddccc34c28f72910d9f61bacd35cc73270

commit r11-2890-g8f1ea8ddccc34c28f72910d9f61bacd35cc73270
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Wed Aug 26 12:37:05 2020 -0700

    x86: Reject target("no-general-regs-only")
    
    Reject target("no-general-regs-only") pragma and attribute.
    
    gcc/
    
            PR target/96802
            * config/i386/i386-options.c (ix86_valid_target_attribute_inner_p):
            Reject target("no-general-regs-only").
    
    gcc/testsuite/
    
            PR target/96802
            * gcc.target/i386/pr96802-1.c: New test.
            * gcc.target/i386/pr96802-2.c: Likewise.
Comment 4 H.J. Lu 2020-08-26 19:58:42 UTC
Fixed for GCC 11.