aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGDecl.cpp
AgeCommit message (Collapse)Author
2010-04-02Reapply patch for adding support for address spaces and added a isVolatile ↵Mon P Wang
field to memcpy, memmove, and memset. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100193 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-30Revert Mon Ping's 99930 due to broken llvm-gcc buildbots.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99949 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-30Added support for address spaces and added a isVolatile field to memcpy, ↵Mon P Wang
memmove, and memset git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99930 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19Change CodeGenModule to rely on the Module's symbol table instead ofJohn McCall
shadowing it in the GlobalDeclMap. Eliminates the string-uniquing requirement for mangled names, which should help C++ codegen times a little. Forces us to do string lookups instead of pointer lookups, which might hurt codegen times a little across the board. We'll see how it plays out. Removing the string-uniquing requirement implicitly fixes any bugs like PR6635 which arose from the fact that we had multiple uniquing tables for different kinds of identifiers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99012 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-12Fix a rare corner case bug which exposed a serious block API generationFariborz Jahanian
when initialized variable is a byref block variable and is referenced recursively in the initializer (you guessed it, it is block implementation of fibonacci number). Fix, on the other hand is trvial, by generating the API for byref variable before API for its initializer. We will have this test added to our internal test suite as a clang-style test is not possible due to very convoluted IR sequence. Fixes radar 7745514. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98393 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-10set alignment on static locals properly, patch by Arnaud de Grandmaison!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98204 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-09IRgen: Add CreateMemTemp, for creating an temporary memory object for a ↵Daniel Dunbar
particular type, and flood fill. - CreateMemTemp sets the alignment on the alloca correctly, which fixes a great many places in IRgen where we were doing the wrong thing. - This fixes many many more places than the test case, but my feeling is we need to audit alignment systematically so I'm not inclined to try hard to test the individual fixes in this patch. If this bothers you, patches welcome! PR6240. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95648 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-08Reapply r95393, without the change to CGExpr. I was wrong in assuming that theDaniel Dunbar
element type always matched the converted LLVM type for ExprType. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95596 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-07Use the right linkage for static variables inside C++ inline functions.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95512 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-05Revert r95393, which broke Clang's self-host.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95430 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-05IRgen: Use hasAggregateLLVMType instead of isSingleValueType() for cases thatDaniel Dunbar
need to deal with aggregates specially; this is consistent with the rest of IRgen. Also, simplify EmitParmDecl and don't worry about using Decl::getNameAsString. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95393 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-03Revert the new reference binding code; I came up with a way simpler solution ↵Anders Carlsson
for the reference binding bug that is preventing self-hosting. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95223 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-31Start creating CXXBindReferenceExpr nodes when binding complex types to ↵Anders Carlsson
references. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94964 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-27Change the return type of ASTContext::getDeclAlignInBytes() to CharUnits and,Ken Dyck
now that the "InBytes" part of the name is implied by the return type, rename it to getDeclAlign(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94681 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-26Introduce CodeGenModule::GetTargetTypeStoreSize() to calculate the store sizeKen Dyck
of LLVM types in character units. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94542 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-26Make sure to always mark a global variable as not being constant if it has a ↵Anders Carlsson
C++ initializer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94504 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-11Roll out ASTContext::getTypeSizeInChars(), replacing instances ofKen Dyck
"ASTContext::getTypeSize() / 8". Replace [u]int64_t variables with CharUnits ones as appropriate. Also rename RawType, fromRaw(), and getRaw() in CharUnits to QuantityType, fromQuantity(), and getQuantity() for clarity. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93153 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-24Pass ReturnValueSlot to EmitCall. No functionality change yet.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92138 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-22Move the implementation of ASTContext::getTypeSizeInChars() to the .cpp file toKen Dyck
avoid #including CharUnits.h in ASTContext.h. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91903 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-18Change the return type of ASTContext::getTypeSizeInChars() from uint64_t to theKen Dyck
new opaque value type, CharUnits. This will help us avoid accidentally mixing quantities that are in bit and character units. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91689 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-18Rename getByteSize() and getTypeSizeInBytes() in ASTContext to getCharWidth()Ken Dyck
and getTypeSizeInChars() to reflect their basis in character type units, not that of a possibly independent architecture-specific byte. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91688 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-09Add cleanups for exceptional edges. WIP.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90940 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-08Use StringRef in CGDebugInfo::EmitFunctionStart.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90856 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-08Use a Twine to concatenate the name instead of going through std::string.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90854 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-05implement rdar://7346691 by codegen'ing struct/array initializersChris Lattner
to a memset or a memcpy from a global when possible. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90658 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-05simplify a condition and add a testcase.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90652 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Handle static_assert inside functions.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90461 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-02Add missing branch to exit. Seemingly obvious when I look at theMike Stump
code, but to track this down was laborious. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90356 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-29Don't pass false (default) for isVolatile parameter to CreateLoad.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90098 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-24Rename CleanupScope -> DelayedCleanupBlock. No functionality change.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89769 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-23Teach CodeGenFunction::EmitDecl to ignore Using and UsingShadow decls.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89633 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-18Trim whitespace.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89219 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12Move CompileOptions -> CodeGenOptions, and sink it into the CodeGen library.Chandler Carruth
This resolves the layering violation where CodeGen depended on Frontend. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86998 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-09Make sure that Type::getAs<ArrayType>() (or Type::getAs<subclass ofDouglas Gregor
ArrayType>()) does not instantiate. Update all callers that used this unsafe feature to use the appropriate ASTContext::getAs*ArrayType method. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86596 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04This patch extends CleanupScope to support destructionFariborz Jahanian
of array objects on block exit. Patch is by Anders Calrsson. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86032 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04Merge constant array and structures. This will create a global variables for ↵Tanya Lattner
arrays and structs that are constant and their initializer is constant. It is on by default but can be disable with the flag -fno-merge-all-constants. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85991 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03Refine volatile handling, specifically, we must have the canonicalMike Stump
type to look at the volatile specifier. I found these all from just hand auditing the code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85967 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-29Patch for destruction of array of objects on block exit.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85512 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-21Fix 80-col violation.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84719 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-16ignore 'using' directive in CodeGenFunction::EmitDecl(). this fixes PR5085Nuno Lopes
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84255 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13Simplify pointer creation with the new Type::getInt*Ptr methods.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83964 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-09Revert 83567.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83676 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-08Record location info before emiting alloca for arguments. This allows ↵Devang Patel
arguments to have proper location info. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83567 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-26Set alignment on static function level decls and VLAs. Fixes PR5060.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82868 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-22Improve debug info generation for __block variables.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82508 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-13Fix another byref bug. This should hopefully get QuickLookPlugins building ↵Anders Carlsson
successfully. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81681 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-12Add FIXME for alignments that won't be honored.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81620 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-12Add support for __block variables with alignment greater than __alignof(void *).Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81602 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-12For __block variables, cache the LLVM types as well as which LLVM field ↵Anders Carlsson
where the variable is stored. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81599 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-10GlobalDecl doesn't have an explicit constructor anymore.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81481 91177308-0d34-0410-b5e6-96231b3b80d8