------- Comment #4 from rguenth at gcc dot gnu dot org 2006-03-13 09:30 ------- Interestingly, on i686 (which has BIGGEST_ALIGNMENT 128), I get with the testcase:
Breakpoint 3, get_pointer_alignment (exp=0xb7c8b320, max_align=128) (gdb) call debug_tree(exp) <addr_expr 0xb7c8b320 type <pointer_type 0xb7c95c38 type <integer_type 0xb7c95284 int sizes-gimplified public SI size <integer_cst 0xb7c863f0 constant invariant 32> unit size <integer_cst 0xb7c86180 constant invariant 4> align 32 symtab 0 alias set -1 precision 32 min <integer_cst 0xb7c863a8 -2147483648> max <integer_cst 0xb7c863c0 2147483647> pointer_to_this <pointer_type 0xb7c95c38>> unsigned SI size <integer_cst 0xb7c863f0 32> unit size <integer_cst 0xb7c86180 4> align 32 symtab 0 alias set -1> invariant arg 0 <var_decl 0xb7c92108 x type <array_type 0xb7d2da10 type <integer_type 0xb7c95284 int> sizes-gimplified BLK size <integer_cst 0xb7c86db0 constant invariant 256> unit size <integer_cst 0xb7c86168 constant invariant 32> align 32 symtab 0 alias set -1 domain <integer_type 0xb7cebac8>> addressable used BLK file t.c line 5 size <integer_cst 0xb7c86db0 256> unit size <integer_cst 0xb7c86168 32> align 32 context <function_decl 0xb7d2bd80 foo> attributes <tree_list 0xb7d38048> (mem/s/c:BLK (plus:SI (reg/f:SI 54 virtual-stack-vars) (const_int -32 [0xffffffe0])) [0 x+0 S32 A32])>> i.e. the decl does not have alignment of 128, but 32. And we get the same alignment before and after the patch (32). Off to a ppc machine... -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26659