forked from OSchip/llvm-project
Fix -Wuninitialized regression involving functions invalidating parameters passed by reference.
llvm-svn: 135610
This commit is contained in:
parent
82f64488ec
commit
81383c20e4
|
@ -441,8 +441,10 @@ void TransferFunctions::VisitDeclRefExpr(DeclRefExpr *dr) {
|
|||
// Record the last DeclRefExpr seen. This is an lvalue computation.
|
||||
// We use this value to later detect if a variable "escapes" the analysis.
|
||||
if (const VarDecl *vd = dyn_cast<VarDecl>(dr->getDecl()))
|
||||
if (isTrackedVar(vd))
|
||||
if (isTrackedVar(vd)) {
|
||||
ProcessUses();
|
||||
lastDR = dr;
|
||||
}
|
||||
}
|
||||
|
||||
void TransferFunctions::VisitDeclStmt(DeclStmt *ds) {
|
||||
|
|
|
@ -66,6 +66,16 @@ test4_A test4() {
|
|||
return a; // expected-warning{{variable 'a' is uninitialized when used here}}
|
||||
}
|
||||
|
||||
// Test variables getting invalidated by function calls with reference arguments
|
||||
// *AND* there are multiple invalidated arguments.
|
||||
void test5_aux(int &, int &);
|
||||
|
||||
int test5() {
|
||||
int x, y;
|
||||
test5_aux(x, y);
|
||||
return x + y; // no-warning
|
||||
}
|
||||
|
||||
// This test previously crashed Sema.
|
||||
class Rdar9188004A {
|
||||
public:
|
||||
|
|
Loading…
Reference in New Issue