This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

warning C180: not every path returns a value

i worked thru the manuals,
the CARM User's Guide Inline Assembly example:

int AddUp (
  int n,
  int *pTab)
{
if (n == 0) return(0);

__asm
  {
  mov   r0, #0       ; clear result
  ldav  r2, r0, pTab  ; R2=start of table
  ldav  r3, r0, n     ; R3=table length
  lsl   r3, r3, #2
lM:
  sub   r3, #4
  ldr   r1, [r2,r3]
  add   r0, r1
  cmp   r3, #0        ; end of table ?
  bgt   lM            ; loop if not eot
  }
// Return Value in R0
}

First i had to replace:

  lsl   r3, r3, #2

by mov r3,r3,lsl #2 Second there's a warning C180 not every path returns a value. The question is how to tell CARM that return value is in R0

Parents
  • Hello to everyone,
    thanks for reply.
    In practice, why not just write it as an assembler function?
    I'am i a test phase, just want to see what are advantages and disadvantages about placing ASM-code in a separated *.S-file or using the INLINE-ASSEMBLER.

    So I tested the original example from the CARM-Manual and stumbled over warning C180. I expected there would be a general solution how to tell CARM that return value is in R0. Just suppresing a warning is not really satisfying

Reply
  • Hello to everyone,
    thanks for reply.
    In practice, why not just write it as an assembler function?
    I'am i a test phase, just want to see what are advantages and disadvantages about placing ASM-code in a separated *.S-file or using the INLINE-ASSEMBLER.

    So I tested the original example from the CARM-Manual and stumbled over warning C180. I expected there would be a general solution how to tell CARM that return value is in R0. Just suppresing a warning is not really satisfying

Children