[Bug ipa/96482] [10 Regression] Combination of -finline-small-functions and ipa-cp optimisations causes incorrect values being passed to a function since r279523
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96482 --- Comment #23 from CVS Commits --- The releases/gcc-10 branch has been updated by Martin Liska : https://gcc.gnu.org/g:4a2371497e9bed64aa4f46169127f3ea8e32e726 commit r10-8618-g4a2371497e9bed64aa4f46169127f3ea8e32e726 Author: Martin Liska Date: Thu Aug 13 09:38:41 2020 +0200 ipa: fix ICE in get_default_value The patch aligns code with ipcp_bits_lattice::set_to_constant where we properly mask m_value with m_mask. The same should be done here. gcc/ChangeLog: PR ipa/96482 * ipa-cp.c (ipcp_bits_lattice::meet_with_1): Mask m_value with m_mask. gcc/testsuite/ChangeLog: PR ipa/96482 * gcc.dg/ipa/pr96482-2.c: New test. (cherry picked from commit f91770216eade83f068528c1e4f00e2ac3b23044)
[Bug ipa/96482] [10 Regression] Combination of -finline-small-functions and ipa-cp optimisations causes incorrect values being passed to a function since r279523
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96482 --- Comment #22 from CVS Commits --- The master branch has been updated by Martin Liska : https://gcc.gnu.org/g:f91770216eade83f068528c1e4f00e2ac3b23044 commit r11-2686-gf91770216eade83f068528c1e4f00e2ac3b23044 Author: Martin Liska Date: Thu Aug 13 09:38:41 2020 +0200 ipa: fix ICE in get_default_value The patch aligns code with ipcp_bits_lattice::set_to_constant where we properly mask m_value with m_mask. The same should be done here. gcc/ChangeLog: PR ipa/96482 * ipa-cp.c (ipcp_bits_lattice::meet_with_1): Mask m_value with m_mask. gcc/testsuite/ChangeLog: PR ipa/96482 * gcc.dg/ipa/pr96482-2.c: New test.
[Bug ipa/96482] [10 Regression] Combination of -finline-small-functions and ipa-cp optimisations causes incorrect values being passed to a function since r279523
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96482 Martin Liška changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #21 from Martin Liška --- Fixed on all branches.
[Bug ipa/96482] [10 Regression] Combination of -finline-small-functions and ipa-cp optimisations causes incorrect values being passed to a function since r279523
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96482 --- Comment #20 from CVS Commits --- The releases/gcc-10 branch has been updated by Martin Liska : https://gcc.gnu.org/g:66780083a0e79e5cb7c3acc8665aa47be4084a67 commit r10-8614-g66780083a0e79e5cb7c3acc8665aa47be4084a67 Author: Martin Liska Date: Wed Aug 12 09:21:51 2020 +0200 ipa: fix bit CPP when combined with IPA bit CP As mentioned in the PR, let's consider the following example: int __attribute__((noinline)) foo(int arg) { if (arg == 3) return 1; if (arg == 4) return 123; __builtin_unreachable (); } during WPA we find all calls of the function (yes the call with value 5 is UBSAN): Node: foo/0: param [0]: 5 [loc_time: 4, loc_size: 2, prop_time: 0, prop_size: 0] 3 [loc_time: 3, loc_size: 3, prop_time: 0, prop_size: 0] ctxs: VARIABLE Bits: value = 0x5, mask = 0x6 in LTRANS we have the following VRP info: # RANGE [3, 3] NONZERO 3 when we AND masks in get_default_value we end up with 6 & 3 = 2 (0x010). That means the only second (least significant bit) is unknown and value (5 = 0x101) & ~mask gives us either 7 (0x111) or 5 (0x101). That's why if (arg_2(D) == 3) gets optimized to false. gcc/ChangeLog: PR ipa/96482 * ipa-cp.c (ipcp_bits_lattice::meet_with_1): Drop value bits for bits that are unknown. (ipcp_bits_lattice::set_to_constant): Likewise. * tree-ssa-ccp.c (get_default_value): Add sanity check that IPA CP bit info has all bits set to zero in bits that are unknown. gcc/testsuite/ChangeLog: PR ipa/96482 * gcc.dg/ipa/pr96482.c: New test. (cherry picked from commit d58f078ce2d53e5dab6b3d0d5f960504268e1894)
[Bug ipa/96482] [10 Regression] Combination of -finline-small-functions and ipa-cp optimisations causes incorrect values being passed to a function since r279523
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96482 Martin Liška changed: What|Removed |Added Known to fail||10.2.1 Known to work||11.0 Summary|[10/11 Regression] |[10 Regression] Combination |Combination of |of -finline-small-functions |-finline-small-functions|and ipa-cp optimisations |and ipa-cp optimisations|causes incorrect values |causes incorrect values |being passed to a function |being passed to a function |since r279523 |since r279523 | --- Comment #19 from Martin Liška --- Fixed on master so far.