public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "jakub at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/102586] [12 Regression] ICE in clear_padding_type, at gimple-fold.c:4798 since r12-3433-ga25e0b5e6ac8a77a Date: Mon, 04 Oct 2021 11:43:22 +0000 [thread overview] Message-ID: <bug-102586-4-ub9C8kBCgN@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-102586-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102586 Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jason at gcc dot gnu.org, | |ppalka at gcc dot gnu.org --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- So, seems the C9 type is 32-byte, with 8-byte virtual table pointers at offset 0 and 16 bytes (and the rest is padding), C5 is 24-byte with virtual table pointers at offsets 0 and 8 bytes (and the rest is padding), C4 is 16-byte with virtual table pointers at offset 0 (and the rest is padding). But what the middle-end sees is that there is a FIELD_DECL with C5 type at offset 0 with size 9 bytes and then a FIELD_DECL with C4 type at offset 16 with size 9 bytes. The __builtin_clear_padding handling code when called on a FIELD_DECL with smaller DECL_SIZE_UNIT than TYPE_SIZE_UNIT is able to ignore fields that are wholy beyond the size and also the default behavior is that everything is padding until proven otherwise, so for padding bytes nothing changes. The reason for the ICE is that the first FIELD_DECL with C5 type says 9 bytes and the type has 8 byte, 8 byte and 1 byte fields (2 virtual table pointers and one padding byte). So, in that case it is unclear what the code should do. Shall it treat the fields that partially fall into the range and partially don't as padding (ignore them), or is there no way to do this using the TREE_TYPE of FIELD_DECLs that the middle-end sees and one needs to use some other types (I vaguely remember the C++ FE has some variant RECORD_TYPEs for the virtual bases that actually reflect what is present and where, but I have no idea if that is visible to the middle-end somewhere)?
next prev parent reply other threads:[~2021-10-04 11:43 UTC|newest] Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-10-04 7:30 [Bug tree-optimization/102586] New: " marxin at gcc dot gnu.org 2021-10-04 7:30 ` [Bug tree-optimization/102586] " marxin at gcc dot gnu.org 2021-10-04 8:21 ` jakub at gcc dot gnu.org 2021-10-04 8:22 ` marxin at gcc dot gnu.org 2021-10-04 11:43 ` jakub at gcc dot gnu.org [this message] 2021-10-04 12:04 ` jakub at gcc dot gnu.org 2021-11-15 13:03 ` jakub at gcc dot gnu.org 2021-11-15 13:05 ` jakub at gcc dot gnu.org 2022-01-17 13:14 ` rguenth at gcc dot gnu.org 2022-02-09 17:21 ` jason at gcc dot gnu.org 2022-02-10 14:08 ` jakub at gcc dot gnu.org 2022-02-10 14:18 ` jakub at gcc dot gnu.org 2022-02-10 15:29 ` jakub at gcc dot gnu.org 2022-02-10 15:35 ` jakub at gcc dot gnu.org 2022-02-10 15:56 ` jason at gcc dot gnu.org 2022-02-10 18:30 ` jakub at gcc dot gnu.org 2022-02-10 18:45 ` jason at gcc dot gnu.org 2022-02-10 19:27 ` jakub at gcc dot gnu.org 2022-02-10 22:07 ` jason at gcc dot gnu.org 2022-02-10 22:27 ` jakub at gcc dot gnu.org 2022-02-10 22:29 ` jakub at gcc dot gnu.org 2022-02-10 22:34 ` jakub at gcc dot gnu.org 2022-02-11 1:47 ` rodgertq at gcc dot gnu.org 2022-02-11 12:31 ` jakub at gcc dot gnu.org 2022-02-11 15:29 ` jason at gcc dot gnu.org 2022-02-11 16:23 ` qing.zhao at oracle dot com 2022-02-11 16:39 ` jakub at gcc dot gnu.org 2022-02-11 17:36 ` qinzhao at gcc dot gnu.org 2022-02-11 17:47 ` jakub at gcc dot gnu.org 2022-02-11 21:52 ` qing.zhao at oracle dot com 2022-03-12 4:40 ` jason at gcc dot gnu.org 2022-03-14 9:49 ` cvs-commit at gcc dot gnu.org 2022-04-07 7:15 ` cvs-commit at gcc dot gnu.org 2022-04-07 7:19 ` jakub at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-102586-4-ub9C8kBCgN@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).