http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49798

--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> 2011-07-21 00:56:19 
UTC ---
It comes from constant pool:

(gdb) bt
#0  integer_asm_op (size=8, aligned_p=1) at
/export/gnu/import/git/gcc-x32/gcc/varasm.c:2421
#1  0x0000000000df1a96 in default_assemble_integer (x=0x7ffff074fec0, size=8,
aligned_p=1)
    at /export/gnu/import/git/gcc-x32/gcc/varasm.c:2461
#2  0x0000000000df1b79 in assemble_integer (x=0x7ffff074fec0, size=8, align=64,
force=1)
    at /export/gnu/import/git/gcc-x32/gcc/varasm.c:2482
#3  0x0000000000df8040 in output_constant_pool_2 (mode=DImode,
x=0x7ffff074fec0, align=64)
    at /export/gnu/import/git/gcc-x32/gcc/varasm.c:3654
#4  0x0000000000df82a8 in output_constant_pool_1 (desc=0x7ffff07ae680,
align=64)
    at /export/gnu/import/git/gcc-x32/gcc/varasm.c:3736
#5  0x0000000000df874a in output_constant_pool_contents (pool=0x7ffff084a360)
    at /export/gnu/import/git/gcc-x32/gcc/varasm.c:3856
#6  0x0000000000df87a3 in output_shared_constant_pool ()
    at /export/gnu/import/git/gcc-x32/gcc/varasm.c:3891
#7  0x0000000000af21de in compile_file () at
/export/gnu/import/git/gcc-x32/gcc/toplev.c:579
#8  0x0000000000af4392 in do_compile () at
/export/gnu/import/git/gcc-x32/gcc/toplev.c:1886
#9  0x0000000000af44f8 in toplev_main (argc=15, argv=0x7fffffffdf48)
    at /export/gnu/import/git/gcc-x32/gcc/toplev.c:1958
#10 0x00000000005ab9ec in main (argc=15, argv=0x7fffffffdf48)
    at /export/gnu/import/git/gcc-x32/gcc/main.c:36
(gdb) f 2
#2  0x0000000000df1b79 in assemble_integer (x=0x7ffff074fec0, size=8, align=64,
force=1)
    at /export/gnu/import/git/gcc-x32/gcc/varasm.c:2482
2482      if (targetm.asm_out.integer (x, size, aligned_p))
(gdb) call debug_rtx (x)
(symbol_ref:DI ("xxxx") [flags 0x40] <var_decl 0x7ffff0859140 xxxx>)
(gdb) 

To get Pmode value out of symbol in ptr_mode, we have to do zero-extension
ourself.

Reply via email to