diff options
author | Alan Modra <amodra@gmail.com> | 2019-01-08 09:24:40 +1030 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2019-01-08 09:24:40 +1030 |
commit | 2d8d93c783dd43769075fa0474d670f6fb4a85f1 (patch) | |
tree | 04317764b127d1d3db9709771cee17d5370e8017 /gcc/tree-ssa-loop-prefetch.c | |
parent | 65c5b1eb85f8f0f3078f614d549f107ee9a001af (diff) | |
download | gcc-2d8d93c783dd43769075fa0474d670f6fb4a85f1.zip gcc-2d8d93c783dd43769075fa0474d670f6fb4a85f1.tar.gz gcc-2d8d93c783dd43769075fa0474d670f6fb4a85f1.tar.bz2 |
genattrtab bit-rot, and if_then_else in values
This patch started off just by adding if_then_else support in
write_attr_value to be able to write a saner expression for powerpc
tls_gdld_nomark length. Then I noticed bit-rot in functions used to
calculate insn_default_length, insn_min_length, and length_unit_log
(which are used by the shorten_branches pass). These functions
don't handle a const_int length value and return an "unknown" status
that isn't used, or in the case of or_attr_value, doesn't need to be
used. min_attr_value also attempts to return INT_MAX for the
unhandled rtl case, but this can get lost in recursive calls. I fixed
that problem by returning INT_MIN instead, and translating that to
INT_MAX in the only caller of min_attr_value.
PR target/88614
* genattrtab.c (max_attr_value, min_attr_value, or_attr_value):
Delete "unknownp" parameter. Adjust callers. Handle
CONST_INT, PLUS, MINUS, and MULT.
(attr_value_aligned): Renamed from or_attr_value.
(min_attr_value): Return INT_MIN for unhandled rtl case..
(min_fn): ..and translate to INT_MAX here.
(write_length_unit_log): Modify to cope without "unknown".
(write_attr_value): Handle IF_THEN_ELSE.
From-SVN: r267666
Diffstat (limited to 'gcc/tree-ssa-loop-prefetch.c')
0 files changed, 0 insertions, 0 deletions