diff options
author | Jakub Jelinek <jakub@redhat.com> | 2000-11-29 19:24:50 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2000-11-29 19:24:50 +0100 |
commit | 57814e5ea3528a521e997fcc6b5d658174b63e10 (patch) | |
tree | f0f32075fb72921dd130201ceba23d250949163a /gcc/predict.c | |
parent | 3632e1eaba7b8ccb91377e70657618d7b5cd2c39 (diff) | |
download | gcc-57814e5ea3528a521e997fcc6b5d658174b63e10.zip gcc-57814e5ea3528a521e997fcc6b5d658174b63e10.tar.gz gcc-57814e5ea3528a521e997fcc6b5d658174b63e10.tar.bz2 |
expr.h (store_by_pieces): Add prototype.
* expr.h (store_by_pieces): Add prototype.
(can_store_by_pieces): Likewise.
* expr.c (struct store_by_pieces): Renamed from clear_by_pieces.
(can_store_by_pieces): New.
(store_by_pieces): New.
(clear_by_pieces): New.
(clear_by_pieces_1): New.
(store_by_pieces_1): Renamed from clear_by_pieces, handle storing
arbitrary compiler generated constants into memory block.
(store_by_pieces_2): Renamed from clear_by_pieces_1, likewise.
* builtins.c (c_readstr): New.
(builtin_memcpy_read_str): New.
(expand_builtin_memcpy): If src is string constant and
emit_block_move would move it by pieces, compute integer constants
from the string and store it into memory block instead.
(builtin_strncpy_read_str): New.
(expand_builtin_strncpy): If N is not constant zero and c_strlen does
not return INTEGER_CST, don't optimize.
If N is larger than strlen(src) + 1, try to copy the string
including padding with store_by_pieces.
(expand_builtin_strcmp): If both arguments have side effects, don't
optimize.
(expand_builtin_fputs): If STR has side effects, don't optimize.
* gcc.c-torture/execute/string-opt-5.c: Add some strcmp and strncpy
tests.
* gcc.c-torture/execute/string-opt-6.c: New test.
From-SVN: r37851
Diffstat (limited to 'gcc/predict.c')
0 files changed, 0 insertions, 0 deletions