summaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CGExprConstant.cpp
AgeCommit message (Collapse)Author
2011-05-02More rule enforcement of zero bitfields for ms_struct.Fariborz Jahanian
llvm-svn: 130696
2011-04-28ms_struct patch for initialization and field access irgen.Fariborz Jahanian
// rdar://8823265 - wip. llvm-svn: 130451
2011-04-21ForArgyrios Kyrtzidis
double data[20000000] = {0}; we would blow out the memory by creating 20M Exprs to fill out the initializer. To fix this, if the initializer list initializes an array with more elements than there are initializers in the list, have InitListExpr store a single 'ArrayFiller' expression that specifies an expression to be used for value initialization of the rest of the elements. Fixes rdar://9275920. llvm-svn: 129896
2011-04-15C1X: implement generic selectionsPeter Collingbourne
As an extension, generic selection support has been added for all supported languages. The syntax is the same as for C1X. llvm-svn: 129554
2011-04-12After some discussion with Doug, we decided that it made a lot more senseJohn McCall
for __unknown_anytype resolution to destructively modify the AST. So that's what it does now, which significantly simplifies some of the implementation. Normal member calls work pretty cleanly now, and I added support for propagating unknown-ness through &. llvm-svn: 129331
2011-04-11More __unknown_anytype work.John McCall
llvm-svn: 129269
2011-04-11Remove CK_DynamicToNull.Anders Carlsson
llvm-svn: 129265
2011-04-10As a first step towards fixing PR9641, add a CK_DynamicToNull cast kind whichAnders Carlsson
represents a dynamic cast where we know that the result is always null. For example: struct A { virtual ~A(); }; struct B final : A { }; struct C { }; bool f(B* b) { return dynamic_cast<C*>(b); } llvm-svn: 129256
2011-04-07Basic, untested implementation for an "unknown any" type requested by LLDB.John McCall
The idea is that you can create a VarDecl with an unknown type, or a FunctionDecl with an unknown return type, and it will still be valid to access that object as long as you explicitly cast it at every use. I'm still going back and forth about how I want to test this effectively, but I wanted to go ahead and provide a skeletal implementation for the LLDB folks' benefit and because it also improves some diagnostic goodness for placeholder expressions. llvm-svn: 129065
2011-03-27supported: AltiVec vector initialization with a single literal according to ↵Anton Yartsev
PIM section 2.5.1 - after initialization all elements have the value specified by the literal llvm-svn: 128375
2011-03-22Eliminate some literal '8's in FillInNullDataMemberPointers() by switchingKen Dyck
to CharUnits. No change in functionality intended. llvm-svn: 128047
2011-03-19Use CharUnits's new increment operator. No change in functionality intended.Ken Dyck
llvm-svn: 127938
2011-03-19Replace literal '8's with CharWidth in AppendBitField. No change inKen Dyck
functionality intended. llvm-svn: 127927
2011-03-18Add support for language-specific address spaces. On top of that,Peter Collingbourne
add support for the OpenCL __private, __local, __constant and __global address spaces, as well as the __read_only, _read_write and __write_only image access specifiers. Patch originally by ARM; language-specific address space support by myself. llvm-svn: 127915
2011-03-18Convert alignment values to CharUnits. No change in functionality intended.Ken Dyck
llvm-svn: 127848
2011-03-18Convert getSizeInBytes() to getSizeInChars(), which returns its result inKen Dyck
CharUnits. No change in functionality intended. llvm-svn: 127846
2011-03-18Convert variables to CharUnits in ConvertStructToPacked(). No change inKen Dyck
functionality intended. llvm-svn: 127844
2011-03-17Convert NextOffsetInBytes to CharUnits and rename to NextOffsetInChars. NoKen Dyck
change in functionality intended. llvm-svn: 127787
2011-03-17Politely inform GCC that we will never fall off the end of that switch.Matt Beaumont-Gay
llvm-svn: 127783
2011-03-15Reorganize the emission of (unfoldable) constant casts a bit, andJohn McCall
make sure that upcasts of member pointer types are covered as constants. Fixed rdar://problem/9130221 llvm-svn: 127702
2011-03-15Introduce a CharUnits FieldOffsetInChars variable in AppendField() toKen Dyck
replace some uses of FieldOffsetInBytes. The remaining uses of FieldOffsetInBytes will be replaced once NextFieldOffsetInBytes is converted to CharUnits. No change in functionality intended. llvm-svn: 127641
2011-03-12Use CharUnits for argument passed to AppendPadding() from AppendBitField().Ken Dyck
No change in functionality intended. llvm-svn: 127538
2011-03-11Change parameter to AppendPadding from bytes to CharUnits. No change inKen Dyck
functionality intended. llvm-svn: 127513
2011-03-11Convert the RecordSize parameter of AppendTailPadding() to CharUnits toKen Dyck
avoid converting to bits and back again. No change in functionality intended. llvm-svn: 127455
2011-03-02Only emit string initializers in-place if types match. Fixes PR9373.Benjamin Kramer
llvm-svn: 126883
2011-02-17improve support for big endian targets, fixing PR8171, patchChris Lattner
by Heikki Kultala! llvm-svn: 125784
2011-02-15Perform zero-initialization of virtual base classes when emitting John McCall
a zero constant for a complete class. rdar://problem/8424975 To make this happen, track the field indexes for virtual bases in the complete object. I'm curious whether we might be better off making CGRecordLayoutBuilder *much* more reliant on ASTRecordLayout; we're currently duplicating an awful lot of the ABI layout logic. llvm-svn: 125555
2011-02-15update for ConstantVector API change.Chris Lattner
llvm-svn: 125538
2011-02-14revert my ConstantVector patch, it seems to have made the llvm-gccChris Lattner
builders unhappy. llvm-svn: 125505
2011-02-14update for ConstantVector::get API change.Chris Lattner
llvm-svn: 125488
2011-02-11Add a helper function, ASTContext::toBits(), that converts sizes inKen Dyck
CharUnits to sizes in bits, and use it to tidy up the places where the conversion was done explicitly. llvm-svn: 125332
2011-02-09Convert RecordLayout::Size to CharUnits from bits. No changes toKen Dyck
functionality intended. llvm-svn: 125156
2011-02-03More capturing of 'this': implicit member expressions. Getting thatJohn McCall
right for anonymous struct/union members led to me discovering some seemingly broken code in that area of Sema, which I fixed, partly by changing the representation of member pointer constants so that IndirectFieldDecls aren't expanded. This led to assorted cleanups with member pointers in CodeGen, and while I was doing that I saw some random other things to clean up. llvm-svn: 124785
2010-12-07PR5207: Change APInt methods trunc(), sext(), zext(), sextOrTrunc() andJay Foad
zextOrTrunc(), and APSInt methods extend(), extOrTrunc() and new method trunc(), to be const and to return a new value instead of modifying the object in place. llvm-svn: 121121
2010-11-22Refactor the null-initialization for record types and make it handle bases ↵Anders Carlsson
that aren't i8 arrays. llvm-svn: 119980
2010-10-31Rename getBaseClassOffset to getBaseClassOffsetInBits and introduce a ↵Anders Carlsson
getBaseClassOffset which returns the offset in CharUnits. Do the same thing for getVBaseClassOffset. llvm-svn: 117881
2010-10-15Death to blocks, or at least the word "block" in one particular obnoxiouslyJohn McCall
ambiguous context. llvm-svn: 116567
2010-08-31Teach IR generation to return 'this' from constructors and destructorsJohn McCall
under the ARM ABI. llvm-svn: 112588
2010-08-25GCC didn't care for my attempt at API compatibility, so brute-force everythingJohn McCall
to the new constants. llvm-svn: 112047
2010-08-23Abstract out everything having to do with member pointers into the ABIJohn McCall
class; they should just be completely opaque throughout IR gen now, although I haven't really audited that. Fix a bug apparently inherited from gcc-4.2 where we failed to null-check member data pointers when performing derived-to-base or base-to-derived conversions on them. llvm-svn: 111789
2010-08-22Go back to asking CodeGenTypes whether a type is zero-initializable.John McCall
Make CGT defer to the ABI on all member pointer types. This requires giving CGT a handle to the ABI. It's way easier to make that work if we avoid lazily creating the ABI. Make it so. llvm-svn: 111786
2010-08-22Experiment with using first-class aggregates to represent member functionJohn McCall
pointers. I find the resulting code to be substantially cleaner, and it makes it very easy to use the same APIs for data member pointers (which I have conscientiously avoided here), and it avoids a plethora of potential inefficiencies due to excessive memory copying, but we'll have to see if it actually works. llvm-svn: 111776
2010-08-22Abstract out member-pointer creation. I'm really unhappy about the currentJohn McCall
duplication between the constant and non-constant paths in all of this. Implement ARM ABI semantics for member pointer constants and conversion. llvm-svn: 111772
2010-08-22Abstract more member-pointerness out.John McCall
llvm-svn: 111771
2010-08-22Detabify.Eli Friedman
llvm-svn: 111768
2010-08-21IRgen: Eliminate EmitPredefinedFunctionName(), it doesn't need to be ↵Daniel Dunbar
factored out. llvm-svn: 111715
2010-08-07Store inheritance paths after CastExprs instead of inside them.John McCall
This takes some trickery since CastExpr has subclasses (and indeed, is abstract). Also, smoosh the CastKind into the bitfield from Expr. Drops two words of storage from Expr in the common case of expressions which don't need inheritance paths. Avoids a separate allocation and another word of overhead in cases needing inheritance paths. Also has the advantage of not leaking memory, since destructors for AST nodes are never run. llvm-svn: 110507
2010-07-17Fix crash initializing a bit-field with a non-constant in a place where weEli Friedman
try to evaluate the initializer as a constant. llvm-svn: 108632
2010-07-05fix PR7564 a cast where the bitfield struct init codeChris Lattner
wasn't handling array padding elements right. llvm-svn: 107621
2010-07-05AppendBitField really can never fail, so return its return value. Chris Lattner
Everyone knows that no bugs are ever possible with bitfields. llvm-svn: 107620