[LLVMdev] Dereferencing NULL pointer in IndVarSimplify.cpp? (original) (raw)
Duncan P. N. Exon Smith dexonsmith at apple.com
Fri Oct 24 08:28:21 PDT 2014
- Previous message: [LLVMdev] Dereferencing NULL pointer in IndVarSimplify.cpp?
- Next message: [LLVMdev] Dereferencing NULL pointer in IndVarSimplify.cpp?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 2014-Oct-23, at 20:32, Andrew Trick <atrick at apple.com> wrote:
On Oct 17, 2014, at 5:21 PM, Liang Wang <netcasper at gmail.com> wrote: Hi, Here is the code in IndVarSimplify.cpp. SmallVector<WeakVH, 16> DeadInsts;
while (!DeadInsts.empty()) if (Instruction *Inst = dyncastornull(&*DeadInsts.popbackval())) RecursivelyDeleteTriviallyDeadInstructions(Inst, TLI); Since DeadInsts.popbackval() is WeakVH which could hold a NULL pointer, the expression, &*DeadInsts.popbackval(), 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?
This is UB, but &*nullptr
often "works" so I'm not surprised you
couldn't expose it with a testcase.
Try clang-dev or a c++ list for questions about the standard. I think it would have been nicer to write (Value*)DeadInsts.popbackval() -Andy
+1 (or static_cast<Value *>(DeadInsts.pop_back_val())
).
- Previous message: [LLVMdev] Dereferencing NULL pointer in IndVarSimplify.cpp?
- Next message: [LLVMdev] Dereferencing NULL pointer in IndVarSimplify.cpp?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]