search for: analyzeloadavailability

Displaying 2 results from an estimated 2 matches for "analyzeloadavailability".

2018 Apr 18
1
[RFC] Making GVN able to visit the same block more than once
...d end: %retptr = phi i32* [ %ptr1, %a ], [ %bphi, %b ] %ret = load i32, i32* %retptr, align 4 ret i32 %ret } Here this load of %ret is fully redundant: on every path from entry to end there is a load which already has the value that %ret would load. Currently in GVN after it does AnalyzeLoadAvailability what we have is: * %val1 is available in %entry (for the entry->a->end path) * %bphi is unknown in %b (we tried to visit %entry for %ptr3 but failed because we already visited it for %ptr1) What then happens is: * We have one available and one unavailable value, so PRE is done * This...
2016 Apr 18
2
Different index types in GEPs -> non-aliasing?
...; preds = %0 ret i16 0 } Note the "undef" in the branch which GVN put there: GVN iteration: 0 GVN removed: %_tmp5 = load i16, i16* %_tmp4 GVN removed: %_tmp6 = icmp ne i16 undef, 98 When digging into why GVN does this, I found this little piece of code in GVN::AnalyzeLoadAvailability that triggers // Loading the allocation -> undef. if (isa<AllocaInst>(DepInst) || isMallocLikeFn(DepInst, TLI) || // Loading immediately after lifetime begin -> undef. isLifetimeStart(DepInst)) { Res = AvailableValue::get(UndefValue::get(LI->getType()));...