+2018-06-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR tree-optimization/86066
+ * gimple-ssa-store-merging.c (process_store): Do not bypass BIT_NOT_EXPR
+ for BIT_INSERT_EXPR stores.
+
2018-06-06 Richard Biener <rguenther@suse.de>
PR tree-optimization/86062
&& const_bitsize <= 64)
{
/* Bypass a conversion to the bit-field type. */
- if (is_gimple_assign (def_stmt) && CONVERT_EXPR_CODE_P (rhs_code))
+ if (!bit_not_p
+ && is_gimple_assign (def_stmt)
+ && CONVERT_EXPR_CODE_P (rhs_code))
{
tree rhs1 = gimple_assign_rhs1 (def_stmt);
if (TREE_CODE (rhs1) == SSA_NAME
rhs = rhs1;
}
rhs_code = BIT_INSERT_EXPR;
+ bit_not_p = false;
ops[0].val = rhs;
ops[0].base_addr = NULL_TREE;
ops[1].base_addr = NULL_TREE;
+2018-06-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/torture/pr86066.c: New test.
+
2018-06-06 Richard Biener <rguenther@suse.de>
PR tree-optimization/86062
--- /dev/null
+/* PR tree-optimization/86066 */
+/* Testcase by Zhendong Su <Zhendong Su> */
+
+struct A
+{
+ int b:2;
+ int c:2;
+ unsigned d:8;
+};
+
+int main ()
+{
+ struct A t = { 0, 0, 2 };
+ L:
+ t.d = ~(~(~0 % t.d) % 2);
+ if (!t.d)
+ goto L;
+ return 0;
+}