Yes, unless it is marked as "hosted" main is handled specially; there has been recent discussion about why in a thread about creating archives that contain the main routine. See also http://www.mail-archive.com/mspgcc-users@lists.sourceforge.net/msg09750.html.
At a quick glance does appear that the second call is not appropriate, though the return value is right (r15 has the correct value when main is left). If you'd like this investigated, please file a ticket on the tracker. https://sourceforge.net/tracker/?group_id=42303&atid=432701 Peter On Wed, Mar 7, 2012 at 9:43 PM, Conrado P. L. Gouvêa <conrado...@gmail.com> wrote: > Hi, > > I've decided to update my mspgcc and I have compiled the 20120224 > version (using Ubuntu 8.04). But I've noticed something strange, it > appears that the compiler is generating incorrect assembly code. This > is simple example: > > void foo() { > volatile int y = 1; > } > > int dummy() { > volatile int x = 0; > return x; > } > > int main(void) { > if (dummy() == 1) { > foo(); > return 1; > } > return 0; > } > > > Compiling with " msp430-gcc -mmcu=msp430f1611 -O2 -fno-inline main.c", > I get the following code for the main function: > > > 0000403e <main>: > 403e: b0 12 62 40 call #0x4062 > 4042: 1f 93 cmp #1, r15 ;r3 As==01 > 4044: 01 24 jz $+4 ;abs 0x4048 > 4046: 0f 43 clr r15 > 4048: b0 12 58 40 call #0x4058 > 404c: 1f 43 mov #1, r15 ;r3 As==01 > > 0000404e <__stop_progExec__>: > > Notice how the second call is executed regardless if the jump is taken > or not, which is incorrect. This causes foo() to be called even if > dummy() does not return 1. > > Can anyone reproduce this issue? Is there a bug or I've messed up > somewhere? I've just tested the Windows build and I get the same > results. > > Thanks! > Conrado > > ------------------------------------------------------------------------------ > Virtualization & Cloud Management Using Capacity Planning > Cloud computing makes use of virtualization - but cloud computing > also focuses on allowing computing to be delivered as a service. > http://www.accelacomm.com/jaw/sfnl/114/51521223/ > _______________________________________________ > Mspgcc-users mailing list > Mspgcc-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/mspgcc-users ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ Mspgcc-users mailing list Mspgcc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mspgcc-users