diff options
author | Martin Jambor <mjambor@suse.cz> | 2025-04-14 14:21:15 +0200 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2025-04-14 14:39:06 +0200 |
commit | de1c734a8ae034c92f485e7f58b7fcb1c921ecd2 (patch) | |
tree | e8ea6b1b371c1b219a192ba2688c79c0fb8989d2 /gcc/rust/rust-gcc.cc | |
parent | f33d2e6b532304d487193667e6b5d8f8d7df2bf4 (diff) | |
download | gcc-de1c734a8ae034c92f485e7f58b7fcb1c921ecd2.zip gcc-de1c734a8ae034c92f485e7f58b7fcb1c921ecd2.tar.gz gcc-de1c734a8ae034c92f485e7f58b7fcb1c921ecd2.tar.bz2 |
ipa-cp: Make propagation of bits in IPA-CP aware of type conversions (PR119318)
After the propagation of constants and value ranges, it turns out
that the propagation of known bits also needs to be made aware of any
intermediate types in which any arithmetic operations are made and
must limit its precision there. This implements just that, using the
newly collected and streamed types of the operations involved.
This version removed the extra check that the type of a formal
parameter is known pointed out in Honza in his review because I agree
it is currently always known. I have also added the testcase of PR
119530 which is a duplicate of this bug.
gcc/ChangeLog:
2025-04-11 Martin Jambor <mjambor@suse.cz>
PR ipa/119318
* ipa-cp.cc (ipcp_bits_lattice::meet_with_1): Set all mask bits
not covered by precision to one.
(ipcp_bits_lattice::meet_with): Likewise.
(propagate_bits_across_jump_function): Use the stored operation
type to perform meet with other lattices.
gcc/testsuite/ChangeLog:
2025-04-11 Martin Jambor <mjambor@suse.cz>
PR ipa/119318
* gcc.dg/ipa/pr119318.c: New test.
* gcc.dg/ipa/pr119530.c: Likwise.
Diffstat (limited to 'gcc/rust/rust-gcc.cc')
0 files changed, 0 insertions, 0 deletions