aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGenCXX
AgeCommit message (Collapse)Author
2013-03-15Force column info only for direct inlined functions. This should strikeAdrian Prantl
the balance between expected behavior and compatibility with the gdb testsuite. (GDB gets confused if we break an expression into multiple debug stmts so we enable this behavior only for inlined functions. For the full experience people can still use -gcolumn-info.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177164 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-14Allocate stack storage for .block_descriptor and captured self at -O0.Adrian Prantl
This way the register allocator will not optimize away the debug info for captured variables. Fixes rdar://problem/12767564 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177086 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-13relax check to allow for attributes (fix buildbot for elf-ppc64)Adrian Prantl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176954 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-12Eliminate backend dependency in CFE testcase.Adrian Prantl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176901 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-12Force column info to be generated for call expressions so we canAdrian Prantl
differentiate multiple inlined call sites on the same line in the debug info. Fixes rdar://problem/13036237 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176895 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-12Correctly compute linkage of decls forward declared extern C.Rafael Espindola
This fixes a crash in namespace { struct X {}; } extern "C" X test2_b; X test2_b before we would assign different linkages to each of the test2_b decls. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176869 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-12Remove a bogus assert so we don't crash inRafael Espindola
namespace { struct X {}; } extern "C" { X b = X(); } git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176866 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-05Use ASTContext::getDeclAlign(<Field Decl>) to get the alignment of the firstLang Hames
field to be memcpy'd, rather instead of ASTContext::getTypeAlign(<Field Type>). For packed structs the alignment of a field may be less than the alignment of the field's type. <rdar://problem/13338585> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176512 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-05Don't emit calls to virtual [[noreturn]] functions as noreturn; overrides of aRichard Smith
[[noreturn]] function are not required to also be [[noreturn]]. We still emit calls to virtual __attribute__((noreturn)) functions as noreturn; unlike GCC, we do require overriders to also be noreturn for that attribute. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176476 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-04Fix the emission of the copy-initialization of a block captureJohn McCall
from a lambda capture when the capture is not trivially-copyable. rdar://13295759 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176431 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-28Add more of the command line options as attribute flags.Bill Wendling
These can be easily queried by the back-end. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176304 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-28Use the actual ABI-determined C calling convention for runtimeJohn McCall
calls and declarations. LLVM has a default CC determined by the target triple. This is not always the actual default CC for the ABI we've been asked to target, and so we sometimes find ourselves annotating all user functions with an explicit calling convention. Since these calling conventions usually agree for the simple set of argument types passed to most runtime functions, using the LLVM-default CC in principle has no effect. However, the LLVM optimizer goes into histrionics if it sees this kind of formal CC mismatch, since it has no concept of CC compatibility. Therefore, if this module happens to define the "runtime" function, or got LTO'ed with such a definition, we can miscompile; so it's quite important to get this right. Defining runtime functions locally is quite common in embedded applications. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176286 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-27Better support for constructors with -cxx-abi microsoft, partly fixes PR12784Timur Iskhodzhanov
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176186 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-27Don't cache the visibility of types.Rafael Espindola
Since r175326 an implicitly hidden template argument can cause a template installation to become hidden, even if the template itself has an explicit default visibility. This requires that we keep track of "late" additions of the visibility attribute. This is hopefully the last followup change. It just removes the caching of visibilities from types so that we can see new attributes even after a type has been used. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176164 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-27Use the correct alignment for POD-member memcpys where the first field is aLang Hames
bitfield. CGBitField::StorageAlignment holds the alignment in chars, but emitMemcpy had been treating it as if it were held in bits, leading to underaligned memcpys. Related to PR15348. Thanks very much to Chandler for the diagnosis. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176163 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-27Reapply r176133 with testcase fixes.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176145 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-26Use existing macros to simplify the test a bit.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176138 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-26Use the most recent decl in getExplicitVisibility.Rafael Espindola
Now that implicitly hidden template arguments can make an instantiation hidden, it is important to look at more than just the canonical decl of the argument in order to see if an attribute is available in a more recent decl. This has the disadvantage of exposing when getExplicitVisibility is called, but lets us handle cases like template <typename T> struct __attribute__((visibility("default"))) barT { static void zed() {} }; class foo; class __attribute__((visibility("default"))) foo; template struct barT<foo>; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176112 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-26Be more careful in applying pragma weak. Fixes pr14974.Rafael Espindola
GCC applies a pragma weak to a decl if it matches the mangled name. We used to apply if it matched the plain name. This patch is a compromise: we apply the pragma only if it matches the name and the decl has C language linkage. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176110 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-25[ubsan] Emit single check for left shift.Will Dietz
Avoids warning twice on same shift. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176056 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-25Revert "Add more attributes from the command line to functions."Anna Zaks
This reverts commit 176009. The commit is a likely cause of several buildbot failures. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176044 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-25Add more attributes from the command line to functions.Bill Wendling
This is an ongoing process. Any command line option which a back-end cares about should be added here. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176009 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-24PR15338: Don't assert if -fsanitize=bounds sees array indexing on an incompleteRichard Smith
array type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175982 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-23ubsan: Emit bounds checks for array indexing, vector indexing, and (in ↵Richard Smith
really simple cases) pointer arithmetic. This augments the existing bounds checking with language-level array bounds information. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175949 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-23Remove the hack that avoided mangling static functions in extern C contexts.Rafael Espindola
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
2013-02-22Update tests so that we don't test for function-only attributes on call sites.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175921 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-22Update to use references to attribute groups instead of listing the ↵Bill Wendling
attributes on the call/invoke instructions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175878 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-21Ignore visibility from enclosing template argumentsJohn McCall
for explicit member specializations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175827 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Attempt to clean up tests for non-X86 platforms.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175652 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Modify the tests to use attribute group references instead of listing theBill Wendling
function attributes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175606 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-20Add a new 'type_visibility' attribute to allow users toJohn McCall
control the visibility of a type for the purposes of RTTI and template argument restrictions independently of how visibility propagates to its non-type member declarations. Also fix r175326 to not ignore template argument visibility on a template explicit instantiation when a member has an explicit attribute but the instantiation does not. The type_visibility work is rdar://11880378 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175587 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-19Add the missing 'static' keyword to the testTimur Iskhodzhanov
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175502 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-19Add support for -fvisibility-ms-compat.John McCall
We treat this as an alternative to -fvisibility=<?> which changes the default value visibility to "hidden" and the default type visibility to "default". Expose a -cc1 option for changing the default type visibility, repurposing -fvisibility as the default value visibility option (also setting type visibility from it in the absence of a specific option). rdar://13079314 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175480 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-17Remove block names from test case to unbreak release builds.Lang Hames
Thanks Chandler. :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175392 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-17Re-apply r174919 - smarter copy/move assignment/construction, with fixes forLang Hames
bitfield related issues. The original commit broke Takumi's builder. The bug was caused by bitfield sizes being determined by their underlying type, rather than the field info. A similar issue with bitfield alignments showed up on closer testing. Both have been fixed in this patch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175389 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-16Emit vtables for an extern template class as available_externally, not asRichard Smith
linkonce_odr. Emit construction vtables as internal in this case, since the ABI does not guarantee that they will be availble externally. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175330 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-16Rework the visibility computation algorithm in preparationJohn McCall
for distinguishing type vs. value visibility. The changes to the visibility of explicit specializations are intentional. The change to the "ugly" test case is a consequence of a sensible implementation, and I am happy to argue that this is better behavior. Other changes may or may not be intended; it is quite difficult to divine intent from some of the code I altered. I've left behind a comment which I hope explains the philosophy behind visibility computation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175326 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-15Add the 'target-cpu' and 'target-features' attributes to functions.Bill Wendling
The back-end will use these values to reconfigure code generation for different features. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175308 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-15Abstract out emitting the vdtor calls and do it properly when using -cxx-abi ↵Timur Iskhodzhanov
microsoft; also fix vdtor calls for the ARM ABI git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175271 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-15Update testcases due to Attribute sorting improvements.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175253 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-14Mangle extern "C" functions whose names are not simple identifiers.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175166 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-14Partially revert r175117 so that we don't break assumptions about howRafael Espindola
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
2013-02-14Add a getLanguageLinkage method to VarDecls and FunctionDecls. Use it to fixRafael Espindola
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
2013-02-13ubsan: Add checking for invalid downcasts. Per [expr.static.cast]p2 and p11,Richard Smith
base-to-derived casts have undefined behavior if the object is not actually an instance of the derived type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175078 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-13... and now fix the +Asserts buildTimur Iskhodzhanov
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175054 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-13Fix the microsoft-abi-structors test expectations to match both Release and ↵Timur Iskhodzhanov
Release+Asserts builds git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175053 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-13Emit virtual/deleting destructors properly with -cxx-abi microsoft, PR15058Timur Iskhodzhanov
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175045 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-12Rename -constructors test to just -structors as in fact it tests dtors too. ↵Timur Iskhodzhanov
Also, fix a minor typo in the test. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174966 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-12Call __cxa_begin_catch with the current exception beforeJohn McCall
calling std::terminate(). rdar://11904428 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174940 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-12Backing out r174919 while I investigate a self-host bug on Takumi's builder.Lang Hames
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174925 91177308-0d34-0410-b5e6-96231b3b80d8