Page 1 of 1

PICC18 + OSSPEEDUP_QUEUING = bad code

PostPosted: Mon Jan 20, 2003 6:15 am
by jtemples
This isn't a Salvo problem, but a PICC18 problem that affects Salvo:

With PICC18 8.20 PL3 and OSSPEEDUP_QUEUING defined, and optimization disabled, the compiler will generate bad code for qins.c, apparently in both OSInsDelayQ and OSInsPrioQ.

I haven't spent the time to try to track the problem down beyond this. Optimizing qins.c or disabling OSSPEEDUP_QUEUING results in correct code.


Re: PICC18 + OSSPEEDUP_QUEUING = bad code

PostPosted: Thu Jan 23, 2003 9:34 am
by aek
Hmmm ... I tried it with v8.20PL2, OSSPEEDUP_QUEUEING (note spelling) set to TRUE, and all combinations of assembler and global optimizations --- no problems. Perhaps it's just a PL3 problem?

I did the tests with salvodemod1sysfd1.pjt. If you can reproduce on that, email to HI-TECH and they should be able to do it, too.

The quickest way to test is in MPLAB's v5 Edit Project -- you can Build Node directly for a single file --- check/uncheck the optimization boxes, and also you can define or undefine a symbol in there, too.

------------------


Re: PICC18 + OSSPEEDUP_QUEUING = bad code

PostPosted: Thu Jan 23, 2003 10:08 am
by jtemples
Yes, it's a PL3 issue; the code built correctly in PL2. I haven't tried it with PL4 yet; I've just disabled that directive for safety. PL4 introduced too many new problems for me to be able to spend time on this one...

Re: PICC18 + OSSPEEDUP_QUEUING = bad code

PostPosted: Wed Jan 29, 2003 10:49 am
by jtemples
I ran into this again today on a different project, and spent a little more time on it.

With the PICC-18 8.20PL4 compiler and latest code generator, compiling qins.c without -Zg left me with non-working code. It was fine with -Zg. This was building for an 18F6720.
This project wasn't using OSSPEEDUP_QUEUEING, so I think that was a red herring.

[This message has been edited by jtemples (edited January 29, 2003).]


Re: PICC18 + OSSPEEDUP_QUEUING = bad code

PostPosted: Thu Jan 30, 2003 11:06 am
by aek
Can you elaborate on which part of qins.c is non-working?

------------------