On Mon, 7 May 2012, Eric Botcazou wrote: > > > Sure, no opposition by me to applying the whole set of patches. > > > > Done now. > > This has introduced a couple of ACATS failures on x86: > > FAIL: c52102a > FAIL: c52102c > > The problem is that a builtin_memmove is wrongly folded into an assignment > between MEM_EXPRs, although source and destination are slices which overlap. > > In fold_builtin_memory_op: > > (gdb) p debug_generic_expr(destvar) > a[0 ...]{lb: 4294967292 sz: 4} > $14 = void > (gdb) p debug_generic_expr(dest_base) > a > $15 = void > (gdb) p dest_offset > $16 = -137438953344 > > get_ref_base_and_extent (unlike get_inner_reference) doesn't correctly > compute > the offset for ARRAY_REF/ARRAY_RANGE_REF. The code is also duplicated in > fold_const_aggregate_ref_1. Fixing this yields another ACATS failure: > > FAIL: cd2a31a > > because fold_array_ctor_reference needs to be adjusted backwards for the now > correct offset computed by get_ref_base_and_extent. > > Tentative fix attached. Tested on x86_64-suse-linux and i586-suse-linux.
Yeah, this kind of fallout is expected. The patch is ok. Thanks, Richard.