651f13cea278ec967336033dd032faef0e9fc2ec |
|
24-Apr-2014 |
Stephen Hines <srhines@google.com> |
Updated to Clang 3.5a. Change-Id: I8127eb568f674c2e72635b639a3295381fe8af82
/external/clang/test/SemaCXX/linkage2.cpp
|
aa4bc18240c03b5ed7952aa5e013c081f8733ed3 |
|
30-Jun-2013 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Reinstate r185229, reverted in r185256, with a tweak: further ignore the standard's rule that an extern "C" declaration conflicts with any entity in the global scope with the same name. Now we only care if the global scope entity is a variable declaration (and so might have the same mangled name as the extern "C" declaration). This has been reported as a standard defect. Original commit message: PR7927, PR16247: Reimplement handling of matching extern "C" declarations across scopes. When we declare an extern "C" name that is not a redeclaration of an entity in the same scope, check whether it redeclares some extern "C" entity from another scope, and if not, check whether it conflicts with a (non-extern-"C") entity in the translation unit. When we declare a name in the translation unit that is not a redeclaration, check whether it conflicts with any extern "C" entities (possibly from other scopes). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185281 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
6e428a446ed7cc170346430afa7be54e83b2d28c |
|
29-Jun-2013 |
Timur Iskhodzhanov <timurrrr@google.com> |
Revert r185229 as it breaks compilation of <windows.h> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185256 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
5eab8d733ce7867fda4e6d5f5afa6dfe8a105c79 |
|
29-Jun-2013 |
Richard Smith <richard-llvm@metafoo.co.uk> |
PR7927, PR16247: Reimplement handling of matching extern "C" declarations across scopes. When we declare an extern "C" name that is not a redeclaration of an entity in the same scope, check whether it redeclares some extern "C" entity from another scope, and if not, check whether it conflicts with a (non-extern-"C") entity in the translation unit. When we declare a name in the translation unit that is not a redeclaration, check whether it conflicts with any extern "C" entities (possibly from other scopes). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185229 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
e98089083f2504a4b1f55a9f00a2a2df63cb72e0 |
|
30-May-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Fix PR16060. The testcase in PR16060 points out that while template arguments can show that a type is not externally visible, the standards still says they have external linkage. In terms of our implementation, it means that we should merge just the isExternallyVisible bit, not the formal linkage. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182962 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
a99ecbcc4c431d52df0b01539035ab5281d54656 |
|
25-May-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Fix linkage computation for derived types in inline functions. John noticed that the fix for pr15930 (r181981) didn't handle indirect uses of local types. For example, a pointer to local struct, or a function that returns it. One way to implement this would be to recursively look for local types. This would look a lot like the linkage computation itself for types. To avoid code duplication and utilize the existing linkage cache, this patch just makes the computation of "type with no linkage but externally visible because it is from an inline function" part of the linkage computation itself. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182711 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
11dc6347bb01b766cf4f357d707ff789cba9114b |
|
25-Apr-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Put friend decls in the correct context. When we find a friend declaration we have to skip transparent contexts for doing lookups, but we should not skip them when inserting the new decl if the lookup found nothing. Fixes PR15841. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180571 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
ea4b1113cea2190e4ac1d07f99102a1c0fd3eddd |
|
04-Apr-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Don't patch the storage class of static data members. This removes a bit of patching that survived r178663. Without it we can produce better a better error message for const int a = 5; static const int a; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178795 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
29c41b51137b2cbc21a8c93f7c61149247c6b01a |
|
04-Apr-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Use isExternalLinkage instead of hasExternalLinkage. Having these not be the same makes an easy to misuse API. We should audit the uses and probably rename to something like foo->hasExternalLinkage(): The c++ standard one. That is UniqueExternalLinkage or ExternalLinkage. foo->hasUniqueExternalLinkage(): Is UniqueExternalLinkage. foo->hasCogeGenExternalLinkage(): Is ExternalLinkage. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178768 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
ba2bfa07cbcb088e3afc5565a3b301a7873771a3 |
|
04-Apr-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Fix a recent linkage regression. Now that we don't have a semantic storage class, use the linkage. Thanks to Bruce Stephens for reporting this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178766 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
80a8689b274f758d9d7fb04c5cad81a582525497 |
|
04-Apr-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Fix linkage related crash. This test was exactly the opposite of what it should be. We should check if there old decl has linkage (where it makes sense) and if the new decl has the extern keyword. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178735 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
d613ac9c57936d219d9eecba1d061a45ff7a3ae8 |
|
04-Apr-2013 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Fix 41 of the 61 tests which fail with modules enabled: we were computing and caching the linkage for a declaration before we set up its redeclaration chain, when determining whether a declaration could be a redeclaration of something from an unimported submodule. We actually want to look at the declaration as if it were not a redeclaration here, so compute the linkage but don't cache it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178733 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
02fb50d54042982bccc04c276ad2342827c8fcd3 |
|
23-Feb-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Remove the hack that avoided mangling static functions in extern C contexts. Weather we should give C language linkage to functions and variables with internal linkage probably depends on how much code assumes it. The standard says they should have no language linkage, but gcc and msvc assign them C language linkage. This commit removes the hack that was preventing the mangling on static functions declare in extern C contexts. It is an experiment to see if we can implement the rules in the standard. If it turns out that many users depend on these functions and variables having C language linkage, we should change isExternC instead and try to convince the CWG to change the standard. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175937 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
747836e5c79b5e12fe9cfb9b724dc4edeb115419 |
|
14-Feb-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Partially revert r175117 so that we don't break assumptions about how static functions in extern "C" contexts are mangled. Should fix the bootstrap. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175132 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
d2fdd4256a2efc41365ccdd27a210d1d99a1fe3a |
|
14-Feb-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
merge hasCLanguageLinkage and isExternC. Keep the shorter name. I added hasCLanguageLinkage while fixing some language linkage bugs some time ago so that I wouldn't have to check all users of isExternC. It turned out to be a much longer detour than expected, but this patch finally merges the two again. The isExternC function now implements just the standard notion of having C language linkage. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175119 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
950fee2555f7a6bd193e588d6b6a941fd182391a |
|
14-Feb-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Add a getLanguageLinkage method to VarDecls and FunctionDecls. Use it to fix some cases where functions with no language linkage were being treated as having C language linkage. In particular, don't warn in extern "C" { static NonPod foo(); } Since getLanguageLinkage checks the language linkage, the linkage computation cannot use the language linkage. Break the loop by checking just the context in the linkage computation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175117 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
013539cddae154cd1782984a7dc3bb471cac397e |
|
12-Jan-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Add a test from pr14898. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172283 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
abe75ef905626d00358427a7a3c59480c1f03361 |
|
09-Jan-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Handle static functions being redeclared in function scope. Fixes pr14861. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171978 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
6acc4bc44db341d499a925cfe68bea89390039a4 |
|
05-Jan-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Assert that redeclarations have the same linkage. It is somewhat hard to test linkage, so I decided to try to add an assert. This already found some interesting cases where there were different. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171585 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
78eeba8c7d53b6b2983c76b77b23b45b89ed939d |
|
28-Dec-2012 |
Rafael Espindola <rafael.espindola@gmail.com> |
Reject overloading of two static extern C functions. This patch moves hasCLanguageLinkage to be VarDecl and FunctionDecl methods so that they can be used from SemaOverload.cpp and then fixes the logic in Sema::IsOverload. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171193 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|
e57e3d3783586934e26191cfc06ed5f3d966ea9c |
|
27-Dec-2012 |
Rafael Espindola <rafael.espindola@gmail.com> |
Implement dcl.link paragraph 5. The language linkage of redeclarations must match. GCC was already reporting an error for this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171139 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaCXX/linkage2.cpp
|