Index: llvm/trunk/lib/Transforms/IPO/CalledValuePropagation.cpp =================================================================== --- llvm/trunk/lib/Transforms/IPO/CalledValuePropagation.cpp +++ llvm/trunk/lib/Transforms/IPO/CalledValuePropagation.cpp @@ -268,6 +268,10 @@ // 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 @@ 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)); }