https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99212
--- Comment #2 from David Malcolm <dmalcolm at gcc dot gnu.org> --- Failing test is in test_45 at: __analyzer_eval (bits.b0 == 1); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ /* { dg-warning "UNKNOWN" "status quo" { target *-*-* } .-1 } */ x86_64-pc-linux-gnu has: bits.b0 = 1; _1 = BIT_FIELD_REF <bits, 8, 0>; _2 = _1 & 1; _3 = _2 != 0; _4 = (int) _3; __analyzer_eval (_4); bits.b0 = 1; _1 = BIT_FIELD_REF <bits, 8, 0>; _2 = _1 & 1; _3 = _2 != 0; _4 = (int) _3; __analyzer_eval (_4); whereas cris-axis-elf has: bits.b0 = 1; _1 = VIEW_CONVERT_EXPR<unsigned char>(bits); _2 = _1 & 1; _3 = _2 != 0; _4 = (int) _3; __analyzer_eval (_4); bits.b456 = 5; _5 = VIEW_CONVERT_EXPR<unsigned char>(bits); _6 = _5 & 112; _7 = _6 == 80; _8 = (int) _7; __analyzer_eval (_8); BIT_FIELD_REF doesn't work (hence the "UNKNOWN" in the expected output), whereas the first VIEW_CONVERT_EXPR does work, unexpectedly emitting "TRUE", hence the XPASS (and the FAIL on the "UNKNOWN" directive, which is there to swallow the "UNKNOWN" output)