diff options
| -rw-r--r-- | simplify.c | 10 | ||||
| -rw-r--r-- | validation/optim/bool-simplify2.c | 5 | ||||
| -rw-r--r-- | validation/reassoc/bug-zephyr-63417.c | 13 |
3 files changed, 22 insertions, 6 deletions
@@ -1818,10 +1818,12 @@ static int simplify_associative_binop(struct instruction *insn) insn->src2 = eval_op(insn->opcode, insn->size, insn->src2, def->src2); return replace_pseudo(insn, &insn->src1, def->src1); } - if (!one_use(def->target)) - return 0; - switch_pseudo(def, &def->src1, insn, &insn->src2); - return REPEAT_CSE; + + if (!canonical_order(def->src1, insn->src2) && can_move_to(insn->src2, def)) { + // (x # y) # z -> (z # y) # x when x ≻ z + return switch_pseudo(def, &def->src1, insn, &insn->src2); + } + return 0; } static int simplify_add_one_side(struct instruction *insn, pseudo_t *p1, pseudo_t *p2) diff --git a/validation/optim/bool-simplify2.c b/validation/optim/bool-simplify2.c index a089fe62..cf322725 100644 --- a/validation/optim/bool-simplify2.c +++ b/validation/optim/bool-simplify2.c @@ -28,10 +28,11 @@ static bool babbb(bool a, bool b, bool c) { return a && b && c; } * check-command: test-linearize $file * * check-output-pattern(20): setne\\. - * check-output-pattern(4): seteq\\. + * check-output-pattern(3): seteq\\. * check-output-pattern(8): zext\\. * check-output-pattern(12): and * check-output-pattern(12): or + * check-output-pattern(1): not * check-output-end * * check-output-start @@ -143,7 +144,7 @@ inb: bnb: .L22: <entry-point> - seteq.1 %r93 <- %arg1, $0 + not.1 %r93 <- %arg1 ret.1 %r93 diff --git a/validation/reassoc/bug-zephyr-63417.c b/validation/reassoc/bug-zephyr-63417.c new file mode 100644 index 00000000..5db821d3 --- /dev/null +++ b/validation/reassoc/bug-zephyr-63417.c @@ -0,0 +1,13 @@ +extern char __tdata_size[]; +extern char __tdata_align[]; + +unsigned long z_tls_data_size(void); +unsigned long z_tls_data_size(void) +{ + return ((unsigned long)__tdata_size) + ((unsigned long)__tdata_align - 1); +} + +/* + * check-name: bug-zephyr-63417 + * check-timeout: + */ |
