Hi Rob,

I tried that. As a result the code size increased (+200 byte), but the 
program doesn't work any more, the output on my display stopped working, so 
it's hard to further debug this. 
So it's not clear if this helps or not because then other problems come 
into.

Andreas

On Thursday, August 17, 2023 at 10:29:51 PM UTC+2 Rob CJ wrote:

> 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].
> 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/c174132e-28a7-4383-9c2d-335a2b025082n%40googlegroups.com.

Reply via email to