aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGenCXX/global-init.cpp
AgeCommit message (Collapse)Author
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-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-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
2012-08-07Update documentation of HasSideEffects to match its callers' expectations, andRichard Smith
update implementation to match. An elidable, non-trivial constructor call is a side-effect under this definition, but wasn't under the old one, because we are not required to evaluate it even though it may have an effect. Also rationalize checking for volatile reads: just look for lvalue-to-rvalue conversions on volatile glvalues, and ignore whether a DeclRefExpr etc is for a volatile variable. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161393 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-07Teach Expr::HasSideEffects about all the Expr types, and fix a bug where itRichard Smith
was mistakenly classifying dynamic_casts which might throw as having no side effects. Switch it from a visitor to a switch, so it is kept up-to-date as future Expr nodes are added. Move it from ExprConstant.cpp to Expr.cpp, since it's not really related to constant expression evaluation. Since we use HasSideEffect to determine whether to emit an unused global with internal linkage, this has the effect of suppressing emission of globals in some cases. I've left many of the Objective-C cases conservatively assuming that the expression has side-effects. I'll leave it to someone with better knowledge of Objective-C than mine to improve them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161388 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-06Use atexit when __cxa_atexit isn't available instead of adding aJohn McCall
global destructor entry. For some reason this isn't enabled for apple-kexts; it'd be good to have documentation for that. Based on a patch by Nakamura Takumi! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154191 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-09clang side to match the LLVM IR type system rewrite patch.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134831 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01Emit guard variables for any weak global that has a run-timeDouglas Gregor
initializer. Previously, we only used guard variables for weak static data members. Fixes <rdar://problem/9692249>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134266 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-17When laying out bases in, always try the "base subobject" LLVM type. If itAnders Carlsson
turns out that a field or base needs to be laid out in the tail padding of the base, CGRecordLayoutBuilder::ResizeLastBaseFieldIfNecessary will convert it to an array of i8. I've audited the new test results to make sure that they are still valid. I've also verified that we pass a self-host with this change. This (finally) fixes PR5589! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129673 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-12Template static data members can have weak_odr linkage, not justJohn McCall
weak linkage. Also, fix a problem where global weak variables with non-trivial initializers were getting guard variables, or at least were checking for them and then crashing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129342 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-12Whoops.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129341 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-12Ignore indirect field declarations. Fixes PR9570.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129337 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-18Add unnamed_addr in CreateRuntimeVariable.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123773 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-31Teach the constant expr evaluator about derived-to-base casts when no ↵Anders Carlsson
virtual bases are involved. Fixes PR5974. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117868 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-12Test for rdar://problem/8073696.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110907 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-03Do a very simple pass over every function we emit to infer whether we canJohn McCall
mark it nounwind based on whether it contains any non-nounwind calls. <rdar://problem/8087431> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110163 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-30Emit global destructors even if the destroyed object has no initializers or hasJohn McCall
an initializer requiring temporary object disposal. Fixes rdar:://problem/8246444. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109849 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-15When deferring the emission of declarations with initializers in C++, rememberJohn McCall
the order they appeared in the translation unit. If they get emitted, put them in their proper order. Fixes rdar://problem/7458115 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108477 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06When creating functions to run global initializers and destructors, mark themJohn McCall
as nounwind in -fno-exceptions. Fixes rdar://problem/8090834. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107639 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-09Fix test.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105668 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-20C++: Add support for -fno-use-cxa-atexit.Daniel Dunbar
- So much typing, so little gain... Also, rename the __cxx_global_initialization function just to match llvm-gcc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99039 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-05Fix the bug that was breaking self-host, and re-land the static ctor fixes.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95400 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-05Revert r95363 and r95375, which broke self-host.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95389 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-05If a global initializer has a non-trivial destructor it can't be emitted as ↵Anders Carlsson
a constant (even if it has a trivial constructor). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95363 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-02Codegen CXXConstructExprs with trivial constructors as constants.John McCall
Eliminates a lot of spurious global initializers, fixing PR6205. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95077 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-15Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'.Daniel Dunbar
- This is designed to make it obvious that %clang_cc1 is a "test variable" which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it can be useful to redefine what gets run as 'clang -cc1' (for example, to set a default target). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91446 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-08If a global initializer has a non-trivial constructor or destructor, we ↵Anders Carlsson
never want to defer generation of it, even if it is declared static. With this change we're finally able to compile and run the (infamous) #include <string> #include <iostream> int main(int argc, char **argv) { std::cout << "Hello, World" << std::endl; } $ clang hello.cpp -lstdc++ -o hello $ ./hello Hello, World git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83559 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-08Port test over to FileCheck.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83558 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-12Use the inbounds variant of getelementptr for common pointer arithmetic.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78756 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-08Add support for global initializers.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78515 91177308-0d34-0410-b5e6-96231b3b80d8