forked from OSchip/llvm-project
Fix regression in pointer comparison with NULL (e.g., 0 != ptr). This fixes
<rdar://problem/6732151>. llvm-svn: 67954
This commit is contained in:
parent
356d974a93
commit
035cf930d5
|
@ -375,13 +375,11 @@ TryAgain:
|
|||
|
||||
return NonLoc::MakeIntTruthVal(BasicVals, b);
|
||||
}
|
||||
else if (isa<loc::SymbolVal>(R)) {
|
||||
else if (SymbolRef Sym = R.getAsSymbol()) {
|
||||
const SymIntExpr * SE =
|
||||
Eng.getSymbolManager().getSymIntExpr(
|
||||
cast<loc::SymbolVal>(R).getSymbol(),
|
||||
BinaryOperator::NE,
|
||||
cast<loc::ConcreteInt>(L).getValue(),
|
||||
Eng.getContext().IntTy);
|
||||
Eng.getSymbolManager().getSymIntExpr(Sym, BinaryOperator::NE,
|
||||
cast<loc::ConcreteInt>(L).getValue(),
|
||||
Eng.getContext().IntTy);
|
||||
return nonloc::SymExprVal(SE);
|
||||
}
|
||||
|
||||
|
|
|
@ -41,7 +41,19 @@ void foo(CFErrorRef* error) { // expected-warning {{Function accepting CFErrorRe
|
|||
*error = 0; // expected-warning {{Potential null dereference.}}
|
||||
}
|
||||
|
||||
int bar(CFErrorRef* error) {
|
||||
if (error) *error = 0;
|
||||
int f1(CFErrorRef* error) {
|
||||
if (error) *error = 0; // no-warning
|
||||
return 0;
|
||||
}
|
||||
|
||||
int f2(CFErrorRef* error) {
|
||||
if (0 != error) *error = 0; // no-warning
|
||||
return 0;
|
||||
}
|
||||
|
||||
int f3(CFErrorRef* error) {
|
||||
if (error != 0) *error = 0; // no-warning
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue