summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/cxx1z-initializer-aggregate.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Revert r332847; it caused us to miscompile certain forms of reference ↵Richard Smith2018-05-211-2/+2
| | | | | | initialization. llvm-svn: 332886
* [CodeGen] Recognize more cases of zero initializationSerge Pavlov2018-05-211-2/+2
| | | | | | | | | | | | | | | | | | | | | If a variable has an initializer, codegen tries to build its value. If the variable is large in size, building its value requires substantial resources. It causes strange behavior from user viewpoint: compilation of huge zero initialized arrays like: char data_1[2147483648u] = { 0 }; consumes enormous amount of time and memory. With this change codegen tries to determine if variable initializer is equivalent to zero initializer. In this case variable value is not constructed. This change fixes PR18978. Differential Revision: https://reviews.llvm.org/D46241 llvm-svn: 332847
* When rebuilding an InitListExpr, don't give it a type.Richard Smith2018-01-121-0/+18
| | | | | | | | InitListExprs without types (well, with type 'void') represent not-yet-analyzed initializer lists; InitListExpr with types fool Sema into thinking they don't need further analysis in some cases (particularly C++17 copy omission). llvm-svn: 322414
* P0017R1: In C++1z, an aggregate class can have (public non-virtual) base ↵Richard Smith2016-03-081-0/+114
classes; these are initialized as if they were data members. llvm-svn: 262963
OpenPOWER on IntegriCloud