Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@mycoboco
Copy link

@mycoboco mycoboco commented Feb 3, 2015

Trying to assign a struct to a unsigned bitfield triggers an assertion failure. For example, given this:

void f(void)
{
    struct { int foo:3; } x;
    struct { unsigned foo:3; } y;

    x.foo = x;
    y.foo = y;    /* line A */
}

lcc terminates saying:

6: operands of = have illegal types `int' and `struct defined at 3'
6: operands of << have illegal types `struct defined at 3' and `int'
7: operands of = have illegal types `unsigned int' and `struct defined at 4'
rcc: src/enode.c:192: cnsttree: Assertion `0' failed.
Aborted

This is because, unlike an assignment to signed bitfield, an assignment to unsigned one assumes that the type of its right operand has a type from which cnsttree() can generate a constant.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant