[Bug target/56442] New: Could not identify that register is clobbered already
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56442 Bug #: 56442 Summary: Could not identify that register is clobbered already Classification: Unclassified Product: gcc Version: 4.7.2 Status: UNCONFIRMED Severity: major Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: pitchuman...@atmel.com Wrong code is generated for avr target when gcc-4.7.2 is used. Test case: dejagnu test gcc.dg/var-expand2.c command line options: -O2 -funroll-loops -ffast-math -mmcu=atxmega128b1 (snip of assembly) ldi r24,lo8(array+4) ldi r25,hi8(array+4) sub r14,r24 sbc r15,r25 lsr r15 ror r14 lsr r15 ror r14 ldi r25,3;; r25 is overwritten and r14,r25 clr r15 lds r18,array lds r19,array+1 lds r20,array+2 lds r21,array+3 movw r28,r24;; register pair r24/r25 is used (snip of assembly) conversation on mailing list: http://gcc.gnu.org/ml/gcc/2013-02/msg00264.html
[Bug target/56442] Could not identify that register is clobbered already
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56442 Pitchumani changed: What|Removed |Added Target||a --- Comment #1 from Pitchumani 2013-02-25 08:43:22 UTC --- (In reply to comment #0) > Wrong code is generated for avr target when gcc-4.7.2 is used. > > Test case: dejagnu test gcc.dg/var-expand2.c > command line options: -O2 -funroll-loops -ffast-math -mmcu=atxmega128b1 -mmcu=atxmega128a1
[Bug target/52305] [avr] ICE in avr_print_operand: unknown mode (const_double)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52305 Pitchumani changed: What|Removed |Added CC||pitchumani.s at atmel dot ||com --- Comment #2 from Pitchumani 2013-03-24 15:58:29 UTC --- not reproducible with gcc-4.7.2. may be got fixed already?
[Bug c/51447] New: global register variable definition incorrectly removed as dead code
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51447 Bug #: 51447 Summary: global register variable definition incorrectly removed as dead code Classification: Unclassified Product: gcc Version: 4.6.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassig...@gcc.gnu.org ReportedBy: pitchuman...@atmel.com Global register variable assignment(ptr = func) in the test case below seem to be removed as dead code during CSE. As per the gcc manual, global register variable should not be removed even if it appears to be dead. http://gcc.gnu.org/onlinedocs/gcc/Global-Reg-Vars.html Discussion in gcc mailing list: http://gcc.gnu.org/ml/gcc-help/2011-12/msg00057.html Test case: register void *ptr asm("rbx") ; void testfn1(void* func) { ptr = func; goto *(ptr); } Options: -S -O1 -- snip of assembly generated -- .globl testfn1 .type testfn1, @function testfn1: .LFB0: jmp *%rdi .LFE0: .size testfn1, .-testfn1 -- snip end --