Hi Andreas,

It might be a optimization issues.

Can you add the following to your program and test if the problem is gone?

      pragma opt expr_reduce no

It will disable code optimization.

Thanks.

Kind regards,

Rob

________________________________
Van: '[email protected]' via jallib <[email protected]>
Verzonden: donderdag 17 augustus 2023 21:42
Aan: jallib <[email protected]>
Onderwerp: Re: [jallib] IF statement fails

Hi Rob,
thanks that you are digging into this problem and maybe found the issue already.
I'm a heavy Jal User I would call myself, but this is the first issue I found 
over the last years :-)

On Thursday, August 17, 2023 at 9:31:13 PM UTC+2 Rob CJ wrote:
Hi Andreas,

I had a quick look at the generated assemble code for a PIC16.

In your first code example the code is (I changed 3 times i into i, j and k so 
I could compile it):

 ;   10 i=test1()
                               movlw    0
                               movwf    v_i
;   11 if i>0 & i<13 then
                               movf     v_i,w
                               bsf      v__bitbucket, 0 ; _btemp1
                               btfsc    v__status, v__z

In your last code example where you removed the function the code is:

                              clrf     v_k
;   35 if k>0 & k<13 then
                               movf     v_k,w
                               bsf      v__bitbucket, 6 ; _btemp7
                               btfsc    v__status, v__z

If I am right - and I hope I am not - the first piece of code does not work 
because the Z flag (v__z) of the status register (v__status) is never affected 
by any of these instructions. In the last code example the clrf instruction 
sets the Z flag.

In other words, moving the return value of 0 to v_i is not the same as clearing 
the value of v_k. So it might be a compiler bug. I wonder why it has not been 
discovered before.

Still need to see if my draft conclusion is correct.

Kind regards,

Rob



________________________________
Van: '[email protected]' via jallib <[email protected]>
Verzonden: donderdag 17 augustus 2023 21:07
Aan: jallib <[email protected]>
Onderwerp: Re: [jallib] IF statement fails

Hello Rob,
PIC is a 18f26K83
compiler called with: ../jalv25r7/compiler/jalv2-x86-64 -no-variable-reuse
no other specific setting
Thanks,
Andreas

On Thursday, August 17, 2023 at 9:00:33 PM UTC+2 Rob CJ wrote:
Hi,

For which PIC did you compile this? 12, 16, 18?

Did you use any compiler optimizations?

Thanks.

Kind regards,

Rob

________________________________
Van: '[email protected]' via jallib <[email protected]>
Verzonden: woensdag 16 augustus 2023 22:18
Aan: jallib <[email protected]>
Onderwerp: [jallib] IF statement fails

Hello everyone,

I found this code is not working (using jal jalv25r7, but also older versions). 
Can anyone pls verify:

var byte i
function test() return byte is
return 0
end function
i=test()
if i>0 & i<13 then
  -- goes here but is wrong
else
 ..
end if

but this code works:
var byte i
function test() return byte is
return 0
end function
i=test()
if i<13 & i>0 then
  ..
else
   -- goes here and OK
end if

if you remove the function, it works, too:
var byte i
i=0
if i>0 & i<13 then
  ..
else
   -- goes here and OK
end if


--
You received this message because you are subscribed to the Google Groups 
"jallib" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jallib/2b197dbf-4628-4acd-b13c-11e3b6ba2228n%40googlegroups.com<https://groups.google.com/d/msgid/jallib/2b197dbf-4628-4acd-b13c-11e3b6ba2228n%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups 
"jallib" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jallib/69c9a49a-e83c-4824-a27c-074f25bf0c29n%40googlegroups.com<https://groups.google.com/d/msgid/jallib/69c9a49a-e83c-4824-a27c-074f25bf0c29n%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups 
"jallib" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to 
[email protected]<mailto:[email protected]>.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jallib/f2b66222-389b-4f41-8705-41e46aad4528n%40googlegroups.com<https://groups.google.com/d/msgid/jallib/f2b66222-389b-4f41-8705-41e46aad4528n%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- 
You received this message because you are subscribed to the Google Groups 
"jallib" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jallib/GVXP195MB163796017789018B9FCF43DAE61AA%40GVXP195MB1637.EURP195.PROD.OUTLOOK.COM.

Reply via email to