The following define_expand is used to generate a call to __tls_get_addr() when the first operand of movsi is detected as a TLS symbol by tls_symbol_operand(). I am trying to accomplish generating a call to __tls_get_addr() passing two arguments in two registers where I would like to clobber the first register argument. However the use of emit_clobber() has no effect. Any idea, how emit_clobber should be used below ? (define_expand "movsi" [(set (match_operand:SI 0 "nonimmediate_operand" "") (match_operand:SI 1 "general_operand" ""))] "" { rtx op0 = operands[0]; rtx op1 = operands[1]; if (tls_symbolic_operand (op0, VOIDmode)) { rtx arg0 = gen_rtx_REG (SImode, ARCH_FIRST_ARG_REGNUM); rtx arg1 = gen_rtx_REG (SImode, ARCH_FIRST_ARG_REGNUM+1); emit_insn (arg1); emit_clobber (gen__movsi (arg0, op0)); rtx fn = gen_rtx_MEM (FUNCTION_MODE, gen_arch_tga()); rtx_insn *insn = emit_call_insn (gen_call_value (arg0, fn, const0_rtx)); RTL_CONST_CALL_P (insn) = 1; use_reg (&CALL_INSN_FUNCTION_USAGE (insn), arg0); use_reg (&CALL_INSN_FUNCTION_USAGE (insn), arg1); if (GET_CODE (op0) == MEM) arg0 = gen_rtx_MEM (SImode, arg0); operands[0] = arg0; } emit_insn (gen__movsi (operands[0], operands[1])); DONE; })