From: <no...@so...> - 2002-03-29 16:15:33
|
Bugs item #536787, was opened at 2002-03-29 16:15 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=100599&aid=536787&group_id=599 Category: Run Time Library Group: None Status: Open Resolution: None Priority: 5 Submitted By: Johan Knol (johanknol) Assigned to: Nobody/Anonymous (nobody) Summary: printf() is broken for width modifiers Initial Comment: E.g. "%9d" or "%-9d" does weird things, e.g. for 1, 2, 3, or 4 number digits. I don't have time to fix it now ("%09d" works :), so feel free to tackle this (should be easy) one. If no one does, this is just a reminder to myself. ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=100599&aid=536787&group_id=599 |
From: SourceForge.net <no...@so...> - 2003-03-21 18:51:10
|
Bugs item #536787, was opened at 2002-03-29 16:15 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=536787&group_id=599 Category: Run Time Library Group: None Status: Open Resolution: None Priority: 5 Submitted By: Johan Knol (johanknol) Assigned to: Nobody/Anonymous (nobody) Summary: printf() is broken for width modifiers Initial Comment: E.g. "%9d" or "%-9d" does weird things, e.g. for 1, 2, 3, or 4 number digits. I don't have time to fix it now ("%09d" works :), so feel free to tackle this (should be easy) one. If no one does, this is just a reminder to myself. ---------------------------------------------------------------------- Comment By: Marcos Augusto Stemmer (mastemmer) Date: 2003-03-21 19:04 Message: Logged In: YES user_id=739360 I also noticed that the normal printf even without type modifiers. There are many implementations of printf included in the sdcc 2.3 package, some of them quite buggy. One that works OK as far as i tested is printf_fast. So i use to place a #define printf printf_fast at the begining of the program or in the header file. ---------------------------------------------------------------------- Comment By: Bernhard Held (bernhardheld) Date: 2002-03-30 22:35 Message: Logged In: YES user_id=203539 These are 2 bugs: left_justify is fixed in vprintf.c 1.18. right_justify is a compiler-bug. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=536787&group_id=599 |
From: SourceForge.net <no...@so...> - 2003-05-10 20:25:32
|
Bugs item #536787, was opened at 2002-03-29 17:15 Message generated for change (Settings changed) made by bernhardheld You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=536787&group_id=599 >Category: Live range problems Group: None Status: Open Resolution: None Priority: 5 Submitted By: Johan Knol (johanknol) Assigned to: Nobody/Anonymous (nobody) Summary: printf() is broken for width modifiers Initial Comment: E.g. "%9d" or "%-9d" does weird things, e.g. for 1, 2, 3, or 4 number digits. I don't have time to fix it now ("%09d" works :), so feel free to tackle this (should be easy) one. If no one does, this is just a reminder to myself. ---------------------------------------------------------------------- Comment By: Marcos Augusto Stemmer (mastemmer) Date: 2003-03-21 20:04 Message: Logged In: YES user_id=739360 I also noticed that the normal printf even without type modifiers. There are many implementations of printf included in the sdcc 2.3 package, some of them quite buggy. One that works OK as far as i tested is printf_fast. So i use to place a #define printf printf_fast at the begining of the program or in the header file. ---------------------------------------------------------------------- Comment By: Bernhard Held (bernhardheld) Date: 2002-03-30 23:35 Message: Logged In: YES user_id=203539 These are 2 bugs: left_justify is fixed in vprintf.c 1.18. right_justify is a compiler-bug. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=536787&group_id=599 |
From: SourceForge.net <no...@so...> - 2003-09-29 11:11:50
|
Bugs item #536787, was opened at 2002-03-29 17:15 Message generated for change (Comment added) made by bernhardheld You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=536787&group_id=599 Category: Live range problems Group: None Status: Open Resolution: None Priority: 5 Submitted By: Johan Knol (johanknol) Assigned to: Nobody/Anonymous (nobody) Summary: printf() is broken for width modifiers Initial Comment: E.g. "%9d" or "%-9d" does weird things, e.g. for 1, 2, 3, or 4 number digits. I don't have time to fix it now ("%09d" works :), so feel free to tackle this (should be easy) one. If no one does, this is just a reminder to myself. ---------------------------------------------------------------------- >Comment By: Bernhard Held (bernhardheld) Date: 2003-09-29 13:11 Message: Logged In: YES user_id=203539 From sdcc-devel: FROM: Johan Knol DATE: 03/31/2002 01:27:08 SUBJECT: RE: [sdcc-devel] [ sdcc-Bugs-536787 ] printf() is broken for width modifiers > The problem is within the loop below. If you declare the > variables width or > length as volatile, the output is ok. > > Bernhard > > > ; vprintf.c:568: while ( width > length+1 ) > mov r3,a ; BUG! r3 is destroyed, which should hold > ; the loop-invariant (length +1) That's right, the iTemp with the invariant xpression "length+1" is moved to the preheader of the block, but it's life-range should be extended to the end of the loop. I don't know how to do that. Sandeep? Johan ---------------------------------------------------------------------- Comment By: Marcos Augusto Stemmer (mastemmer) Date: 2003-03-21 20:04 Message: Logged In: YES user_id=739360 I also noticed that the normal printf even without type modifiers. There are many implementations of printf included in the sdcc 2.3 package, some of them quite buggy. One that works OK as far as i tested is printf_fast. So i use to place a #define printf printf_fast at the begining of the program or in the header file. ---------------------------------------------------------------------- Comment By: Bernhard Held (bernhardheld) Date: 2002-03-30 23:35 Message: Logged In: YES user_id=203539 These are 2 bugs: left_justify is fixed in vprintf.c 1.18. right_justify is a compiler-bug. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=536787&group_id=599 |
From: SourceForge.net <no...@so...> - 2003-09-29 11:42:00
|
Bugs item #536787, was opened at 2002-03-29 08:15 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=536787&group_id=599 Category: Live range problems Group: None Status: Open Resolution: None Priority: 5 Submitted By: Johan Knol (johanknol) Assigned to: Nobody/Anonymous (nobody) Summary: printf() is broken for width modifiers Initial Comment: E.g. "%9d" or "%-9d" does weird things, e.g. for 1, 2, 3, or 4 number digits. I don't have time to fix it now ("%09d" works :), so feel free to tackle this (should be easy) one. If no one does, this is just a reminder to myself. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2003-09-29 04:41 Message: Logged In: NO i mailed a patch on the dev mailinglist, that should fix these liverange problems. It fixes at least the bug 519583. regards Klaus Flittner ---------------------------------------------------------------------- Comment By: Bernhard Held (bernhardheld) Date: 2003-09-29 04:11 Message: Logged In: YES user_id=203539 From sdcc-devel: FROM: Johan Knol DATE: 03/31/2002 01:27:08 SUBJECT: RE: [sdcc-devel] [ sdcc-Bugs-536787 ] printf() is broken for width modifiers > The problem is within the loop below. If you declare the > variables width or > length as volatile, the output is ok. > > Bernhard > > > ; vprintf.c:568: while ( width > length+1 ) > mov r3,a ; BUG! r3 is destroyed, which should hold > ; the loop-invariant (length +1) That's right, the iTemp with the invariant xpression "length+1" is moved to the preheader of the block, but it's life-range should be extended to the end of the loop. I don't know how to do that. Sandeep? Johan ---------------------------------------------------------------------- Comment By: Marcos Augusto Stemmer (mastemmer) Date: 2003-03-21 11:04 Message: Logged In: YES user_id=739360 I also noticed that the normal printf even without type modifiers. There are many implementations of printf included in the sdcc 2.3 package, some of them quite buggy. One that works OK as far as i tested is printf_fast. So i use to place a #define printf printf_fast at the begining of the program or in the header file. ---------------------------------------------------------------------- Comment By: Bernhard Held (bernhardheld) Date: 2002-03-30 14:35 Message: Logged In: YES user_id=203539 These are 2 bugs: left_justify is fixed in vprintf.c 1.18. right_justify is a compiler-bug. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=536787&group_id=599 |
From: SourceForge.net <no...@so...> - 2004-03-09 10:01:40
|
Bugs item #536787, was opened at 2002-03-29 17:15 Message generated for change (Comment added) made by maartenbrock You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=536787&group_id=599 Category: Live range problems Group: None Status: Open Resolution: None Priority: 5 Submitted By: Johan Knol (johanknol) Assigned to: Nobody/Anonymous (nobody) Summary: printf() is broken for width modifiers Initial Comment: E.g. "%9d" or "%-9d" does weird things, e.g. for 1, 2, 3, or 4 number digits. I don't have time to fix it now ("%09d" works :), so feel free to tackle this (should be easy) one. If no one does, this is just a reminder to myself. ---------------------------------------------------------------------- Comment By: Maarten Brock (maartenbrock) Date: 2004-03-09 10:44 Message: Logged In: YES user_id=888171 I tried to reproduce this problem, but was not able to. Maybe this bug is fixed by now and should be closed? ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2003-09-29 13:41 Message: Logged In: NO i mailed a patch on the dev mailinglist, that should fix these liverange problems. It fixes at least the bug 519583. regards Klaus Flittner ---------------------------------------------------------------------- Comment By: Bernhard Held (bernhardheld) Date: 2003-09-29 13:11 Message: Logged In: YES user_id=203539 From sdcc-devel: FROM: Johan Knol DATE: 03/31/2002 01:27:08 SUBJECT: RE: [sdcc-devel] [ sdcc-Bugs-536787 ] printf() is broken for width modifiers > The problem is within the loop below. If you declare the > variables width or > length as volatile, the output is ok. > > Bernhard > > > ; vprintf.c:568: while ( width > length+1 ) > mov r3,a ; BUG! r3 is destroyed, which should hold > ; the loop-invariant (length +1) That's right, the iTemp with the invariant xpression "length+1" is moved to the preheader of the block, but it's life-range should be extended to the end of the loop. I don't know how to do that. Sandeep? Johan ---------------------------------------------------------------------- Comment By: Marcos Augusto Stemmer (mastemmer) Date: 2003-03-21 20:04 Message: Logged In: YES user_id=739360 I also noticed that the normal printf even without type modifiers. There are many implementations of printf included in the sdcc 2.3 package, some of them quite buggy. One that works OK as far as i tested is printf_fast. So i use to place a #define printf printf_fast at the begining of the program or in the header file. ---------------------------------------------------------------------- Comment By: Bernhard Held (bernhardheld) Date: 2002-03-30 23:35 Message: Logged In: YES user_id=203539 These are 2 bugs: left_justify is fixed in vprintf.c 1.18. right_justify is a compiler-bug. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=536787&group_id=599 |
From: SourceForge.net <no...@so...> - 2004-03-09 11:01:24
|
Bugs item #536787, was opened at 2002-03-29 17:15 Message generated for change (Comment added) made by bernhardheld You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=536787&group_id=599 Category: Live range problems >Group: fixed >Status: Closed >Resolution: Fixed Priority: 5 Submitted By: Johan Knol (johanknol) >Assigned to: Klaus Flittner (kflittner) Summary: printf() is broken for width modifiers Initial Comment: E.g. "%9d" or "%-9d" does weird things, e.g. for 1, 2, 3, or 4 number digits. I don't have time to fix it now ("%09d" works :), so feel free to tackle this (should be easy) one. If no one does, this is just a reminder to myself. ---------------------------------------------------------------------- >Comment By: Bernhard Held (bernhardheld) Date: 2004-03-09 11:44 Message: Logged In: YES user_id=203539 Thanks Klaus for the great fix, thanks Maarten for re- evaluation! ---------------------------------------------------------------------- Comment By: Maarten Brock (maartenbrock) Date: 2004-03-09 10:44 Message: Logged In: YES user_id=888171 I tried to reproduce this problem, but was not able to. Maybe this bug is fixed by now and should be closed? ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2003-09-29 13:41 Message: Logged In: NO i mailed a patch on the dev mailinglist, that should fix these liverange problems. It fixes at least the bug 519583. regards Klaus Flittner ---------------------------------------------------------------------- Comment By: Bernhard Held (bernhardheld) Date: 2003-09-29 13:11 Message: Logged In: YES user_id=203539 From sdcc-devel: FROM: Johan Knol DATE: 03/31/2002 01:27:08 SUBJECT: RE: [sdcc-devel] [ sdcc-Bugs-536787 ] printf() is broken for width modifiers > The problem is within the loop below. If you declare the > variables width or > length as volatile, the output is ok. > > Bernhard > > > ; vprintf.c:568: while ( width > length+1 ) > mov r3,a ; BUG! r3 is destroyed, which should hold > ; the loop-invariant (length +1) That's right, the iTemp with the invariant xpression "length+1" is moved to the preheader of the block, but it's life-range should be extended to the end of the loop. I don't know how to do that. Sandeep? Johan ---------------------------------------------------------------------- Comment By: Marcos Augusto Stemmer (mastemmer) Date: 2003-03-21 20:04 Message: Logged In: YES user_id=739360 I also noticed that the normal printf even without type modifiers. There are many implementations of printf included in the sdcc 2.3 package, some of them quite buggy. One that works OK as far as i tested is printf_fast. So i use to place a #define printf printf_fast at the begining of the program or in the header file. ---------------------------------------------------------------------- Comment By: Bernhard Held (bernhardheld) Date: 2002-03-30 23:35 Message: Logged In: YES user_id=203539 These are 2 bugs: left_justify is fixed in vprintf.c 1.18. right_justify is a compiler-bug. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=536787&group_id=599 |
From: Bernhard <ber...@be...> - 2002-03-30 22:37:39
|
> Initial Comment: > E.g. "%9d" or "%-9d" does weird things, e.g. for 1, 2, > 3, or 4 number digits. > I don't have time to fix it now ("%09d" works :), so > feel free to tackle this (should be easy) one. I commited a fix for the left-justification (vprintf.c 1.18). But the right-justification is a bug in SDCC. I'm afraid I've to reassign the bug to you ;-) The problem is within the loop below. If you declare the variables width or length as volatile, the output is ok. Bernhard ; vprintf.c:568: while ( width > length+1 ) ; genPlus ; genPlusIncr mov a,#0x01 add a,r2 mov r3,a ; genAssign mov ar4,r5 00180$: ; genCmpGt ; genCmp clr c mov a,r3 subb a,r4 clr a rlc a mov r3,a ; BUG! r3 is destroyed, which should hold ; the loop-invariant (length +1) ; genAssign mov ar5,r4 ; genIfx mov a,r3 ; genIfxJump ; Peephole 110 removed ljmp by inverse jump logic jz 00184$ 00349$: ; vprintf.c:570: output_char( ' ' ); ; genCall mov dpl,#0x20 push ar2 push ar4 push ar5 lcall _output_char pop ar5 pop ar4 pop ar2 ; vprintf.c:571: width--; ; genMinus ; genMinusDec dec r4 ; Peephole 132 changed ljmp to sjmp sjmp 00180$ |
From: Johan K. <joh...@id...> - 2002-03-31 09:27:24
|
> The problem is within the loop below. If you declare the variables width or > length as volatile, the output is ok. > > Bernhard > > > ; vprintf.c:568: while ( width > length+1 ) > mov r3,a ; BUG! r3 is destroyed, which should hold > ; the loop-invariant (length +1) That's right, the iTemp with the invariant expression "length+1" is moved to the preheader of the block, but it's life-range should be extended to the end of the loop. I don't know how to do that. Sandeep? Johan |
From: Sandeep D. <sa...@wi...> - 2002-04-01 18:10:32
|
will take a look at this ASAP Sandeep > -----Original Message----- > From: sdc...@li... > [mailto:sdc...@li...]On Behalf Of Johan Knol > Sent: Sunday, March 31, 2002 1:27 AM > To: sdc...@li... > Subject: Re: [sdcc-devel] [ sdcc-Bugs-536787 ] printf() is broken for > width modifiers > > > > The problem is within the loop below. If you declare the > variables width > or > > length as volatile, the output is ok. > > > > Bernhard > > > > > > ; vprintf.c:568: while ( width > length+1 ) > > > mov r3,a ; BUG! r3 is destroyed, which should hold > > ; the loop-invariant (length +1) > > That's right, the iTemp with the invariant expression > "length+1" is moved to > the preheader of the block, but it's life-range should be > extended to the > end of the loop. I don't know how to do that. Sandeep? > > Johan > > > > _______________________________________________ > sdcc-devel mailing list > sdc...@li... > https://lists.sourceforge.net/lists/listinfo/sdcc-devel > |