public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug ada/65476] New: Long_Float array does not byte swap correctly when set to Scalar_Storage_Order with High Order First
@ 2015-03-19 22:11 daniel.merrill at psware dot com
2015-04-29 10:50 ` [Bug ada/65476] Long_Float array does not byte-swap correctly with reverse Scalar_Storage_Order ebotcazou at gcc dot gnu.org
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: daniel.merrill at psware dot com @ 2015-03-19 22:11 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65476
Bug ID: 65476
Summary: Long_Float array does not byte swap correctly when set
to Scalar_Storage_Order with High Order First
Product: gcc
Version: 5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: ada
Assignee: unassigned at gcc dot gnu.org
Reporter: daniel.merrill at psware dot com
CC: ebotcazou at gcc dot gnu.org
Created attachment 35067
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35067&action=edit
code to reproduce the issue.
When an array of Long_Floats is set to a scalar_storage_order of
High_Order_First, only the two 32 bit words that make up the 64 bit value are
swapped with each other but the bytes under those words are not swapped
properly. Attached is a simple program that reproduces the behavior. If you
examine the stored values you could get the right value by performing a byte
swap on the underlying 32 bit value.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug ada/65476] Long_Float array does not byte-swap correctly with reverse Scalar_Storage_Order
2015-03-19 22:11 [Bug ada/65476] New: Long_Float array does not byte swap correctly when set to Scalar_Storage_Order with High Order First daniel.merrill at psware dot com
@ 2015-04-29 10:50 ` ebotcazou at gcc dot gnu.org
2015-04-29 11:15 ` ebotcazou at gcc dot gnu.org
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: ebotcazou at gcc dot gnu.org @ 2015-04-29 10:50 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65476
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |ebotcazou at gcc dot gnu.org
--- Comment #2 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
Fixing.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug ada/65476] Long_Float array does not byte-swap correctly with reverse Scalar_Storage_Order
2015-03-19 22:11 [Bug ada/65476] New: Long_Float array does not byte swap correctly when set to Scalar_Storage_Order with High Order First daniel.merrill at psware dot com
2015-04-29 10:50 ` [Bug ada/65476] Long_Float array does not byte-swap correctly with reverse Scalar_Storage_Order ebotcazou at gcc dot gnu.org
@ 2015-04-29 11:15 ` ebotcazou at gcc dot gnu.org
2015-04-30 15:02 ` ebotcazou at gcc dot gnu.org
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: ebotcazou at gcc dot gnu.org @ 2015-04-29 11:15 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65476
--- Comment #3 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
> When an array of Long_Floats is set to a scalar_storage_order of
> High_Order_First, only the two 32 bit words that make up the 64 bit value
> are swapped with each other but the bytes under those words are not swapped
> properly. Attached is a simple program that reproduces the behavior.
I'm actually seeing exactly the reverse effect: in Low_Order_First
power_of_two.4177:
.long 0
.long 1072693248
.long 0
.long 1073741824
and in High_Order_First:
power_of_two.4177:
.long 0
.long 61503
.long 0
.long 64
so correct byte-swapping but missing word-swapping.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug ada/65476] Long_Float array does not byte-swap correctly with reverse Scalar_Storage_Order
2015-03-19 22:11 [Bug ada/65476] New: Long_Float array does not byte swap correctly when set to Scalar_Storage_Order with High Order First daniel.merrill at psware dot com
2015-04-29 10:50 ` [Bug ada/65476] Long_Float array does not byte-swap correctly with reverse Scalar_Storage_Order ebotcazou at gcc dot gnu.org
2015-04-29 11:15 ` ebotcazou at gcc dot gnu.org
@ 2015-04-30 15:02 ` ebotcazou at gcc dot gnu.org
2015-04-30 15:03 ` ebotcazou at gcc dot gnu.org
2015-05-01 13:24 ` ebotcazou at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: ebotcazou at gcc dot gnu.org @ 2015-04-30 15:02 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65476
--- Comment #4 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
Author: ebotcazou
Date: Thu Apr 30 15:01:49 2015
New Revision: 222633
URL: https://gcc.gnu.org/viewcvs?rev=222633&root=gcc&view=rev
Log:
PR ada/65476
* fold-const.c (native_encode_int): Revert all changes.
(native_encode_real): Likewise.
(native_encode_fixed): Likewise.
(native_encode_complex): Likewise.
(native_encode_vector): Likewise.
(native_encode_expr): Likewise.
(fold_flip_storage_order): Delete.
(fold_view_convert_expr): Adjust call to native_encode_expr.
(fold_ternary_loc): Adjust call to native_encode_expr.
* fold-const.h (native_encode_expr): Adjust back prototype.
(fold_flip_storage_order): Delete.
* dwarf2out.c (native_encode_initializer): Adjust.
* output.h (assemble_real): Adjust prototype.
* varasm.c (assemble_real): Add REVERSE parameter. Flip the storage
order of the value if REVERSE is true.
(output_constant_pool_2): Adjust call to assemble_real.
(output_constant) <INTEGER_TYPE>: Adjust.
<REAL_TYPE>: Adjust call to assemble_real.
* config/arm/arm.md (consttable_4): Adjust call to assemble_real.
(consttable_8): Likewise.
(consttable_16): Likewise.
* config/mips/mips.md (consttable_float): Likewise.
* config/s390/s390.c (s390_output_pool_entry): Likewise.
* config/sh/sh.md (consttable_sf): Likewise.
(consttable_df): Likewise.
testsuite/
* c-c++-common/sso/init9.h: New.
* c-c++-common/sso/p9.c: Likewise.
* c-c++-common/sso/q9.c: Likewise.
* c-c++-common/sso/t9.c: Likewise.
* gnat.dg/sso: Adjust.
Added:
branches/scalar-storage-order/gcc/testsuite/c-c++-common/sso/init9.h
branches/scalar-storage-order/gcc/testsuite/c-c++-common/sso/p9.c
branches/scalar-storage-order/gcc/testsuite/c-c++-common/sso/q9.c
branches/scalar-storage-order/gcc/testsuite/c-c++-common/sso/t9.c
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/init11.ads
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/p11.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/q11.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/r11.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/s11.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/t11.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/u11.adb
Removed:
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/r10.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/s10.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/u10.adb
Modified:
branches/scalar-storage-order/gcc/config/arm/arm.md
branches/scalar-storage-order/gcc/config/mips/mips.md
branches/scalar-storage-order/gcc/config/s390/s390.c
branches/scalar-storage-order/gcc/config/sh/sh.md
branches/scalar-storage-order/gcc/dwarf2out.c
branches/scalar-storage-order/gcc/fold-const.c
branches/scalar-storage-order/gcc/fold-const.h
branches/scalar-storage-order/gcc/output.h
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/init10.ads
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/init9.ads
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/p10.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/p9.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/q1.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/q10.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/q2.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/q3.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/q4.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/q5.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/q6.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/q7.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/q8.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/q9.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/t10.adb
branches/scalar-storage-order/gcc/testsuite/gnat.dg/sso/t9.adb
branches/scalar-storage-order/gcc/varasm.c
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug ada/65476] Long_Float array does not byte-swap correctly with reverse Scalar_Storage_Order
2015-03-19 22:11 [Bug ada/65476] New: Long_Float array does not byte swap correctly when set to Scalar_Storage_Order with High Order First daniel.merrill at psware dot com
` (2 preceding siblings ...)
2015-04-30 15:02 ` ebotcazou at gcc dot gnu.org
@ 2015-04-30 15:03 ` ebotcazou at gcc dot gnu.org
2015-05-01 13:24 ` ebotcazou at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: ebotcazou at gcc dot gnu.org @ 2015-04-30 15:03 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65476
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
Target Milestone|--- |6.0
--- Comment #5 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
Fixed on the branch.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug ada/65476] Long_Float array does not byte-swap correctly with reverse Scalar_Storage_Order
2015-03-19 22:11 [Bug ada/65476] New: Long_Float array does not byte swap correctly when set to Scalar_Storage_Order with High Order First daniel.merrill at psware dot com
` (3 preceding siblings ...)
2015-04-30 15:03 ` ebotcazou at gcc dot gnu.org
@ 2015-05-01 13:24 ` ebotcazou at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: ebotcazou at gcc dot gnu.org @ 2015-05-01 13:24 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65476
--- Comment #6 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
Author: ebotcazou
Date: Fri May 1 13:24:16 2015
New Revision: 222680
URL: https://gcc.gnu.org/viewcvs?rev=222680&root=gcc&view=rev
Log:
PR ada/65476
* config/arm/arm.c (arm_assemble_integer): Adjust call to assemble_real
Modified:
branches/scalar-storage-order/gcc/config/arm/arm.c
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-05-01 13:24 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-19 22:11 [Bug ada/65476] New: Long_Float array does not byte swap correctly when set to Scalar_Storage_Order with High Order First daniel.merrill at psware dot com
2015-04-29 10:50 ` [Bug ada/65476] Long_Float array does not byte-swap correctly with reverse Scalar_Storage_Order ebotcazou at gcc dot gnu.org
2015-04-29 11:15 ` ebotcazou at gcc dot gnu.org
2015-04-30 15:02 ` ebotcazou at gcc dot gnu.org
2015-04-30 15:03 ` ebotcazou at gcc dot gnu.org
2015-05-01 13:24 ` ebotcazou at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).