------- Comment #14 from pinskia at gcc dot gnu dot org 2006-03-17 00:22 ------- Now ia64-hpux is a different story. Maybe the real question is why DSE/DCE is not deleting the dead code which it is?
But for future reference the docs for STRICT_ALIGNMENT is: @defmac STRICT_ALIGNMENT Define this macro to be the value 1 if instructions will fail to work if given data not on the nominal alignment. If instructions will merely go slower in that case, define this macro as 0. @end defmac Which means by default on ia64-linux-gnu, it should be defined to 1 and then SLOW_UNALIGNED_ACCESS should return 1. The docs for that: @defmac SLOW_UNALIGNED_ACCESS (@var{mode}, @var{alignment}) Define this macro to be the value 1 if memory accesses described by the @var{mode} and @var{alignment} parameters have a cost many times greater than aligned accesses, for example if they are emulated in a trap handler. When this macro is nonzero, the compiler will act as if @code{STRICT_ALIGNMENT} were nonzero when generating code for block moves. This can cause significantly more instructions to be produced. Therefore, do not set this macro nonzero if unaligned accesses only add a cycle or two to the time for a memory access. If the value of this macro is always zero, it need not be defined. If this macro is defined, it should produce a nonzero value when @code{STRICT_ALIGNMENT} is nonzero. @end defmac -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26721