Please send this bug report to the SDCC bug tracker instead of informing
the users of it. The users can/will not fix it and the developers, if they
happen to see it, will forget it.

http://sourceforge.net/tracker/?group_id=599&atid=100599

Maarten

> SDCC revision 7520
>
> ;--------------------------------------------------------
> ; File Created by SDCC : free open source ANSI-C Compiler
> ; Version 3.1.4 #7520 (Mar 31 2012) (MINGW32)
> ; This file was generated Fri Apr 06 04:20:22 2012
> ;--------------------------------------------------------
>       .module I2C_DBGN
>       .optsdcc -mmcs51 --model-small
>
> Source code:
>
> void Compl8b (__idata U8 *p8) //__reentrant
> {
> *p8 = ~(*p8);
> p8++;
> *p8 = ~(*p8);
> p8++;
> *p8 = ~(*p8);
> p8++;
> *p8 = ~(*p8);
> p8++;
> (*(p8)) = ~(*(p8));
> p8++;
> (*(p8)) = ~(*(p8));
> p8++;
> (*(p8)) = ~(*(p8));
> p8++;
> (*(p8)) = ~(*(p8));
> p8++;
> }
>
> Asm output:
> NO variable load after pointer changes!!
> See below:
>
> ;------------------------------------------------------------
> ;Allocation info for local variables in function 'Compl8b'
> ;------------------------------------------------------------
> ;p8                        Allocated to registers r1
> ;------------------------------------------------------------
>       G$Compl8b$0$0 ==.
>       C$I2C_DBGN.c$4746$1$439 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4746: void Compl8b (__idata U8 *p8)
> //__reentrant
> ;     -----------------------------------------
> ;      function Compl8b
> ;     -----------------------------------------
> _Compl8b:
>       push    ar7
>       push    ar1
>       mov     r1,dpl
>       C$I2C_DBGN.c$4748$1$446 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4748: *p8 = ~(*p8);
>       mov     a,@r1
>       cpl     a
>       mov     r7,a
>       mov     @r1,a
>       inc     r1
>       C$I2C_DBGN.c$4749$1$446 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4749: p8++;
>       C$I2C_DBGN.c$4750$1$446 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4750: *p8 = ~(*p8);
>       mov     a,r7
>       cpl     a
>       mov     r7,a
>       mov     @r1,a
>       inc     r1
>       C$I2C_DBGN.c$4751$1$446 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4751: p8++;
>       C$I2C_DBGN.c$4752$1$446 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4752: *p8 = ~(*p8);
>       mov     a,r7
>       cpl     a
>       mov     r7,a
>       mov     @r1,a
>       inc     r1
>       C$I2C_DBGN.c$4753$1$446 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4753: p8++;
>       C$I2C_DBGN.c$4754$1$446 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4754: *p8 = ~(*p8);
>       mov     a,r7
>       cpl     a
>       mov     r7,a
>       mov     @r1,a
>       inc     r1
>       C$I2C_DBGN.c$4755$1$446 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4755: p8++;
>       C$I2C_DBGN.c$4756$1$446 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4756: (*(p8)) = ~(*(p8));
>       mov     a,r7
>       cpl     a
>       mov     r7,a
>       mov     @r1,a
>       inc     r1
>       C$I2C_DBGN.c$4757$1$446 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4757: p8++;
>       C$I2C_DBGN.c$4758$1$446 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4758: (*(p8)) = ~(*(p8));
>       mov     a,r7
>       cpl     a
>       mov     r7,a
>       mov     @r1,a
>       inc     r1
>       C$I2C_DBGN.c$4759$1$446 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4759: p8++;
>       C$I2C_DBGN.c$4760$1$446 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4760: (*(p8)) = ~(*(p8));
>       mov     a,r7
>       cpl     a
>       mov     r7,a
>       mov     @r1,a
>       inc     r1
>       C$I2C_DBGN.c$4761$1$446 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4761: p8++;
>       C$I2C_DBGN.c$4762$1$446 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4762: (*(p8)) = ~(*(p8));
>       mov     a,r7
>       cpl     a
>       mov     @r1,a
>       C$I2C_DBGN.c$4763$1$446 ==.
> ;     C:\\PC104_T1\\I2C_DBGN.c:4763: p8++;
>       pop     ar1
>       pop     ar7
>       C$I2C_DBGN.c$4764$1$446 ==.
>       XG$Compl8b$0$0 ==.
>       ret
> ;     eliminated unneeded push/pop ar0
>
> ------------------------------------------------------------------------------
> Better than sec? Nothing is better than sec when it comes to
> monitoring Big Data applications. Try Boundary one-second
> resolution app monitoring today. Free.
> http://p.sf.net/sfu/Boundary-dev2dev
> _______________________________________________
> Sdcc-user mailing list
> Sdcc-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/sdcc-user
>
>

------------------------------------------------------------------------------
Better than sec? Nothing is better than sec when it comes to
monitoring Big Data applications. Try Boundary one-second 
resolution app monitoring today. Free.
http://p.sf.net/sfu/Boundary-dev2dev
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to