[Bug target/56442] New: Could not identify that register is clobbered already

2013-02-25 Thread pitchumani.s at atmel dot com


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

2013-02-25 Thread pitchumani.s at atmel dot com


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)

2013-03-24 Thread pitchumani.s at atmel dot com


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

2011-12-06 Thread pitchumani.s at atmel dot com
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 --