New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

C99 for-loop defined variable gets incorrect scope #211

MarcelAtSolidSands opened this Issue Dec 11, 2017 · 1 comment


None yet
2 participants

MarcelAtSolidSands commented Dec 11, 2017

We found a run-time error with SuperTest for the program below. The program should print 100 for the value of 'press', but when compiled with CompCert 3.1 on an x86 Apple Mac, it prints 3. It looks like CompCert is confused about the scopes of the two variables called 'press'.


#include <stdio.h>

int press = 100;
int valve = 0;

int main (void) {
for (int press = 0; press < 3; press++) {
printf ("Value of 'press' should be 100, is: %d\n", press);
return valve - 3;

bschommer added a commit that referenced this issue Dec 12, 2017

Do not pass the env back from for stmt decls. (#42)
* Do not pass the env back from for stmt decls.

This is the source of issue #211, the environment from the elaboration of
the declaration and expressions in the for loop should not be passed back.

This comment has been minimized.


bschommer commented Dec 12, 2017

Should be fixed by 6753e8f

@bschommer bschommer closed this Dec 12, 2017

xavierleroy added a commit that referenced this issue Jan 13, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment