to not return may_alias if type check failed, proceed with next checks
[r8533]
ir_node *adr1, ir_mode *mode1,
ir_node *adr2, ir_mode *mode2)
{
ir_node *adr1, ir_mode *mode1,
ir_node *adr2, ir_mode *mode2)
{
ir_entity *ent1, *ent2;
unsigned options;
ir_entity *ent1, *ent2;
unsigned options;
if (options & aa_opt_byte_type_may_alias) {
if (get_mode_size_bits(mode1) == 8 || get_mode_size_bits(mode2) == 8) {
if (options & aa_opt_byte_type_may_alias) {
if (get_mode_size_bits(mode1) == 8 || get_mode_size_bits(mode2) == 8) {
- /* One of the modes address a byte. Assume a may_alias. */
- return may_alias;
+ /* One of the modes address a byte. Assume a may_alias ant leave
+ the type based check. */
+ goto leave_type_based_alias;
}
}
/* cheap check: If the mode sizes did not match, the types MUST be different */
}
}
/* cheap check: If the mode sizes did not match, the types MUST be different */
rel = different_types(adr1, adr2);
if (rel != may_alias)
return rel;
rel = different_types(adr1, adr2);
if (rel != may_alias)
return rel;
+leave_type_based_alias:;
}
/* do we have a language specific memory disambiguator? */
}
/* do we have a language specific memory disambiguator? */