diff options
author | Jakub Jelinek <jakub@redhat.com> | 2023-12-22 12:28:54 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2023-12-22 12:28:54 +0100 |
commit | 0a6aa1927597d821a85bc3d1fd7682256c25b548 (patch) | |
tree | 8c794f478b2f30677f895c4eaf5dac98036106d7 /gcc/tree-vect-loop-manip.cc | |
parent | f5198f0264e773d3b5d55f09a579313b0b231527 (diff) | |
download | gcc-0a6aa1927597d821a85bc3d1fd7682256c25b548.zip gcc-0a6aa1927597d821a85bc3d1fd7682256c25b548.tar.gz gcc-0a6aa1927597d821a85bc3d1fd7682256c25b548.tar.bz2 |
symtab-thunks: Use aggregate_value_p even on is_gimple_reg_type returns [PR112941]
Large/huge _BitInt types are returned in memory and the bitint lowering
pass right now relies on that.
The gimplification etc. use aggregate_value_p to see if it should be
returned in memory or not and use
<retval> = _123;
return <retval>;
rather than
return _123;
But expand_thunk used e.g. by IPA-ICF was performing an optimization,
assuming is_gimple_reg_type is always passed in registers and not calling
aggregate_value_p in that case. The following patch changes it to match
what the gimplification etc. are doing.
2023-12-22 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/112941
* symtab-thunks.cc (expand_thunk): Check aggregate_value_p regardless
of whether is_gimple_reg_type (restype) or not.
* gcc.dg/bitint-60.c: New test.
Diffstat (limited to 'gcc/tree-vect-loop-manip.cc')
0 files changed, 0 insertions, 0 deletions