]> granicus.if.org Git - clang/commit
Fix stack overflow in linkage computation when a function with a deduced return
authorRichard Smith <richard-llvm@metafoo.co.uk>
Sun, 12 May 2013 23:17:59 +0000 (23:17 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Sun, 12 May 2013 23:17:59 +0000 (23:17 +0000)
commitd248e586d60a3fe971369089e763d5e8f669b7a9
treec68b94aec040d6a7b4c108a467014e8f236f2312
parent87360f2acd4e2fa706707135b95c64e5e2b63435
Fix stack overflow in linkage computation when a function with a deduced return
type returns a lambda defined within itself. The computation of linkage for the
function looked at the linkage of the lambda, and vice versa.

This is solved by not checking whether an 'auto' in a function return type
deduces to a type with unique external linkage. We don't need this check,
because the type deduced for 'auto' doesn't affect whether two
otherwise-identical declarations would name different functions, so we don't
need to give an ostensibly external-linkage function internal linkage for this
reason. (We also don't need unique-external linkage in C++11 onwards at all,
but that's not implemented yet.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181675 91177308-0d34-0410-b5e6-96231b3b80d8
lib/AST/Decl.cpp
test/CodeGenCXX/cxx1y-deduced-return-type.cpp [new file with mode: 0644]