"Thomas A.M. Bernard" <[EMAIL PROTECTED]> writes: > I guess I am missing something here. I've tried the following as Paolo > suggested, > > (define_insn "setallocate" > [(unspec_volatile:DI [(match_operand:DI 0 "general_operand" "r")] > UNSPEC_ALLOCATE)] > "" > "allocate %0\t\t#TCB_INSTRUCTIONS" [(set_attr "type" "multi")]) > > When flag -O0 is on, everything's fine. But when flag -O1 is engaged, > the instruction is still omitted. Something missing ?
The only that gcc will remove an unspec_volatile instruction is if it is on a code path which is never executed. Look at the RTL dump files (from, e.g., -fdump-rtl-all), see where it is disappearing, and why. Ian