From: David Mosberger Date: Wed, 8 Dec 2004 01:59:28 +0000 (+0000) Subject: re PR target/18443 (#pragma pack(1) breaks function pointer initialization) X-Git-Tag: releases/gcc-3.3.6~198 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1391240e22e2361cd3d9670f9a75eb1ba03c0fc2;p=thirdparty%2Fgcc.git re PR target/18443 (#pragma pack(1) breaks function pointer initialization) PR target/18443 * config/ia64/ia64.c (ia64_assemble_integer): Add support for emitting unaligned pointer-sized integers. From-SVN: r91847 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0b0aaf8a23b6..bd1a39a1fce9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-12-07 David Mosberger + + PR target/18443 + * config/ia64/ia64.c (ia64_assemble_integer): Add support for + emitting unaligned pointer-sized integers. + 2004-12-05 Richard Henderson PR target/18841 diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 67fb535fbf0f..22507f53127a 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -3021,15 +3021,16 @@ ia64_assemble_integer (x, size, aligned_p) int aligned_p; { if (size == (TARGET_ILP32 ? 4 : 8) - && aligned_p && !(TARGET_NO_PIC || TARGET_AUTO_PIC) && GET_CODE (x) == SYMBOL_REF && SYMBOL_REF_FLAG (x)) { - if (TARGET_ILP32) - fputs ("\tdata4\t@fptr(", asm_out_file); - else - fputs ("\tdata8\t@fptr(", asm_out_file); + static const char * const directive[2][2] = { + /* 64-bit pointer */ /* 32-bit pointer */ + { "\tdata8.ua\t@fptr(", "\tdata4.ua\t@fptr("}, /* unaligned */ + { "\tdata8\t@fptr(", "\tdata4\t@fptr("} /* aligned */ + }; + fputs (directive[aligned_p != 0][TARGET_ILP32 != 0], asm_out_file); output_addr_const (asm_out_file, x); fputs (")\n", asm_out_file); return true;