NoQ added a comment. Yay thanks!
I think some cornercases would need to be dealt with. ================ Comment at: lib/StaticAnalyzer/Core/RegionStore.cpp:1650 + + // If there is a list, but no init, it must be zero. + if (i >= InitList->getNumInits()) ---------------- NoQ wrote: > Would this work correctly if the element is not of an integral or enumeration > type? I think this needs an explicit check. What if we have an out-of-bounds access to a variable-length array? I don't think it'd yield zero. ================ Comment at: lib/StaticAnalyzer/Core/RegionStore.cpp:1650-1652 + // If there is a list, but no init, it must be zero. + if (i >= InitList->getNumInits()) + return svalBuilder.makeZeroVal(R->getElementType()); ---------------- Would this work correctly if the element is not of an integral or enumeration type? I think this needs an explicit check. ================ Comment at: lib/StaticAnalyzer/Core/RegionStore.cpp:1733 + } else { + return svalBuilder.makeZeroVal(Ty); + } ---------------- Same: would this work correctly if the field is not of an integral or enumeration type? ================ Comment at: test/Analysis/initialization.c:3 + +void clang_analyzer_dump(int); ---------------- We try to avoid using `dump()` on tests because it makes tests test the dump syntax, which isn't the point. For checking constants, it's easier to do something like `clang_analyzer_eval(parr[i] == 2); // expected-warning{{TRUE}}`. For finding undefined values, you can enable `core.uninitialized` checkers and receive warnings when the argument of `clang_analyzer_eval` is an uninitialized value. Or just increment the value. Repository: rC Clang https://reviews.llvm.org/D46823 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits