public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "rguenth at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug ipa/65270] [5 regression] ICF needs to match TYPE attributes on memory accesses Date: Wed, 04 Mar 2015 09:26:00 -0000 [thread overview] Message-ID: <bug-65270-4-yKawhTXDIu@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-65270-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65270 --- Comment #11 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Jan Hubicka from comment #9) > Lets reopen this. I agree with other type flags - they seem safe except for > TYPE_ATTRIBUTES of functions I will add compare of today. > > > No. But you can't compare restrict qualification by looking at a memory > > reference pair from function A and function B. You'd have to compare > > all data dependences somehow. > > > > You could get some cases by comparing function parameter types specially > > (but global vars also have an issue, as well as decl-by-reference > > aggregate parameters). > > Would it be enough to > - require match on arguments/return value types (that should handle > function parameters as well as > - require match on all global variable types It would be a start, but no - consider early inlining and static inline int foo (int * restrict p, int * restrict q) { ... } static inline int foo2 (int *p, int *q) { same as foo } int bar (int *p, int *q) { return foo (p, q); } int bar2 (int *p, int *q) { return foo2 (p, q); } where actual code generation difference would only show up in the main optimization queue. With the present implementation you'd have to compare MR_DEPENDENCE_CLIQUE and MR_DEPENDENCE_BASE for MEM_REFs/TARGET_MEM_REFs. Of course literally comparing them isn't really correct (though if they are equal you are safe). So - compare TYPE_MAIN_VARIANT of global var and function parameter types and MR_DEPENDENCE_* on MEM_REFs should be enough to catch restrict differences (fingers crossing ;)). I'll try to cook up a patch. > > It seems to me that ICF isn't quite ready for prime time. Let's disable > > it by default for now, ok? > > I also read the discussion on IRC and discussed with Jeff. > ICF has triggered interesting issues in alias/thunks areas. For a first time > we output a lot of non-MI thunks on main targets and expand_thunk was > getting things wrong in a nasty ways. ICF also produce a lot of aliases and > excercise symbol table code otherwise rarely used. Here I think it is > valuable we fixed those bugs that were semi-latent for years. I believe we > are approaching steady state - at the moment we do not have any other ICF > related PR open. Jeff suggested to wait 48 hours. > > This PR is a result of my code audit I did over weekend. I fully leave the > decision with you. I agree ICF is causing a lot of issues late in release > and disabling it is a safe option. On the other hand I would be happy to > work to get it fixed and working - it is quite useful optimization. Sure - it just seems with every change you introduce bootstrap failures on some targets which is quite bad. Let's hope things stabilize and please no re-writes anymore.
next prev parent reply other threads:[~2015-03-04 9:26 UTC|newest] Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-03-02 0:49 [Bug ipa/65270] New: " hubicka at gcc dot gnu.org 2015-03-02 8:58 ` [Bug ipa/65270] " rguenth at gcc dot gnu.org 2015-03-02 11:50 ` rguenth at gcc dot gnu.org 2015-03-02 14:32 ` rguenth at gcc dot gnu.org 2015-03-02 14:51 ` rguenth at gcc dot gnu.org 2015-03-02 18:25 ` hubicka at gcc dot gnu.org 2015-03-03 14:57 ` rguenther at suse dot de 2015-03-03 15:08 ` howarth at bromo dot med.uc.edu 2015-03-03 17:24 ` rguenther at suse dot de 2015-03-03 18:23 ` hubicka at gcc dot gnu.org 2015-03-03 20:38 ` hubicka at gcc dot gnu.org 2015-03-04 9:26 ` rguenth at gcc dot gnu.org [this message] 2015-03-04 9:45 ` rguenther at suse dot de 2015-03-04 10:35 ` rguenth at gcc dot gnu.org 2015-03-04 11:52 ` rguenth at gcc dot gnu.org 2015-03-04 11:57 ` rguenth at gcc dot gnu.org 2015-03-04 18:21 ` hubicka at gcc dot gnu.org 2015-03-05 0:11 ` hubicka at gcc dot gnu.org 2015-03-05 0:21 ` hubicka at gcc dot gnu.org 2015-03-05 0:42 ` hubicka at gcc dot gnu.org 2015-03-05 8:43 ` rguenth at gcc dot gnu.org 2015-03-05 9:40 ` rguenther at suse dot de 2015-03-05 9:42 ` rguenther at suse dot de 2015-03-05 9:45 ` rguenther at suse dot de 2015-03-05 11:30 ` marxin at gcc dot gnu.org 2015-03-05 19:47 ` [Bug ipa/65270] issues with merging memory accesses from different code paths hubicka at gcc dot gnu.org 2015-03-05 19:59 ` hubicka at gcc dot gnu.org 2015-03-05 20:11 ` hubicka at gcc dot gnu.org 2015-03-05 21:18 ` hubicka at gcc dot gnu.org 2015-03-06 8:32 ` rguenther at suse dot de 2015-03-06 15:41 ` hubicka at gcc dot gnu.org 2015-03-06 18:03 ` [Bug ipa/65270] [5 regression] " hubicka at gcc dot gnu.org 2015-03-09 11:11 ` rguenth at gcc dot gnu.org 2015-03-09 13:55 ` rguenth at gcc dot gnu.org 2015-03-09 13:55 ` rguenth at gcc dot gnu.org 2015-03-12 13:03 ` rguenth 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-65270-4-yKawhTXDIu@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).