CodeProver does not detect overflow for non-volatile global variables

조회 수: 1 (최근 30일)
Hello,
In an attempt to check the following ticket https://ch.mathworks.com/matlabcentral/answers/374199-codeprover-does-not-detect-overflow-underflow-with-unsigned-variables, I have noticed that CodeProver does not detect potential overflow when manipulating global variables which are not volatile. If I add the volatile keyword, CodeProver does raise a warning.
int8_t a, b, c;
volatile int8_t d, e, f;
void test (void){
a = b-c; // No warning
d = e-f; // Warning raised
}
I have tried also by making some computation on these variables somewhere else in the code, but the result is the same.
Is this a confirmed behavior on your side?

채택된 답변

Alexandre De Barros
Alexandre De Barros 2018년 1월 4일
Hello,
I cannot reproduce your results: I have overflows for both volatile and non-volatile variables.
Are b and c full-range in your results ?
Alex
  댓글 수: 2
Benjamin Colle
Benjamin Colle 2018년 1월 4일
Thanks for your answer.
Even without values assigned prior to this operation, I get the behaviour. But at first (with int16 variables), I tried with b = -32768 and c = 32767.
Benjamin Colle
Benjamin Colle 2018년 1월 5일
After investigation, it has been understood and found that:
- Code Prover, when a main is available, initializes variables to 0
- The assignment of values to those variables was done after the call of the function dealing with those variables
Therefore, Code Prover considered 0-value variables, which indeed do not overflow.
Thanks!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by