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.