ef8225444452a1486bd721f3285301fe84643b00 |
|
21-Jul-2014 |
Stephen Hines <srhines@google.com> |
Update Clang for rebase to r212749. This also fixes a small issue with arm_neon.h not being generated always. Includes a cherry-pick of: r213450 - fixes mac-specific header issue r213126 - removes a default -Bsymbolic on Android Change-Id: I2a790a0f5d3b2aab11de596fc3a74e7cbc99081d
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
6bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89 |
|
29-May-2014 |
Stephen Hines <srhines@google.com> |
Update Clang for 3.5 rebase (r209713). Change-Id: I8c9133b0f8f776dc915f270b60f94962e771bc83
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
96e7813f08c6adf1d8657b0da86741b54e850fd7 |
|
04-Jul-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Add 'not' to commands that are expected to fail. This is at least good documentation, but also opens the possibility of using pipefail. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185652 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
b6e3808bfe385da8d90bb431e41e30d721d5433f |
|
08-Jun-2013 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Recursively lifetime-extend into array temporaries. These can get implicitly created through binding a reference-to-array to an initializer list. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183594 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
211c8ddb5b500ed84833751363d0cfe1115f4dd3 |
|
05-Jun-2013 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Model temporary lifetime-extension explicitly in the AST. Use this model to handle temporaries which have been lifetime-extended to static storage duration within constant expressions. This correctly handles nested lifetime extension (through reference members of aggregates in aggregate initializers) but non-constant-expression emission hasn't yet been updated to do the same. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183283 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
e67ca5803ac9e39cc31ed1ad9576e1626c8141eb |
|
02-Jun-2013 |
Richard Smith <richard-llvm@metafoo.co.uk> |
PR12848: When emitting a local variable declared 'constexpr', always initialize it with a store or a memcpy, not by emitting the initializer expression. This is not required for correctness, but more closely aligns with people's expectations, and is cheap (since we've already evaluated the initializer). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183082 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
5016a70c183a50845a0421802d161093dd0643f6 |
|
20-Oct-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
DR1472: A reference isn't odr-used if it has preceding initialization, initialized by a reference constant expression. Our odr-use modeling still needs work here: we don't yet implement the 'set of potential results of an expression' DR. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166361 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
8ae4ec28451a16a57718286da3e476fc2f495c3f |
|
07-Aug-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Teach Expr::HasSideEffects about all the Expr types, and fix a bug where it 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
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
de31aa7f0ef71f5c162372e319cbc03c0924f074 |
|
08-Jul-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
PR13290: Constant-evaluation support for CXXConstructExprs which construct a multidimensional array of class type. Also, preserve zero-initialization when evaluating an initializer list for an array, in case the initializers refer to later elements (which have preceding zero-initialization). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159904 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
f4bb8d06c4f1665f89a9e9ddd61f2a2d26904da0 |
|
05-Jul-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
PR13273: When performing list-initialization with an empty initializer list, actually perform value initialization rather than trying to fake it with a call to the default constructor. Fixes various bugs related to the previously-missing zero-initialization in this case. I've also moved this and the other list initialization 'special case' from TryConstructorInitialization into TryListInitialization where they belong. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159733 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
d079abfb5eefaf7da232e39a6564f561402cf4fe |
|
07-May-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
A union can have a constexpr defaulted default constructor, if it has an in-class initializer for one of its fields. Value-initialization of such a type should use the in-class initializer! The former was just a bug, the latter is a (reported) standard defect. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156274 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
fe587201feaebc69e6d18858bea85c77926b6ecf |
|
15-Apr-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
PR12226: don't generate wrong code if a braced string literal is used to initialize an array of unsigned char. Outside C++11 mode, this bug was benign, and just resulted in us emitting a constant which was double the required length, padded with 0s. In C++11, it resulted in us generating an array whose first element was something like i8 ptrtoint ([n x i8]* @str to i8). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154756 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
49149fe0d2be06ce1ceed1e9d2548a0b75a59c47 |
|
08-Apr-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Don't forget to evaluate the subexpression in a null pointer cast. If we're converting from std::nullptr_t, the subexpression might have side-effects. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154278 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
5fe61c6cb09a5a2d2ecddfb74f8b253d9d462165 |
|
30-Mar-2012 |
Eli Friedman <eli.friedman@gmail.com> |
ConstStructBuilder: fix offset math for base classes so it works correctly in general. Found by inspection. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153720 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
946e2726f91c17574d248f9c4b3eeea41e892a22 |
|
07-Mar-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Don't even try to directly emit the value of a DeclRefExpr if that declaration is not usable in a constant expression. ~2.5% speedup on 403.gcc / combine.c. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152193 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
a3ca41f0c2bd1c4a752df88b283332f3b757d21e |
|
03-Mar-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Reinstate r151879, r151880, reverted in r151922, along with a bugfix for scalar emission of DeclRefExprs to const bools: emit scalar bools as i1, not as i8. In addition to the extra unit testing, this has successfully bootstrapped. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151955 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
c169e08f3ad678df4ffb87cbbe5096208f6bf40a |
|
02-Mar-2012 |
Daniel Dunbar <daniel@zuster.org> |
Revert r151879, r151880, "PR12145: Avoid emitting loads of constexpr variables in contexts where there" and "Fix buildbot: make this test less dependent on the value names in the produced IR." They broke bootstrap. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151922 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
0524171a57e6f9f6ee79c02ed4e20c5914d8b2db |
|
02-Mar-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Fix buildbot: make this test less dependent on the value names in the produced IR. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151880 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
a3cac5b76a5243d8fca812d3a276950b0cfc56b6 |
|
02-Mar-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
PR12145: Avoid emitting loads of constexpr variables in contexts where there is no odr-use of the variable. Go slightly beyond what the standard requires for variables of reference type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151879 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
c22adbd40ac2fc445e41fb664777179aa5c522e3 |
|
23-Feb-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
PR12067: When emitting an evaluated constant structure in C++11 mode, don't forget the vptrs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151245 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
e15c71236252c21a77c8a406246053e1cbb63ffa |
|
17-Feb-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
When performing IRGen on a global, emit it as a constant if: 1) It has a const-qualified type, and 2) It has no mutable members, and 3) It has no dynamic initialization, and 4) It has trivial destruction. Remove the unnecessary requirement that the type be POD. This allows us to mark all constexpr objects with no mutable members as 'constant'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150792 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
f3908f2ae111b1b12ade2524dda71c669ed6f121 |
|
17-Feb-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Make sure all remaining parts of the constant evaluator are aware that an array can be represented by an LValue, and use that to simplify the code a little. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150789 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
ce582fe2a7aad8b14b3636ad9cac0a3b8bbb219b |
|
17-Feb-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
PR12012: Fix a regression in r150419 where we would try (and fail) to zero-initialize class types with virtual bases when constant-evaluating an initializer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150770 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
7ca4850a3e3530fa6c93b64b740446e32c97f992 |
|
13-Feb-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Deal with a horrible C++11 special case. If a non-literal type has a constexpr constructor, and that constructor is used to initialize an object of static storage duration such that all members and bases are initialized by constant expressions, constant initialization is performed. In this case, the object can still have a non-trivial destructor, and if it does, we must emit a dynamic initializer which performs no initialization and instead simply registers that destructor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150419 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
745f5147e065900267c85a5568785a1991d4838f |
|
27-Jan-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
constexpr: Implement the [dcl.constexpr]p5 check for whether a constexpr function definition can produce a constant expression. This also provides the last few checks for [dcl.constexpr]p3 and [dcl.constexpr]p4. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149108 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
7a776bec0232a5bf63b8d655194c18a201e5ee47 |
|
26-Jan-2012 |
Chris Lattner <sabre@nondot.org> |
fix to go along with an llvm change: VMCore now returns an UndefValue when asking for a ConstantStruct with all undef elements. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149025 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
2d6a5670465cb3f1d811695a9f23e372508240d2 |
|
14-Jan-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
constexpr irgen: Add irgen support for APValue::Struct, APValue::Union, APValue::Array and APValue::MemberPointer. All APValue values can now be emitted as constants. Add new CGCXXABI entry point for emitting an APValue MemberPointer. The other entrypoints dealing with constant member pointers are no longer necessary and will be removed in a later change. Switch codegen from using EvaluateAsRValue/EvaluateAsLValue to VarDecl::evaluateValue. This performs caching and deals with the nasty cases in C++11 where a non-const object's initializer can refer indirectly to previously-initialized fields within the same object. Building the intermediate APValue object incurs a measurable performance hit on pathological testcases with huge initializer lists, so we continue to build IR directly from the Expr nodes for array and record types outside of C++11. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148178 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|
5930a4c5224eea3b0558655f7f8c9ea027ef573e |
|
06-Jan-2012 |
Eli Friedman <eli.friedman@gmail.com> |
Address Richard's review comments on r147561 (Evaluate support for address-of-label differences). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147631 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/const-init-cxx11.cpp
|