This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c/50281] result registers are overwritten giving incorrect result


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

NickParker at Eaton dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|inline-asm                  |c
           Severity|normal                      |major

--- Comment #1 from NickParker at Eaton dot com 2011-09-03 01:09:21 UTC ---
top level function to test mulu3u3s3 function and print result
-----------------------------------------------------------------------------
 932                   .LM119:
 933 0478 6FEF              ldi r22,lo8(16777215)
 934 047a 7FEF              ldi r23,hi8(16777215)
 935 047c 8FEF              ldi r24,hlo8(16777215)
 936 047e 90E0              ldi r25,hhi8(16777215)
 937 0480 24E6              ldi r18,lo8(100)
 938 0482 30E0              ldi r19,hi8(100)
 939 0484 40E0              ldi r20,hlo8(100)
 940 0486 50E0              ldi r21,hhi8(100)
 941 0488 0E94 0000         call MulU3U3S3
 942 048c 6B01              movw r12,r22
 943 048e 7C01              movw r14,r24
 944                   .LVL128:
 945                   .LM120:
 946 0490 80E0              ldi r24,lo8(0)
 947 0492 60E0              ldi r22,lo8(__c.2370)
 948 0494 70E0              ldi r23,hi8(__c.2370)
 949 0496 0E94 0000         call PutFlashString
 950                   .LM121:
 951 049a 80E0              ldi r24,lo8(0)
 952 049c 4FEF              ldi r20,lo8(16777215)
 953 049e 5FEF              ldi r21,hi8(16777215)
 954 04a0 6FEF              ldi r22,hlo8(16777215)
 955 04a2 70E0              ldi r23,hhi8(16777215)
 956 04a4 24E4              ldi r18,lo8(68)
 957 04a6 0E94 0000         call PrintINT4
 958                   .LM122:
 959 04aa 80E0              ldi r24,lo8(0)
 960 04ac 60E0              ldi r22,lo8(__c.2372)
 961 04ae 70E0              ldi r23,hi8(__c.2372)
 962 04b0 0E94 0000         call PutFlashString
 963                   .LM123:
 964 04b4 80E0              ldi r24,lo8(0)
 965 04b6 44E6              ldi r20,lo8(100)
 966 04b8 50E0              ldi r21,hi8(100)
 967 04ba 60E0              ldi r22,hlo8(100)
 968 04bc 70E0              ldi r23,hhi8(100)
 969 04be 24E4              ldi r18,lo8(68)
 970 04c0 0E94 0000         call PrintINT4
 971                   .LM124:
 972 04c4 80E0              ldi r24,lo8(0)
 973 04c6 60E0              ldi r22,lo8(__c.2374)
 974 04c8 70E0              ldi r23,hi8(__c.2374)
 975 04ca 0E94 0000         call PutFlashString
 976                   .LM125:
 977 04ce 80E0              ldi r24,lo8(0)
 978 04d0 B701              movw r22,r14
 979 04d2 A601              movw r20,r12
 980 04d4 24E4              ldi r18,lo8(68)
 981 04d6 0E94 0000         call PrintINT4
 982                   .LM126:
 983 04da 80E0              ldi r24,lo8(0)
 984 04dc 60E0              ldi r22,lo8(__c.2376)
 985 04de 70E0              ldi r23,hi8(__c.2376)
 986 04e0 0E94 0000         call PutFlashString

---------------------maths code ------------------------------------

