https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63645
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- This: expr->oper == GNM_EXPR_OP_FUNCALL && expr->func.argc == 1 is being combined into: D.2319_2 = BIT_FIELD_REF <*expr_1, 64, 0>; D.2320_3 = D.2319_2 & 18446744069414584575; D.2320_3 == 4294967297 Which is correct and I think is valid. Valgrind does not realize the part of expr will not match part of the and/equals so it complains. Basically a bug in valgrind for not tracking uninitialized bits correctly. The solution to asan message was provided in comment #4.