This assert looks to me like a "can this ever happen" sort of check. It quite apparently can.
Although I'm a bit curious about the reasons we got to this point in the 55403 instance (unaligned TCmode memory, extracting a TFmode value), it's clear that one could intentionally write such a thing, rather than have it happen by accident, and that it should work. The following fills in what appears to be a blank. I assume this is the sort of thing you'd have intended? I'm just doing another round of testing now... r~
* emit-rtl.c (adjust_address_1): Handle adjust_object for size_known_p instead of asserting it isn't set. diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 27464da..dd3339c 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -2177,7 +2177,11 @@ adjust_address_1 (rtx memref, enum machine_mode mode, HOST_WIDE_INT offset, } else if (attrs.size_known_p) { - gcc_assert (!adjust_object); + if (adjust_object) + { + attrs.expr = NULL_TREE; + attrs.alias = 0; + } attrs.size -= offset; /* ??? The store_by_pieces machinery generates negative sizes, so don't assert for that here. */