------- Comment #2 from ramana at gcc dot gnu dot org 2009-07-08 10:00 ------- However Confirmed with trunk for Thumb1. The extra move doesn't appear for ARM or Thumb2 .
The code below is what is generated for Thumb2 or ARM . .type _ZN3CCC5funcAEv, %function _ZN3CCC5funcAEv: .fnstart .LFB2: .cfi_startproc .cfi_personality 0x0,__gxx_personality_v0 @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 push {r3, r4, r5, lr} @ .save {r3, r4, r5, lr} .cfi_def_cfa_offset 16 mov r5, r0 @ this, this .cfi_offset 14, -4 .cfi_offset 5, -8 .cfi_offset 4, -12 .cfi_offset 3, -16 ldr r0, [r0, #0] @ float @, <variable>.fRadius bl _Z3foof @ ldr r1, [r5, #4] @, <variable>.flag mov r4, r0 @ radius, bl _Z3barfi @ mov r0, r4 @, data$fSignBitInt bl _Z3fffi @ mov r5, r0 @ D.1797, mov r0, r4 @, data$fSignBitInt bl _Z3fffi @ mov r1, r0 @ D.1803, mov r0, r5 @, D.1797 bl _Z3setii @ pop {r3, r4, r5, pc} .cfi_endproc -- ramana at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2009-07-08 10:00:06 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40680