The candidate bug fix patch (attached) has been updated as follows, following reviewer feedback on other changes. Changes: Rebased onto the #4072 -> #4004 -> #4005 -> #4006 stack of candidate bug fixes. Moved both new tests from valdiag to support/regression/tests. Now uses ASSERT (_Generic (...)) instead of _Static_assert. Retesting method: make -j2 make -C support/regression clean-results make -C support/regression -j2 test-ucz80 make -C support/valdiag clean make -C support/valdiag -j2 regression...
I am attaching an updated version of the candidate patch. Changes compared to the previous candidate patch for this bug: Rebased onto the revised patches for bug #4004 and bug #4005. In checkPtrCast(), it uses convertArrayToPointerType() (from the fix for bug #4005) for array conversion and checkPtrTargetQualifiers() (from the fix for bug #4004) for diagnostics. This replaces duplicated checks for discarded const, volatile, and restrict. Seven fixes for constraint violations in existing regression...
I am attaching an updated version of the candidate patch. Changes compared to the previous candidate patch for this bug: Rebased onto the revised patches for bug #4004 and bug #4005. In checkPtrCast(), it uses convertArrayToPointerType() (from the fix for bug #4005) for array conversion and checkPtrTargetQualifiers() (from the fix for bug #4004) for diagnostics. This replaces duplicated checks for discarded const, volatile, and restrict. Seven fixes for constraint violations in existing regression...
I am attaching an updated version of the candidate patch. Changes compared to the previous candidate patch for this bug: Rebased onto the revised #4004 and #4005 patches. In checkPtrCast(), it uses convertArrayToPointerType() (from the fix for bug #4005) for array conversion and checkPtrTargetQualifiers() (from the fix for bug #4004) for diagnostics. This replaces duplicated checks for discarded const, volatile, and restrict. Seven fixes for constraint violations in existing regression tests are...
This a has the same root cause as bug #3954. A candidate fix for both issues is attached to that bug.
I am attaching a version of this candidate bug fix that has been rebased on the revised patch for bug #4004, upon which it depends. It introduces a common array-to-pointer conversion helper. The candidate fix for bug #4004 on which this fix for bug #4005 is based has not been redesigned; its existing post-conversion type calculation simply delegates to the new helper function. Parameter type adjustment remains separate because its semantics differ: the _Optional qualifier is not removed in that case....
I am attaching a version of this candidate bug fix that has been rebased on the revised patch for bug #4004, upon which it depends. It introduces a common array-to-pointer conversion helper. The candidate fix for bug #4004 on which this fix for bug #4005 is based has not been redesigned; its existing post-conversion type calculation simply delegates to the new helper function. Parameter type adjustment remains separate because its semantics differ: the _Optional qualifier is not removed in that case....
A new issue was discovered: the previous version of this patch had the side-effect of causing the mcs51 compiler to crash because of a register spill-location problem. It has therefore been updated to set the new sloc->type->volatileAccess flag to false in createStackSpil, just like the existing SPEC_VOLATILE was already zeroed. (I did not find this during my previous testing because I did not 'make -C device/lib clean'.) Results of retesting are below. regression results: Summary for 'ucz80': 0...