[LLVMdev] Dereferencing NULL pointer in IndVarSimplify.cpp?

Liang Wang netcasper at gmail.com
Fri Oct 17 17:21:12 PDT 2014


Hi,

Here is the code in IndVarSimplify.cpp.

    SmallVector<WeakVH, 16> DeadInsts;


  while (!DeadInsts.empty())
    if (Instruction *Inst =
          dyn_cast_or_null<Instruction>(&*DeadInsts.pop_back_val()))
      RecursivelyDeleteTriviallyDeadInstructions(Inst, TLI);

Since DeadInsts.pop_back_val() is WeakVH which could hold a NULL
pointer, the expression, &*DeadInsts.pop_back_val(), could be &*NULL.
Then NULL pointer is dereferenced here.

I wrote a small test case and it works just fine. But is this a
well-defined behavior in the standard?


Thanks,
Liang



More information about the llvm-dev mailing list