259                   .global    MulU3U3S3
 261                   MulU3U3S3:
 262                   .LFB8:
 263                   .LM19:
 264                   .LVL22:
 265 00ee 2F92              push r2
 266 00f0 3F92              push r3
 267 00f2 4F92              push r4
 268 00f4 5F92              push r5
 269 00f6 6F92              push r6
 270 00f8 7F92              push r7
 271 00fa AF92              push r10
 272 00fc EF92              push r14
 273 00fe FF92              push r15
 274 0100 0F93              push r16
 275 0102 1F93              push r17
 276                   /* prologue: function */
 277                   /* frame size = 0 */
 278                   .LM20:
 279 0104 7901              movw r14,r18
 280 0106 8A01              movw r16,r20
 281                   /* #APP */
 282                    ;  324 "maths_mul.c" 1
 283 0108 0F92              push r0
 284 010a 1F92              push r1
 285 010c AF92              push r10
 286 010e AA24              clr r10
 287 0110 6E9D              mul r22,r14
 288 0112 202C              mov r2,r0
 289 0114 312C              mov r3,r1
 290 0116 6F9D              mul r22,r15
 291 0118 300C              add r3,r0
 292 011a 411C              adc r4,r1
 293 011c 5A1C              adc r5,r10
 294 011e E79E              mul r14,r23
 295 0120 300C              add r3,r0
 296 0122 411C              adc r4,r1
 297 0124 5A1C              adc r5,r10
 298 0126 609F              mul r22,r16
 299 0128 400C              add r4,r0
 300 012a 511C              adc r5,r1
 301 012c 6A1C              adc r6,r10
 302 012e E89E              mul r14,r24
 303 0130 400C              add r4,r0
 304 0132 511C              adc r5,r1
 305 0134 6A1C              adc r6,r10
 306 0136 F79E              mul r15,r23
 307 0138 400C              add r4,r0
 308 013a 511C              adc r5,r1
 309 013c 6A1C              adc r6,r10
 310 013e 709F              mul r23,r16
 311 0140 500C              add r5,r0
 312 0142 611C              adc r6,r1
 313 0144 7A1C              adc r7,r10
 314 0146 F89E              mul r15,r24
 315 0148 500C              add r5,r0
 316 014a 611C              adc r6,r1
 317 014c 7A1C              adc r7,r10
 318 014e 089F              mul r16,r24
 319 0150 600C              add r6,r0
 320 0152 711C              adc r7,r1
 321 0154 252D              mov r18,r5
 322 0156 362D              mov r19,r6
 323 0158 472D              mov r20,r7
 324 015a 5527              clr r21
 325 015c AF90              pop r10
 326 015e 1F90              pop r1
 327 0160 0F90              pop r0
 328                       
 329                    ;  0 "" 2
 330                   .LVL23:
 331                   .LM21:
 332                   /* #NOAPP */
 333 0162 B901              movw r22,r18
 334                   .LVL24:
 335 0164 CA01              movw r24,r20
 336                   /* epilogue start */
 337 0166 1F91              pop r17
 338 0168 0F91              pop r16
 339 016a FF90              pop r15
 340 016c EF90              pop r14
 341 016e AF90              pop r10
 342 0170 7F90              pop r7
 343 0172 6F90              pop r6
 344 0174 5F90              pop r5
 345 0176 4F90              pop r4
 346 0178 3F90              pop r3
 347 017a 2F90              pop r2
 348 017c 0895              ret


-----used to  print result but seems to munch it -------------------

 3612                   .global    PrintINT4
 3614                   PrintINT4:
 3615                   .LFB24:
 3616                   .LM496:
 3617                   .LVL353:
 3618 0f74 CF92              push r12
 3619 0f76 DF92              push r13
 3620 0f78 EF92              push r14
 3621 0f7a FF92              push r15
 3622 0f7c 0F93              push r16
 3623                   .LVL354:
 3624 0f7e 1F93              push r17
 3625                   /* prologue: function */
 3626                   /* frame size = 0 */
 3627 0f80 182F              mov r17,r24
 3628 0f82 6A01              movw r12,r20
 3629 0f84 7B01              movw r14,r22
 3630                   .LM497:
 3631 0f86 2434              cpi r18,lo8(68)
 3632 0f88 01F0              breq .L395
 3633                   .LVL355:
 3634 0f8a 2834              cpi r18,lo8(72)
 3635 0f8c 01F0              breq .L417
 3636                   .LM498:
 3637 0f8e 202F              mov r18,r16
 3638                   .LVL356:
 3639 0f90 0E94 0000         call PrintU4F
 3640                   /* epilogue start */
 3641                   .LM499:
 3642 0f94 1F91              pop r17
 3643                   .LVL357:
 3644 0f96 0F91              pop r16
 3645                   .LVL358:
 3646 0f98 FF90              pop r15
 3647 0f9a EF90              pop r14
 3648 0f9c DF90              pop r13
 3649 0f9e CF90              pop r12
 3650                   .LVL359:
 3651 0fa0 0895              ret


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]