안녕하세요, skeleton compiler에서 miscompilation이 발생하는 것 같아 제보하고자 합니다.
다음은 제가 임의로 작성한 c 코드입니다.
#include <stdint.h>
#include <stdlib.h>
int64_t read();
void write(int64_t);
int main() {
int64_t v[12800];
int64_t* w = v;
w[0] = 1;
if (w != NULL) {
write(w[0]);
} else {
write(0);
}
}
해당 코드에서, w는 NULL이 아니므로 1을 출력해야 합니다. 그러나 해당 코드를 skeleton compiler를 이용해서 compile하면, 그 출력 결과는 0이 나옵니다. v가 사용하는 메모리 공간이 102400byte로, 의 주소값이 0으로 NULL 값과 동일하여 발생하는 문제인 것 같습니다.
실제로, 저렇게 극단적으로 stack memory를 사용하는 코드는 입력으로 들어오지 않는다고 하였지만, 최적화 과정에서 stack memory를 추가적으로 사용할 때 저런 문제가 발생할 수도 있을 것 같아서 제보 드립니다.
안녕하세요, skeleton compiler에서 miscompilation이 발생하는 것 같아 제보하고자 합니다.
다음은 제가 임의로 작성한 c 코드입니다.
해당 코드에서, w는 NULL이 아니므로 1을 출력해야 합니다. 그러나 해당 코드를 skeleton compiler를 이용해서 compile하면, 그 출력 결과는 0이 나옵니다. v가 사용하는 메모리 공간이 102400byte로, 의 주소값이 0으로 NULL 값과 동일하여 발생하는 문제인 것 같습니다.
실제로, 저렇게 극단적으로 stack memory를 사용하는 코드는 입력으로 들어오지 않는다고 하였지만, 최적화 과정에서 stack memory를 추가적으로 사용할 때 저런 문제가 발생할 수도 있을 것 같아서 제보 드립니다.
감사합니다.