Depends on 'x' type and location.

If 'x' is global and its value cannot be estimated, then you'll get:

        if(!x) goto L2;
        doTrue();
        goto L3;
L2:
        doFalse();
L3:
        doTheRest();

If x is something else.... hm...
Probably, a probability having x all zeros less smaller than having 'x' 
non-zero.
For example, intel c compiler shows it as a comment...

~d


On Monday 16 December 2002 16:50, David Brown wrote:
> I often like to look through the generated assembly code - it helps me be
> sure that the code will do what I want, and to be sure that I am not
> accidently doing something very inefficiently.  One thing I notice is that
> the way code for if-else blocks is generated seems a bit odd.  Consider the
> code:
>     if (x) doTrue() else doFalse();
>     doTheRest();
>
> This compiles roughly to:
>     if (!x) goto L1
>     doTrue();
> L2:
>     doTheRest();
>     ret
> L1:
>     doFalse()
>     goto L2
>
> I would have thought the obvious code would be:
>     if (!x) goto L1
>     doTrue();
>     goto L2
> L1:
>     doFalse();
> L2:
>     doTheRest();
>     ret
>
>
> Is there any reason for generating the first form?  It means one less jump
> for the true case, but one more jump for the false case.  It also makes it
> a lot more difficult to follow the generated assembly code.
>
>
>
> mvh.
>
> David
>
>
>
>
>
>
> -------------------------------------------------------
> This sf.net email is sponsored by:
> With Great Power, Comes Great Responsibility
> Learn to use your power at OSDN's High Performance Computing Channel
> http://hpc.devchannel.org/
> _______________________________________________
> Mspgcc-users mailing list
> Mspgcc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mspgcc-users

-- 
/********************************************************************
     ("`-''-/").___..--''"`-._     (\   Dimmy the Wild      UA1ACZ
      `6_ 6  )   `-.  (     ).`-.__.`)  Enterprise Information Sys 
      (_Y_.)'  ._   )  `._ `. ``-..-'   Nevsky prospekt,   20 / 44
    _..`--'_..-_/  /--'_.' ,'           Saint Petersburg,   Russia
   (il),-''  (li),'  ((!.-'             +7 (812)  3468202, 5585314
 ********************************************************************/


Reply via email to