raja.saleru@xxxxxxxxxxxxxx writes: > In gcc version 3.4.6: > In the function sched_analyze_2(), if the GET_CODE (rtx) is UNSPEC_VOLATILE, > reg_pending_barrier is set to TRUE_BARRIER. > > I would like to know if TRUE_BARRIER is set, what would happen further ? > How does instruction movement/re-ordering happens ? In which function this > is done ? > > Please help as much information can about if GET_CODE (rtx) is > UNSPEC_VOLATILE,then reg_pending_barrier is set to TRUE_BARRIER. For these kinds of detailed code questions, it is definitely better to ask about current mainline, not about an old version like 3.4.6. At a high level, when reg_pending_barrier is set to TRUE_BARRIER, the scheduler makes all instructions after the barrier depend on all current instructions before the barrier. The effect is that all the instructions before the barrier must be scheduled before any of the instructions after the barrier. The actual instruction movement happens in other parts of the scheduler, notably the code in haifa-sched.c. See the long comment at the start of that file. Ian