diff options
| author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-08-11 12:44:21 +0000 |
|---|---|---|
| committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-08-11 12:44:21 +0000 |
| commit | 804b782811fa76abd1e24c8c5d7894b21c043481 (patch) | |
| tree | 204c72733d9f9f3e3c82f12d5e9b62539eb865e7 | |
| parent | 6ae38bff981ae1f144123b8722c91081cc13c03f (diff) | |
| download | ppe42-gcc-804b782811fa76abd1e24c8c5d7894b21c043481.tar.gz ppe42-gcc-804b782811fa76abd1e24c8c5d7894b21c043481.zip | |
* i386.c (classify_argument): Fix computing of field's offsets.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@56204 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 4 | ||||
| -rw-r--r-- | gcc/config/i386/i386.c | 11 |
2 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 296e960097d..ff97998112a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Sun Aug 11 14:43:17 CEST 2002 Jan Hubicka <jh@suse.cz> + + * i386.c (classify_argument): Fix computing of field's offsets. + 2002-08-11 Andreas Jaeger <aj@suse.de> PR target/7531: diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 0c1ed9fa29e..1010bb81948 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -1146,6 +1146,9 @@ override_options () ix86_tls_dialect_string); } + if (profile_flag) + target_flags &= ~MASK_OMIT_LEAF_FRAME_POINTER; + /* Keep nonleaf frame pointers. */ if (TARGET_OMIT_LEAF_FRAME_POINTER) flag_omit_frame_pointer = 1; @@ -1257,6 +1260,8 @@ optimization_options (level, size) flag_pcc_struct_return = 0; flag_asynchronous_unwind_tables = 1; } + if (profile_flag) + flag_omit_frame_pointer = 0; } /* Table of valid machine attributes. */ @@ -1634,7 +1639,7 @@ classify_argument (mode, type, classes, bit_offset) return 0; for (i = 0; i < num; i++) { - int pos = (offset + bit_offset) / 8 / 8; + int pos = (offset + (bit_offset % 64)) / 8 / 8; classes[i + pos] = merge_classes (subclasses[i], classes[i + pos]); } @@ -1671,7 +1676,7 @@ classify_argument (mode, type, classes, bit_offset) for (i = 0; i < num; i++) { int pos = - (int_bit_position (field) + bit_offset) / 8 / 8; + (int_bit_position (field) + (bit_offset % 64)) / 8 / 8; classes[i + pos] = merge_classes (subclasses[i], classes[i + pos]); } @@ -1717,7 +1722,7 @@ classify_argument (mode, type, classes, bit_offset) num = classify_argument (TYPE_MODE (type), type, subclasses, - (offset + bit_offset) % 256); + (offset + (bit_offset % 64)) % 256); if (!num) return 0; for (i = 0; i < num; i++) |

