[Bug tree-optimization/97139] [11 Regression] Miscompare of foreman_test_baseline_encodelog.out in 464.h264ref since r11-3319-g48b0c1250a5c7d72be6b3fbbb1117d1cce43daee
marxin at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Sep 21 13:32:28 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97139
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> ---
Ok, I've got the problem, it's bit later in the function:
The diff is:
diff -u before.txt after.txt
--- before.txt 2020-09-21 15:29:56.462394644 +0200
+++ after.txt 2020-09-21 15:29:48.086453128 +0200
@@ -1,15 +1,24 @@
+ vect__648.11467_1941 = MEM <vector(4) int> [(int *)&pix + 8B];
+ _1946 = vect__648.11467_1941 < { 0, 0, 0, 0 };
+ vect_patt_180.11468_1944 = VEC_COND_EXPR <_1946, { 3, 3, 3, 3 }, { 0, 0, 0,
0 }>;
+ vect_patt_182.11469_1947 = vect__648.11467_1941 + vect_patt_180.11468_1944;
+ vect_patt_185.11470_1966 = vect_patt_182.11469_1947 >> 2;
+ _1967 = BIT_FIELD_REF <vect_patt_185.11470_1966, 32, 0>;
+ _1968 = BIT_FIELD_REF <vect_patt_185.11470_1966, 32, 32>;
+ _1950 = BIT_FIELD_REF <vect_patt_182.11469_1947, 32, 0>;
+ _1965 = BIT_FIELD_REF <vect_patt_182.11469_1947, 32, 32>;
+ _1943 = BIT_FIELD_REF <vect_patt_180.11468_1944, 32, 0>;
+ _1942 = BIT_FIELD_REF <vect_patt_180.11468_1944, 32, 32>;
+ _1945 = &pix.x + 4;
_648 = pix.x;
_649 = _648 / 4;
- pix.x = _649;
_650 = pix.y;
_651 = _650 / 4;
- pix.y = _651;
_652 = pix.pos_x;
_653 = _652 / 4;
- pix.pos_x = _653;
_654 = pix.pos_y;
_655 = _654 / 4;
- pix.pos_y = _655;
+ MEM <vector(4) int> [(int *)&pix + 8B] = vect_patt_185.11470_1966;
_492 = active_pps;
_493 = _492->constrained_intra_pred_flag;
pretmp_2084 = pix.mb_addr;
@@ -25,12 +34,12 @@
_511 = *_510;
_512 = subblock_x_278 / 2;
_513 = _512 * 2;
- _515 = _513 + _649;
+ _515 = _513 + _1943;
_516 = (long unsigned int) _515;
_517 = _516 * 8;
_518 = _511 + _517;
_519 = *_518;
- _521 = _651 + 4;
+ _521 = _1942 + 4;
_522 = (long unsigned int) _521;
_523 = _522 * 4;
_524 = _519 + _523;
The bad assignmed is
+ _515 = _513 + _1943;
where
+ _1943 = BIT_FIELD_REF <vect_patt_180.11468_1944, 32, 0>;
which is bogus VEC_COND_EXPR <_1946, { 3, 3, 3, 3 }, { 0, 0, 0, 0 }>;
while in the original code we do:
- _515 = _513 + _649;
where _649 is pix.x / 4
So I think correct would be
+ _515 = _513 + _1967;
?
More information about the Gcc-bugs
mailing list