Zeng Bin <ezengbin@xxxxxxxxx> writes: > It reported the following error message during compilation: > > ../../../src/libgcc/config/libbid/bid_decimal_globals.c: In function > ‘__dfp_set_round’: > ../../../src/libgcc/config/libbid/bid_decimal_globals.c:34:1: error: > unrecognizable insn: > (call_insn/u 6 5 7 3 (parallel [ > (set (reg:DI 0 ax) > (call:DI (mem:QI (symbol_ref:DI ("__tls_get_addr")) [0 S1 > A8]) > (const_int 0 [0]))) > (unspec:DI [ > (symbol_ref:DI ("__bid_IDEC_glbround") [flags 0x10] > <var_decl 0x2b9b4508f000 __bid_IDEC_glbround>) > ] UNSPEC_TLS_GD) > ]) ../../../src/libgcc/config/libbid/bid_decimal_globals.c:33 -1 > (expr_list:REG_EH_REGION (const_int -2147483648 [0xffffffff80000000]) > (nil)) > (nil)) > ../../../src/libgcc/config/libbid/bid_decimal_globals.c:34:1: internal > compiler error: in extract_insn, at recog.c:2109 > Please submit a full bug report, This is a compiler bug. Please submit a bug report, as described at http://gcc.gnu.org/bugs. Thanks. > BTW, I am using Ubuntu with gcc-4.6.1. I am trying to compile gcc-4.6.2 > with -mcmodel=large. Relatively few people use -mcmodel=large, because of the performance penalty. I suspect that it is not well-tested, hence this sort of problem. Another approach you can take to running a program at high addresses is to use -fPIE and -pie, which lets you move the program around in memory. Ian