if (mode1 == VOIDmode
|| GET_CODE (op0) == REG || GET_CODE (op0) == SUBREG
|| (modifier != EXPAND_CONST_ADDRESS
&& modifier != EXPAND_INITIALIZER
&& ((mode1 != BLKmode && ! direct_load[(int) mode1]
&& GET_MODE_CLASS (mode) != MODE_COMPLEX_INT
&& GET_MODE_CLASS (mode) != MODE_COMPLEX_FLOAT)
/* If the field isn't aligned enough to fetch as a memref,
fetch it as a bit field. */
|| (mode1 != BLKmode
&& SLOW_UNALIGNED_ACCESS (mode1, alignment)
&& ((TYPE_ALIGN (TREE_TYPE (tem))
< GET_MODE_ALIGNMENT (mode))
|| (bitpos % GET_MODE_ALIGNMENT (mode) != 0)))
/* If the type and the field are a constant size and the
size of the type isn't the same size as the bitfield,
we must use bitfield operations. */
|| ((bitsize >= 0
&& (TREE_CODE
(TYPE_SIZE
(TREE_TYPE
(exp))) == INTEGER_CST)
&& 0 != compare_tree_int
(TYPE_SIZE
(TREE_TYPE
(exp)), bitsize)))))
|| (modifier != EXPAND_CONST_ADDRESS
&& modifier != EXPAND_INITIALIZER
&& mode == BLKmode
&& SLOW_UNALIGNED_ACCESS (mode, alignment)
&& (TYPE_ALIGN (type) > alignment
|| bitpos % TYPE_ALIGN (type) != 0)))
{
aWYgKG1vZGUxID09IFZPSURtb2RlCiAgICAgfHwgR0VUX0NPREUgKG9wMCkgPT0gUkVHIHx8IEdFVF9DT0RFIChvcDApID09IFNVQlJFRwogICAgIHx8IChtb2RpZmllciAhPSBFWFBBTkRfQ09OU1RfQUREUkVTUwogICAgICAgICAmJiBtb2RpZmllciAhPSBFWFBBTkRfSU5JVElBTElaRVIKICAgICAgICAgJiYgKChtb2RlMSAhPSBCTEttb2RlICYmICEgZGlyZWN0X2xvYWRbKGludCkgbW9kZTFdCiAgICAgICAgICAgICAgJiYgR0VUX01PREVfQ0xBU1MgKG1vZGUpICE9IE1PREVfQ09NUExFWF9JTlQKICAgICAgICAgICAgICAmJiBHRVRfTU9ERV9DTEFTUyAobW9kZSkgIT0gTU9ERV9DT01QTEVYX0ZMT0FUKQogICAgICAgICAgICAgLyogSWYgdGhlIGZpZWxkIGlzbid0IGFsaWduZWQgZW5vdWdoIHRvIGZldGNoIGFzIGEgbWVtcmVmLAogICAgICAgICAgICAgICAgZmV0Y2ggaXQgYXMgYSBiaXQgZmllbGQuICAqLwogICAgICAgICAgICAgfHwgKG1vZGUxICE9IEJMS21vZGUgIAogICAgICAgICAgICAgICAgICYmIFNMT1dfVU5BTElHTkVEX0FDQ0VTUyAobW9kZTEsIGFsaWdubWVudCkKICAgICAgICAgICAgICAgICAmJiAoKFRZUEVfQUxJR04gKFRSRUVfVFlQRSAodGVtKSkKICAgICAgICAgICAgICAgICAgICAgIDwgR0VUX01PREVfQUxJR05NRU5UIChtb2RlKSkKICAgICAgICAgICAgICAgICAgICAgfHwgKGJpdHBvcyAlIEdFVF9NT0RFX0FMSUdOTUVOVCAobW9kZSkgIT0gMCkpKQogICAgICAgICAgICAgLyogSWYgdGhlIHR5cGUgYW5kIHRoZSBmaWVsZCBhcmUgYSBjb25zdGFudCBzaXplIGFuZCB0aGUKICAgICAgICAgICAgICAgIHNpemUgb2YgdGhlIHR5cGUgaXNuJ3QgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgYml0ZmllbGQsCiAgICAgICAgICAgICAgICB3ZSBtdXN0IHVzZSBiaXRmaWVsZCBvcGVyYXRpb25zLiAgKi8KICAgICAgICAgICAgIHx8ICgoYml0c2l6ZSA+PSAwCiAgICAgICAgICAgICAgICAgICYmIChUUkVFX0NPREUgKFRZUEVfU0laRSAoVFJFRV9UWVBFIChleHApKSkKICAgICAgICAgICAgICAgICAgICAgID09IElOVEVHRVJfQ1NUKQogICAgICAgICAgICAgICAgICAmJiAwICE9IGNvbXBhcmVfdHJlZV9pbnQgKFRZUEVfU0laRSAoVFJFRV9UWVBFIChleHApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzaXplKSkpKSkKICAgICB8fCAobW9kaWZpZXIgIT0gRVhQQU5EX0NPTlNUX0FERFJFU1MKICAgICAgICAgJiYgbW9kaWZpZXIgIT0gRVhQQU5EX0lOSVRJQUxJWkVSCiAgICAgICAgICYmIG1vZGUgPT0gQkxLbW9kZQogICAgICAgICAmJiBTTE9XX1VOQUxJR05FRF9BQ0NFU1MgKG1vZGUsIGFsaWdubWVudCkKICAgICAgICAgJiYgKFRZUEVfQUxJR04gKHR5cGUpID4gYWxpZ25tZW50CiAgICAgICAgICAgICB8fCBiaXRwb3MgJSBUWVBFX0FMSUdOICh0eXBlKSAhPSAwKSkpCiAgIHs=