[Bug c/29592] New: Unending loops

2006-10-25 Thread darkjames at darkjames dot ath dot cx
After compilation test1.c with -O2 program loops unending.. Yeah I know is
possible cause -fstrict-aliasing and program works compilated with -O2 
-fno-strict-aliasing 
It works too if it was compilated just only with -fstrict-aliasing so it loops
when some other optimization was turned on.

It works too (not loops unending) if in loop while (* ((char *) str))
we `printf(0x%x\n, str);` (maybe some other code which evaluate and use that
exp works too, i don't really know) [test2.c]

If it's not gcc bug, I'm really sorry inconvience.. (something code like that
was used in ekg2 
#v+
(functions:
http://webcvs.ekg2.org/_checkout_/ekg2/plugins/ncurses/ecurses.c?rev=1.3 

usage:
while (__S(str, 0)) {   /* while (*str)  */
__SN(str, 1);  /* str++ */
attr++;
}
loops unending, however if __SN() was declared not inline it works... for me it
was really strange, in testcases keyword 'inline' doesn't change behavior.
#v-

If it's not gcc bug, but mine, once again i'm really sorry... Sorry for me
English too.

testcase tested with:
gcc (GCC) 4.1.1 (Gentoo 4.1.1-r1)
gcc (GCC) 4.0.3 (Ubuntu 4.0.3-1ubuntu5)
gcc (GCC) 4.1.0 (SUSE Linux)


-- 
   Summary: Unending loops
   Product: gcc
   Version: 4.1.1
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: darkjames at darkjames dot ath dot cx
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29592



[Bug c/29592] Unending loops

2006-10-25 Thread darkjames at darkjames dot ath dot cx


--- Comment #1 from darkjames at darkjames dot ath dot cx  2006-10-25 16:12 
---
Created an attachment (id=12490)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12490action=view)
First testcase

First testcase loops unending with -O2, not loops with -O2 -fno-strict-aliasing
|| 
-fstrict-aliasing -O1


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29592



[Bug c/29592] Unending loops

2006-10-25 Thread darkjames at darkjames dot ath dot cx


--- Comment #2 from darkjames at darkjames dot ath dot cx  2006-10-25 16:13 
---
Created an attachment (id=12491)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12491action=view)
Second testcase

test1.c + added printf() to loop, not loops with -O2 


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29592



[Bug c/29592] Unending loops

2006-10-25 Thread darkjames at darkjames dot ath dot cx


--- Comment #3 from darkjames at darkjames dot ath dot cx  2006-10-25 16:20 
---
By the way, it's possible to fix the code in other way than using unions?
It just need to work both for wchar_t strings and normal strings...
If you have some ideas how, it'll be nice if you give me some hint...
maybe use char * everywhere and use:

real_char_index = index * (config_use_unicode * sizeof(wchar_t)) ? 


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29592



[Bug c/29592] Unending loops

2006-10-25 Thread darkjames at darkjames dot ath dot cx


--- Comment #5 from darkjames at darkjames dot ath dot cx  2006-10-25 17:11 
---
Yeah, I know, but why gcc generate good code if we add that printf to test1.c
(test2.c) ? It's still wchar * - char * still aliasing violation.

or if we replace:
__SN(str, 1); with
str = (CHAR_T *) (((char *) str) + 1);

it generate good code too. it's still aliasing violation?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29592



[Bug c/29592] Unending loops

2006-10-25 Thread darkjames at darkjames dot ath dot cx


--- Comment #7 from darkjames at darkjames dot ath dot cx  2006-10-25 17:24 
---
Ok, one more question, is it possible to gcc print some warnings about code
like that? Cause even with -Wall it doesn't ;( 
gcc4 is quite more verbose than gcc3 so I think 
It'll be better to print warning about situation which doesn't even generate
invalid code...

which actually -Wstrict-aliasing does (according to manpage), but neither
-Wstrict-aliasing nor -Wstrict-aliasing=2 prints warning in that testcode...

I hope it's possible, thx for all.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29592