[Bug ipa/85960] -fipa-pta and ifunc are incompatible

2018-06-08 Thread gianni at scaramanga dot co.uk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85960

--- Comment #10 from Gianni Tedesco  ---
Confirmed. Code from trunk works splendidly on the code-base where this bug was
discovered.

[Bug ipa/85960] -fipa-pta and ifunc are incompatible

2018-06-01 Thread gianni at scaramanga dot co.uk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85960

--- Comment #9 from Gianni Tedesco  ---
Sure, I can test it on real world cases over the weekend I think. Nice work
guys. Thanks.

[Bug ipa/85960] -fipa-pta and ifunc are incompatible

2018-05-29 Thread gianni at scaramanga dot co.uk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85960

--- Comment #3 from Gianni Tedesco  ---
Both gcc-7.3 and gcc-8 from ubuntu on x86-64:

gcc version 8.0.1 20180414 (experimental) [trunk revision 259383] (Ubuntu
8-20180414-1ubuntu2) 
gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)

[Bug ipa/85960] -fipa-pta and ifunc are incompatible

2018-05-29 Thread gianni at scaramanga dot co.uk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85960

--- Comment #2 from Gianni Tedesco  ---
Both gcc-7.3 and gcc-8 from ubuntu on x86-64:

gcc version 8.0.1 20180414 (experimental) [trunk revision 259383] (Ubuntu
8-20180414-1ubuntu2) 
gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)

[Bug translation/85960] New: -fipa-pta and ifunc are incompatible

2018-05-28 Thread gianni at scaramanga dot co.uk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85960

Bug ID: 85960
   Summary: -fipa-pta and ifunc are incompatible
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: translation
  Assignee: unassigned at gcc dot gnu.org
  Reporter: gianni at scaramanga dot co.uk
  Target Milestone: ---

Created attachment 44202
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44202=edit
Minimal example showing the bug

-fipa-pta and ifuncs are incompatible, it looks like ifunc resolved functions
are treated as no-ops which seems to lead to erroneous conclusions about the
possible values of objects pointed to in such a functions parameters.

For example, if an ifunc has a pointer argument and all implementations of that
functions write to the pointed-to object, then we get a warning about that
object being read before being set - which is erroneous. Moreover we end up
with miscompiled code as a result of this.