There's a new LTS patch that addresses this issue available at https://sourceforge.net/projects/mspgcc/files/Patches/LTS/20110716/.
It appears to be an upstream register allocator bug. I don't entirely trust it, as upstream gcc hasn't confirmed the solution, but I'm confident enough to give it a shot. It does fix the problem for the TinyOS example and the non-TinyOS reproducer. Peter On Thu, Sep 15, 2011 at 8:39 AM, Michiel Konstapel <m.konsta...@sownet.nl> wrote: > Except, apparently, the other attachments didn't make it either. I guess > they're not allowed by the mailing list. > Anyway, I've also attached them to the bug report: > https://sourceforge.net/tracker/?func=detail&aid=3409864&group_id=42303&atid=432701 > >> -----Original Message----- >> From: Michiel Konstapel [mailto:m.konsta...@sownet.nl] >> Sent: donderdag 15 september 2011 15:04 >> To: mspgcc-users@lists.sourceforge.net >> Subject: Re: [Mspgcc-users] uint64_t issue? >> >> Sorry if this shows up twice; I've removed the 200 KB app.c from the >> attachments. >> >> -----Original Message----- >> From: Michiel Konstapel >> Sent: donderdag 15 september 2011 13:40 >> To: MSPGCC mailing list, >> Subject: RE: [Mspgcc-users] uint64_t issue? >> >> I've managed to isolate it into a small (TinyOS) program. I've attached >> the source and build outputs. msp430-gcc is (eventually) invoked as >> follows: >> >> msp430-gcc -B/usr/lib/ncc -mdisable-watchdog -mmcu=msp430f2418 - >> mcpu=430x -mmpy=16se -mivcnt=32 -Os -Wall -Wshadow -v -o >> /tmp/ccRWyH2t.o -c -fdollars-in-identifiers build/gnode/app.c >> >> I'll also create a ticket on SF with the files attached. >> Best, >> Michiel >> >> > -----Original Message----- >> > From: JMGross [mailto:msp...@grossibaer.de] >> > Sent: donderdag 15 september 2011 12:32 >> > To: MSPGCC mailing list, >> > Subject: Re: [Mspgcc-users] uint64_t issue? >> > >> > >> > >> > Or the optimizer is the problem. When you don't use the hardware >> > multiplier, even simple 8 and 16 bit multiplications are not inlined >> > but require a function call. >> > So optimization is different then. >> > What if you turn optimization off and use the HWM? >> > Does the bug still appear? >> > >> > It looks like a problem with the stack frame. >> > >> > I had a similar problem with 3.2.3: >> > When you called a function with parameters passed on stack and the >> > function did have local variables that didn't go into a register, >> > things were messed-up with optimization on, while with optimization >> > off all was well. >> > >> > Just an idea. >> > >> > JMGross >> > >> > ----- Ursprüngliche Nachricht ----- >> > Von: Michiel Konstapel >> > Gesendet am: 14 Sep 2011 16:30:35 >> > >> > Thanks for the reply guys, I'll try with a fresh. >> > Another data point: if I use -mmpy=none, it works, so it appears to >> be >> > related to the hardware multiplier. >> > >> > > -----Original Message----- >> > > From: Eric Decker [mailto:cire...@gmail.com] >> > > Sent: woensdag 14 september 2011 16:21 >> > > To: Peter Bigot >> > > Cc: Michiel Konstapel; mspgcc-users@lists.sourceforge.net >> > > Subject: Re: [Mspgcc-users] uint64_t issue? >> > > >> > > Michel please try again but use one of the more current builds from >> > > >> > > http://tinyprod.net/razvanm/debian >> > > >> > > From cPhone >> > > >> > > >> > > On Sep 14, 2011, at 8:01 AM, Peter Bigot <big...@acm.org> wrote: >> > > >> > > > Interesting. I'll have to figure out where that extra >> information >> > is >> > > > getting added; when I do that on one of my internal builds, I >> just >> > > get 4.5.3 >> > > > with no msp430-specific version information. Somebody's adding >> > > something >> > > > somewhere. >> > > > >> > > > The 20110428 bit raises eyebrows. No idea where that comes from, >> > but >> > > if >> > > > it's real, that'd be a large part of your problem. Take that up >> > with >> > > > whoever built the distribution you're using. Or, duplicate the >> > > problem with >> > > > a clean build of the official 20110716 release updated with the >> > > current LTS >> > > > patches and report as a ticket. Thanks. >> > > > >> > > > Peter >> > > > >> > > > On Wed, Sep 14, 2011 at 8:43 AM, Michiel Konstapel >> > > <m.konsta...@sownet.nl>wrote: >> > > > >> > > >> Update on the mspgcc version: >> > > >> >> > > >> $ msp430-gcc --version >> > > >> msp430-gcc (GCC) 4.5.3 20110428 (msp430) LTS_20110716_0813 >> > > >> >> > > >>> -----Original Message----- >> > > >>> From: Michiel Konstapel [mailto:m.konsta...@sownet.nl] >> > > >>> Sent: woensdag 14 september 2011 14:38 >> > > >>> To: mspgcc-users@lists.sourceforge.net >> > > >>> Subject: [Mspgcc-users] uint64_t issue? >> > > >>> >> > > >>> I think I've run into a compiler bug, but I'm not sure how to >> > > >>> pin >> > > it >> > > >>> down. >> > > >>> >> > > >>> I'm using the TinyOS RandomMlcg random generator: >> > > >>> >> > > >>> /* Return the next 32 bit random number */ async command >> > > >>> uint32_t Random.rand32() { >> > > >>> uint32_t mlcg,p,q; >> > > >>> uint64_t tmpseed; >> > > >>> atomic >> > > >>> { >> > > >>> tmpseed = (uint64_t)33614U * (uint64_t)seed; >> > > >>> q = tmpseed; /* low */ >> > > >>> q = q >> 1; >> > > >>> p = tmpseed >> 32 ; /* hi */ >> > > >>> mlcg = p + q; >> > > >>> if (mlcg & 0x80000000) { >> > > >>> mlcg = mlcg & 0x7FFFFFFF; >> > > >>> mlcg++; >> > > >>> } >> > > >>> seed = mlcg; >> > > >>> } >> > > >>> return mlcg; >> > > >>> } >> > > >>> >> > > >>> Now, in my program, I have a function that takes one argument. >> > > After >> > > >>> the >> > > >>> call to Random.rand16(), this argument is overwritten by the >> > value >> > > >>> 0x834e - which is 33614U. This happens with mspgcc4 (20110813) >> > but >> > > not >> > > >>> with 3.2.3. My trivial test program failed to reproduce this; >> > I'll >> > > see >> > > >>> if I can find a way to trigger it. >> > > >>> >> > > >>> The context in which it's called (noinlined so I can find it in >> > the >> > > >>> disassembly): >> > > >>> >> > > >>> void backoff(uint16_t fixed) __attribute__((noinline)) { >> > > >>> uint16_t delay = 0; >> > > >>> printf("fixed=%u\n", fixed); // here, fixed is >> > > >>> correct >> > > >>> delay = call Random.rand16(); >> > > >>> printf("fixed=%u\n", fixed); // here, fixed == >> > > 0x834e >> > > >>> ... >> > > >>> >> > > >>> For reference, the disassembly of the working version (3.2.3) >> > > followed >> > > >>> by the broken one, up to the second call to printf: >> > > >>> >> > > >>> 3.2.3: >> > > >>> 00005204 <SendP__backoff>: >> > > >>> 5204: 1b 15 .word 0x151b; ???? >> > > >>> 5206: 0a 4f mov r15, r10 >> > > >>> 5208: 0f 12 push r15 >> > > >>> 520a: 30 12 fa 51 push #20986 ;#0x51fa >> > > >>> 520e: b0 13 .word 0x13b0; ???? >> > > >>> 5210: 6a 7d subc.b @r13, r10 >> > > >>> 5212: 21 52 add #4, r1 ;r2 >> As==10 >> > > >>> 5214: b0 13 .word 0x13b0; ???? >> > > >>> 5216: 5e 52 0b 4e add.b &0x4e0b,r14 >> > > >>> 521a: 0a 12 push r10 >> > > >>> 521c: 30 12 fa 51 push #20986 ;#0x51fa >> > > >>> 5220: b0 13 .word 0x13b0; ???? >> > > >>> 5222: 6a 7d subc.b @r13, r10 >> > > >>> 5224: 21 52 add #4, r1 ;r2 >> As==10 >> > > >>> 5226: 0a 4b mov r11, r10 >> > > >>> 5228: 0b 43 clr r11 >> > > >>> 522a: b0 13 .word 0x13b0; ???? >> > > >>> 522c: f6 34 jge $+494 ;abs >> > 0x541a >> > > >>> 522e: 53 12 push.b #1 ;r3 >> As==01 >> > > >>> 5230: 0b 12 push r11 >> > > >>> 5232: 0a 12 push r10 >> > > >>> 5234: 0d 4e mov r14, r13 >> > > >>> 5236: 0e 4f mov r15, r14 >> > > >>> 5238: 7f 40 03 00 mov.b #3, r15 ;#0x0003 >> > > >>> 523c: b0 13 .word 0x13b0; ???? >> > > >>> 523e: 4a 42 mov.b r2, r10 >> > > >>> 5240: 31 50 06 00 add #6, r1 ;#0x0006 >> > > >>> 5244: 1f 42 70 14 mov &0x1470,r15 >> > > >>> 5248: 0f 5f rla r15 >> > > >>> 524a: 82 4f 70 14 mov r15, &0x1470 >> > > >>> 524e: 3f 90 11 00 cmp #17, r15 ;#0x0011 >> > > >>> 5252: 03 28 jnc $+8 ;abs >> > 0x525a >> > > >>> 5254: b2 40 10 00 mov #16, &0x1470 ;#0x0010 >> > > >>> 5258: 70 14 >> > > >>> 525a: 1a 17 .word 0x171a; ???? >> > > >>> 525c: 10 01 .word 0x0110; ???? >> > > >>> >> > > >>> 0000525e <RandomMlcgC__Random__rand32>: >> > > >>> 525e: 4b 15 .word 0x154b; ???? >> > > >>> 5260: b0 13 .word 0x13b0; ???? >> > > >>> 5262: 8a 31 jn $+790 ;abs >> > 0x5578 >> > > >>> 5264: 47 4f mov.b r15, r7 >> > > >>> 5266: 1c 42 c8 13 mov &0x13c8,r12 >> > > >>> 526a: 1d 42 ca 13 mov &0x13ca,r13 >> > > >>> 526e: 0e 43 clr r14 >> > > >>> 5270: 0f 43 clr r15 >> > > >>> 5272: 03 12 push #0 ;r3 >> As==00 >> > > >>> 5274: 03 12 push #0 ;r3 >> As==00 >> > > >>> 5276: 03 12 push #0 ;r3 >> As==00 >> > > >>> 5278: 30 12 4e 83 push #-31922 ;#0x834e >> > > >>> 527c: b0 13 .word 0x13b0; ???? >> > > >>> 527e: f6 86 31 52 sub.b @r6+, >> > 21041(r6);0x5231(r6) >> > > >>> 5282: 0a 4c mov r12, r10 >> > > >>> 5284: 0b 4d mov r13, r11 >> > > >>> 5286: 12 c3 clrc >> > > >>> 5288: 0b 10 rrc r11 >> > > >>> 528a: 0a 10 rrc r10 >> > > >>> 528c: 0c 4e mov r14, r12 >> > > >>> 528e: 0d 4f mov r15, r13 >> > > >>> 5290: 0e 43 clr r14 >> > > >>> 5292: 0f 43 clr r15 >> > > >>> 5294: 08 4c mov r12, r8 >> > > >>> 5296: 09 4d mov r13, r9 >> > > >>> 5298: 08 5a add r10, r8 >> > > >>> 529a: 09 6b addc r11, r9 >> > > >>> 529c: 39 b0 00 80 bit #-32768,r9 ;#0x8000 >> > > >>> 52a0: 04 24 jz $+10 ;abs >> > 0x52aa >> > > >>> 52a2: 39 f0 ff 7f and #32767, r9 ;#0x7fff >> > > >>> 52a6: 18 53 inc r8 >> > > >>> 52a8: 09 63 adc r9 >> > > >>> 52aa: 82 48 c8 13 mov r8, &0x13c8 >> > > >>> 52ae: 82 49 ca 13 mov r9, &0x13ca >> > > >>> 52b2: 4f 47 mov.b r7, r15 >> > > >>> 52b4: b0 13 .word 0x13b0; ???? >> > > >>> 52b6: 9e 31 jn $+830 ;abs >> > 0x55f4 >> > > >>> 52b8: 0e 48 mov r8, r14 >> > > >>> 52ba: 0f 49 mov r9, r15 >> > > >>> 52bc: 47 17 .word 0x1747; ???? >> > > >>> 52be: 10 01 .word 0x0110; ???? >> > > >>> >> > > >>> >> > > >>> 20110813 inlines the call: >> > > >>> >> > > >>> 00004c90 <SendP__backoff>: >> > > >>> 4c90: 0b 12 push r11 >> > > >>> 4c92: 0a 12 push r10 >> > > >>> 4c94: 09 12 push r9 >> > > >>> 4c96: 08 12 push r8 >> > > >>> 4c98: 07 12 push r7 >> > > >>> 4c9a: 06 12 push r6 >> > > >>> 4c9c: 05 12 push r5 >> > > >>> 4c9e: 04 12 push r4 >> > > >>> 4ca0: 21 83 decd r1 >> > > >>> 4ca2: 0f 12 push r15 >> > > >>> 4ca4: 0f 12 push r15 >> > > >>> 4ca6: 30 12 80 4c push #19584 ;#0x4c80 >> > > >>> 4caa: b0 12 b8 76 call #0x76b8 >> > > >>> 4cae: 31 50 06 00 add #6, r1 ;#0x0006 >> > > >>> 4cb2: b0 12 06 3a call #0x3a06 >> > > >>> 4cb6: c1 4f 00 00 mov.b r15, 0(r1) >> > ;0x0000(r1) >> > > >>> 4cba: 18 42 cc 13 mov &0x13cc,r8 >> > > >>> 4cbe: 19 42 ce 13 mov &0x13ce,r9 >> > > >>> 4cc2: 34 40 4e 83 mov #-31922,r4 ;#0x834e >> > > >>> 4cc6: 05 43 clr r5 >> > > >>> 4cc8: b0 12 36 7c call #0x7c36 >> > > >>> 4ccc: 0a 4c mov r12, r10 >> > > >>> 4cce: 0b 4d mov r13, r11 >> > > >>> 4cd0: 12 c3 clrc >> > > >>> 4cd2: 0b 10 rrc r11 >> > > >>> 4cd4: 0a 10 rrc r10 >> > > >>> 4cd6: 0a 5e add r14, r10 >> > > >>> 4cd8: 0b 6f addc r15, r11 >> > > >>> 4cda: 0b 93 tst r11 >> > > >>> 4cdc: 05 34 jge $+12 ;abs >> > 0x4ce8 >> > > >>> 4cde: 3a f3 and #-1, r10 ;r3 >> As==11 >> > > >>> 4ce0: 3b f0 ff 7f and #32767, r11 ;#0x7fff >> > > >>> 4ce4: 1a 53 inc r10 >> > > >>> 4ce6: 0b 63 adc r11 >> > > >>> 4ce8: 82 4a cc 13 mov r10, &0x13cc >> > > >>> 4cec: 82 4b ce 13 mov r11, &0x13ce >> > > >>> 4cf0: 6f 41 mov.b @r1, r15 >> > > >>> 4cf2: b0 12 1a 3a call #0x3a1a >> > > >>> 4cf6: 04 12 push r4 >> > > >>> 4cf8: 04 12 push r4 >> > > >>> 4cfa: 30 12 80 4c push #19584 ;#0x4c80 >> > > >>> 4cfe: b0 12 b8 76 call #0x76b8 >> > > >>> >> > > >>> I'm afraid my assembly-fu isn't very strong, but I hope someone >> > can >> > > >>> glean... something from it. >> > > >>> >> > > >>> Best, >> > > >>> Michiel >> > > >>> >> > > >>> >> > > >>> >> > > >> >> > -------------------------------------------------------------------- >> > > --- >> > > >>> ------- >> > > >>> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA >> > > >>> Learn about the latest advances in developing for the >> > > >>> BlackBerry® mobile platform with sessions, labs & more. >> > > >>> See new tools and technologies. Register for BlackBerry® >> > DevCon >> > > >>> today! >> > > >>> http://p.sf.net/sfu/rim-devcon-copy1 >> > > >>> _______________________________________________ >> > > >>> Mspgcc-users mailing list >> > > >>> Mspgcc-users@lists.sourceforge.net >> > > >>> https://lists.sourceforge.net/lists/listinfo/mspgcc-users >> > > >> >> > > >> >> > > >> >> > -------------------------------------------------------------------- >> > > ---------- >> > > >> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA >> > > >> Learn about the latest advances in developing for the >> > > >> BlackBerry® mobile platform with sessions, labs & more. >> > > >> See new tools and technologies. Register for BlackBerry® >> > DevCon >> > > today! >> > > >> http://p.sf.net/sfu/rim-devcon-copy1 >> > > >> _______________________________________________ >> > > >> Mspgcc-users mailing list >> > > >> Mspgcc-users@lists.sourceforge.net >> > > >> https://lists.sourceforge.net/lists/listinfo/mspgcc-users >> > > >> >> > > > >> > --------------------------------------------------------------------- >> > > --------- >> > > > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA >> > > > Learn about the latest advances in developing for the >> > > > BlackBerry® mobile platform with sessions, labs & more. >> > > > See new tools and technologies. Register for BlackBerry® >> > > > DevCon >> > > today! >> > > > http://p.sf.net/sfu/rim-devcon-copy1 >> > > > _______________________________________________ >> > > > Mspgcc-users mailing list >> > > > Mspgcc-users@lists.sourceforge.net >> > > > https://lists.sourceforge.net/lists/listinfo/mspgcc-users >> > >> > --------------------------------------------------------------------- >> - >> > - >> > ------- >> > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA Learn >> > about the latest advances in developing for the BlackBerry® >> mobile >> > platform with sessions, labs & more. >> > See new tools and technologies. Register for BlackBerry® DevCon >> > today! >> > http://p.sf.net/sfu/rim-devcon-copy1 >> > _______________________________________________ >> > Mspgcc-users mailing list >> > Mspgcc-users@lists.sourceforge.net >> > https://lists.sourceforge.net/lists/listinfo/mspgcc-users >> > >> > >> > --------------------------------------------------------------------- >> - >> > - >> > ------- >> > Doing More with Less: The Next Generation Virtual Desktop What are >> the >> > key obstacles that have prevented many mid-market businesses >> > from deploying virtual desktops? How do next-generation virtual >> > desktops >> > provide companies an easier-to-deploy, easier-to-manage and more >> > affordable virtual desktop >> > model.http://www.accelacomm.com/jaw/sfnl/114/51426474/ >> > _______________________________________________ >> > Mspgcc-users mailing list >> > Mspgcc-users@lists.sourceforge.net >> > https://lists.sourceforge.net/lists/listinfo/mspgcc-users > > ------------------------------------------------------------------------------ > Doing More with Less: The Next Generation Virtual Desktop > What are the key obstacles that have prevented many mid-market businesses > from deploying virtual desktops? How do next-generation virtual desktops > provide companies an easier-to-deploy, easier-to-manage and more affordable > virtual desktop model.http://www.accelacomm.com/jaw/sfnl/114/51426474/ > _______________________________________________ > Mspgcc-users mailing list > Mspgcc-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/mspgcc-users > ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 _______________________________________________ Mspgcc-users mailing list Mspgcc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mspgcc-users