Closed
Description
The following snippet of incorrect code causes the debug build of the compiler to assert:
struct S {
int arr _Checked[10];
int data;
};
void passing_test_2(int i) {
struct S s = { { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }, 10 };
s->arr[i] = 1;
}
Here is the output and the line of the assert. The compiler is crashing during the checking of bounds declarations.
D:\test>%clang% -fcheckedc-extension tmp.c
tmp.c:8:4: error: member reference type 'struct S' is not a pointer; did you mean to use '.'?
s->arr[i] = 1;
~^~
.
Assertion failed: E->isLValue(), file D:\llvm\tools\clang\lib\Sema\SemaBounds.cpp, line 402
The assert is double-checking that an expression is an lvalue as expected.
Metadata
Metadata
Assignees
Labels
No labels