<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>