[cfe-dev] report of assertion failure in clang
Ted Kremenek
kremenek at apple.com
Wed Jan 7 10:50:16 PST 2009
The assertion failure is in the static analyzer, which is why I asked
Cristian to file a new Bugzilla report. If Clang doesn't reject code
with designated initializers then the static analyzer should
gracefully fail when it encounters them instead of crash.
On Jan 7, 2009, at 9:34 AM, steve naroff <snaroff at apple.com> wrote:
> Known issue...clang doesn't support initializer lists that use
> designators (.ref notation below).
>
> The code generator is suppose to issue a diagnostic I believe. Daniel?
>
> snaroff
>
> On Jan 7, 2009, at 12:27 PM, Cristian Draghici wrote:
>
>> Is this a known issue?
>>
>> cristi:tmp diciu$ cat test.c
>>
>> struct v
>> {
>> unsigned int m;
>> void * ref;
>> int z;
>> };
>>
>> int main()
>> {
>> short buf[1];
>>
>> buf[0] = 66;
>>
>> struct v st2 = {
>> .ref = buf
>> };
>>
>> st2.m = 10;
>>
>> short * u = (short *)st2.ref;
>> printf("%d\n", *u);
>>
>> return 0;
>> }
>>
>>
>>
>> cristi:tmp diciu$ ~/Downloads/checker-137/clang -x c test.c -
>> checker-cfref
>> test.c:16:10: warning: incompatible pointer to integer conversion
>> initializing 'short [1]', expected 'unsigned int'
>> .ref = buf
>> ^~~
>> ANALYZE: test.c main
>> Assertion failed: (T->isPointerType()), function VisitCast, file
>> GRExprEngine.cpp, line 1738.
>> 0 clang 0x00a84582 std::vector<llvm::sys::Path,
>> std::allocator<llvm::sys::Path>
>> >::_M_insert_aux(__gnu_cxx::__normal_iterator<llvm::sys::Path*,
>> std::vector<llvm::sys::Path, std::allocator<llvm::sys::Path> > >,
>> llvm::sys::Path const&) + 7746
>> 1 libSystem.B.dylib 0x96edd2bb _sigtramp + 43
>> 2 libSystem.B.dylib 0xffffffff _sigtramp + 1762798959
>> 3 libSystem.B.dylib 0x96f5123a raise + 26
>> 4 libSystem.B.dylib 0x96f5d679 abort + 73
>> 5 libSystem.B.dylib 0x96f523db __assert_rtn + 101
>> 6 clang 0x00311d21 clang::CFGBlock::operator[]
>> (unsigned long) const + 77345
>> 7 clang 0x00309458 clang::CFGBlock::operator[]
>> (unsigned long) const + 42328
>> 8 clang 0x0030a5a4 clang::CFGBlock::operator[]
>> (unsigned long) const + 46756
>> 9 clang 0x00308f6a clang::CFGBlock::operator[]
>> (unsigned long) const + 41066
>> 10 clang 0x00314140 clang::CFGBlock::operator[]
>> (unsigned long) const + 86592
>> 11 clang 0x0031a741
>> clang::GRCoreEngine<clang::GRExprEngine>::ProcessStmt(clang::Stmt*,
>> clang::GRStmtNodeBuilderImpl&) + 97
>> 12 clang 0x002fe386
>> llvm::ImutAVLFactory<llvm::ImutKeyValueInfo<unsigned int, unsigned
>> int> >::Add_internal(std::pair<unsigned int, unsigned int> const&,
>> llvm::ImutAVLTree<llvm::ImutKeyValueInfo<unsigned int, unsigned
>> int> >*) + 9398
>> 13 clang 0x002fe598
>> llvm::ImutAVLFactory<llvm::ImutKeyValueInfo<unsigned int, unsigned
>> int> >::Add_internal(std::pair<unsigned int, unsigned int> const&,
>> llvm::ImutAVLTree<llvm::ImutKeyValueInfo<unsigned int, unsigned
>> int> >*) + 9928
>> 14 clang 0x00008d7c
>> llvm::cast_retty<clang::CXXRecordType, clang::Type*>::ret_type
>> llvm::cast<clang::CXXRecordType, clang::Type*>(clang::Type* const&)
>> + 9836
>> 15 clang 0x00008638
>> llvm::cast_retty<clang::CXXRecordType, clang::Type*>::ret_type
>> llvm::cast<clang::CXXRecordType, clang::Type*>(clang::Type* const&)
>> + 7976
>> 16 clang 0x00008be9
>> llvm::cast_retty<clang::CXXRecordType, clang::Type*>::ret_type
>> llvm::cast<clang::CXXRecordType, clang::Type*>(clang::Type* const&)
>> + 9433
>> 17 clang 0x00356d3b
>> clang::OverloadedFunctionDecl::getDeclContext() + 587
>> 18 clang 0x000479f2
>> clang:
>> :TokenRewriter:
>> :AddTokenAfter(std::_List_const_iterator<clang::Token>, char
>> const*) + 5586
>> 19 clang 0x0004ab34
>> clang:
>> :TokenRewriter:
>> :AddTokenAfter(std::_List_const_iterator<clang::Token>, char
>> const*) + 18196
>> 20 clang 0x00001936 _mh_execute_header + 2358
>> Abort trap
>>
>>
>>
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20090107/23020e5d/attachment.html>
More information about the cfe-dev
mailing list