diff options
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/IPO/CalledValuePropagation.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/IPO/CalledValuePropagation.cpp b/llvm/lib/Transforms/IPO/CalledValuePropagation.cpp index 1d187046ba3..d642445b35d 100644 --- a/llvm/lib/Transforms/IPO/CalledValuePropagation.cpp +++ b/llvm/lib/Transforms/IPO/CalledValuePropagation.cpp @@ -268,6 +268,10 @@ private: // If we can't track the function's return values, there's nothing to do. if (!F || !canTrackReturnsInterprocedurally(F)) { + // Void return, No need to create and update CVPLattice state as no one + // can use it. + if (I->getType()->isVoidTy()) + return; ChangedValues[RegI] = getOverdefinedVal(); return; } @@ -283,6 +287,12 @@ private: ChangedValues[RegFormal] = MergeValues(SS.getValueState(RegFormal), SS.getValueState(RegActual)); } + + // Void return, No need to create and update CVPLattice state as no one can + // use it. + if (I->getType()->isVoidTy()) + return; + ChangedValues[RegI] = MergeValues(SS.getValueState(RegI), SS.getValueState(RetF)); } |

