<div dir="ltr"><div><div>Hi,<br><br></div>i have the following code:<br>define internal %"struct.dexter::ConditionConstant"* @_ZN6dexter18BinaryConditionAdd8evaluateEv5(%"class.dexter::BinaryConditionAdd"*) {<br>
entry:<br>  %1 = getelementptr inbounds %"class.dexter::BinaryConditionAdd"* %0, i32 0, i32 0, i32 1<br>  %2 = load %"class.dexter::BaseCondition"** %1, align 8<br>  %3 = bitcast %"class.dexter::BaseCondition"* %2 to %"class.dexter::BinaryConditionAdd"*<br>
  %4 = getelementptr inbounds %"class.dexter::BinaryConditionAdd"* %3, i32 0, i32 0, i32 0, i32 1, i32 0<br>  %5 = bitcast %union.anon* %4 to i64*<br>  store i64 4, i64* %5, align 8<br>  %6 = getelementptr inbounds %"class.dexter::BinaryConditionAdd"* %3, i32 0, i32 0, i32 0, i32 1<br>
  %7 = bitcast %"struct.dexter::ConditionConstant"* %6 to i64*<br>  %8 = load i64* %7, align 8<br>  %9 = add nsw i64 %8, 2<br>  %10 = getelementptr inbounds %"class.dexter::BinaryConditionAdd"* %0, i32 0, i32 0, i32 0, i32 1, i32 0<br>
  %11 = bitcast %union.anon* %10 to i64*<br>  store i64 %9, i64* %11, align 8<br>  %12 = getelementptr inbounds %"class.dexter::BinaryConditionAdd"* %0, i32 0, i32 0, i32 0, i32 1<br>  ret %"struct.dexter::ConditionConstant"* %12<br>
}<br><br></div>%5 and %7 point to the same memory location. This is not detected because %4 and %6 look different. But they have the same offset and the bitcast creates. Do you have an idea how to fix that?<br></div>