re PR c++/5964 (g++ generates code that results in "word displacement will not fit...
authorJakub Jelinek <jakub@redhat.com>
Fri, 29 Mar 2002 08:25:10 +0000 (09:25 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 29 Mar 2002 08:25:10 +0000 (09:25 +0100)
commitf17f93326d7d690113c87abf1532bd9f4be8301f
tree27472513448efb25e1c2f9cda0600c46b459b56e
parent13992acae2173c407373b2a71f29f565db596324
re PR c++/5964 (g++ generates code that results in "word displacement will not fit in 16 bits" on sparcv9)

PR c++/5964
* config/sparc/sparc.md (empty_delay_slot, branch_type): New
attributes.
(length): Compute variable length for branches/calls/jumps here.
(branch, inverted_branch, normal_fp_branch, inverted_fp_branch,
normal_fpe_branch, inverted_fpe_branch): Remove length attribute,
define branch_type attribute.
(divsi3_sp32): Maximum length is 6 not 7.
(call_address_struct_value_sp32, call_symbolic_struct_value_sp32,
call_address_untyped_struct_value_sp32,
call_symbolic_untyped_struct_value_sp32): Set length to 3 not 2.
* config/sparc/sparc.c (empty_delay_slot): New function.
* config/sparc/sparc.h (ADJUST_INSN_LENGTH): Remove.
* config/sparc/sparc-protos.h (empty_delay_slot): Add prototype.

* g++.dg/opt/longbranch1.C: New test.

From-SVN: r51557
gcc/ChangeLog
gcc/config/sparc/sparc-protos.h
gcc/config/sparc/sparc.c
gcc/config/sparc/sparc.h
gcc/config/sparc/sparc.md
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/opt/longbranch1.C [new file with mode: 0644]