aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
AgeCommit message (Collapse)Author
2010-05-12If given location is invalid then use current location.Devang Patel
This fixes recent regressions reported by gdb testsuite. Tighter verification of debug info generated by FE found these regressions. Refactor code to extract line number and column number from SourceLocation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103678 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-12Use end location of DeclStmt to mark stop point. Devang Patel
This is meaningful for blocks. This patch fixes bunch of test failures in gdb testsuite. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103533 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-11Merged Elaborated and QualifiedName types.Abramo Bagnara
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103517 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-11IRgen/i386/C++: Fix isSingleElementStruct computation for C++ record decls.Daniel Dunbar
- Fixes PR7098. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103514 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-11It's bad form to create VarDecl's without DeclContextsDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103484 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-11Minor refactoring of my last patch.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103475 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-10Initialize Column.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103448 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-10Objective-C++ Code gen. Handle code gen. for propertyFariborz Jahanian
reference dot-syntax notation in a varierty of cases. Fixes radar 7964490. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103440 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-10If variable location is invalid then use current location.Devang Patel
This fixes radar 7959934. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103408 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-09Tweaked selector mangling again (GNU runtime).David Chisnall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103368 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-08Fixed linkage problem from last commit (GNU runtime).David Chisnall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103355 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-08Tweaked selector generation (GNU runtime). Removed the use of GlobalAliases ↵David Chisnall
in the generated bitcode. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103353 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-07If there is not any debug info for type then do not emit debug info for this ↵Devang Patel
variable. A recent change to tightly verify debug info prepared by FE caught this. This fixes unittest build. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103320 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-07Minor mod. to my last patch.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103280 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-07Fixes a Code gen crash trying to use a dot-syntax forFariborz Jahanian
a property of a c++ class object (radar 7957369). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103279 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-07Avoid use of DIDescriptor::getNode(). Use overloaded operators instead.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103273 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Do not give implicitly-defined virtual members functionsDouglas Gregor
available_externally linkage, since they may not have been given a strong definition in another translation unit. Without this patch, the following test case fails to link with a GCC-compiled libstdc++: #include <sstream> int main() { std::basic_stringbuf<char> bs; } Fixes the last problem with the Boost.IO library. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103208 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Fix typo in comment; 80 col violationDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103204 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06The global variable for the VTT might not have external linkage; allowDouglas Gregor
us to find local variables, too. Fixes the last remaining Boost.Rational failure. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103203 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Code Gen support for Getter/Setter synthesis of Fariborz Jahanian
C++ object properties. (still radar 7468090). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103182 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06simplify EmitAggMemberInitializer a bit and make it work in 32-bit mode,Chris Lattner
fixing PR7063. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103171 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06add todos for isinf_sign and isnormal, which I don't intend to implementChris Lattner
in the near future. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103169 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06implement codegen support for __builtin_isfinite, part of PR6083Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103168 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06implement part of PR6083: codegen support for isinf. Like isnan,Chris Lattner
this is generating correct but suboptimal (extra extend to double) code for the float case. Will investigate next. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103166 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Clean up the {} and else placement. This fixes an ambiguous else as well asChandler Carruth
picking a more consistent pattern. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103142 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Pass the globaldecl into GetOrCreateLLVMFunction so that llvmChris Lattner
function attributes like byval get applied to the function definition. This fixes PR7058 and makes i386 llvm/clang bootstrap pass all the same tests as x86-64 bootstrap for me (the llvmc tests still fail in both). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103131 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05This patch deals with Sema Part of Setter/Getter synthesisFariborz Jahanian
of properties which are of C++ objects. Code Gen to follow (Radar 7468090). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103123 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05When we emit a non-constant initializer for a global variable ofDouglas Gregor
reference type, make sure that the initializer we build is the of the appropriate type for the *reference*, not for the thing that it refers to. Fixes PR7050. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103115 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05For thread-safe static initialization of local statics withDouglas Gregor
destructors, place the __cxa_atexit call after the __cxa_guard_release call, mimicking GCC/LLVM-GCC behavior. Noticed while debugging something related. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103088 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Reapplying patch to change StmtNodes.def to StmtNodes.td, this timeSean Hunt
with no whitespace. This will allow statements to be referred to in attribute TableGen files. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103087 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Revert r103072; I accidentally ended up deleting a bunch of trailingSean Hunt
whitespace which makes this patch unreadable. Will recommit without the whitespace. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103086 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Reimplement code generation for copying fields in theDouglas Gregor
implicitly-generated copy constructor. Previously, Sema would perform some checking and instantiation to determine which copy constructors, etc., would be called, then CodeGen would attempt to figure out which copy constructor to call... but would get it wrong, or poke at an uninstantiated default argument, or fail in other ways. The new scheme is similar to what we now do for the implicit copy-assignment operator, where Sema performs all of the semantic analysis and builds specific ASTs that look similar to the ASTs we'd get from explicitly writing the copy constructor, so that CodeGen need only do a direct translation. However, it's not quite that simple because one cannot explicit write elementwise copy-construction of an array. So, I've extended CXXBaseOrMemberInitializer to contain a list of indexing variables used to copy-construct the elements. For example, if we have: struct A { A(const A&); }; struct B { A array[2][3]; }; then we generate an implicit copy assignment operator for B that looks something like this: B::B(const B &other) : array[i0][i1](other.array[i0][i1]) { } CodeGen will loop over the invented variables i0 and i1 to visit all elements in the array, so that each element in the destination array will be copy-constructed from the corresponding element in the source array. Of course, if we're dealing with arrays of scalars or class types with trivial copy-assignment operators, we just generate a memcpy rather than a loop. Fixes PR6928, PR5989, and PR6887. Boost.Regex now compiles and passes all of its regression tests. Conspicuously missing from this patch is handling for the exceptional case, where we need to destruct those objects that we have constructed. I'll address that case separately. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103079 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Use a more appropriate LLVM type for the vtable pointer.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103078 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Unbreak CMake build.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103077 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Change StmtNodes.def to StmtNodes.td in anticipation of a rewrite of attributesSean Hunt
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103072 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-04Emit the globals, metadata, etc. associated with static variables even whenJohn McCall
they're unreachable. This matters because (if they're POD, or if this is C) the scope containing the variable might be reachable even if the variable isn't. Fixes PR7044. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103052 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-04Fixes a code gen. crash when ivar object has trivial constructor.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103028 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-04When instantiating a function that was declared via a typedef, e.g.,Douglas Gregor
typedef int functype(int, int); functype func; also instantiate the synthesized function parameters for the resulting function declaration. With this change, Boost.Wave builds and passes all of its regression tests. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103025 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-04Fixes a code gen crash when block is a reference type, etc.Fariborz Jahanian
(radar 7495203). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103022 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-04When inheriting a default argument expression, inherit the full expression,John McCall
not just the inner expression. This is important if the expression has any temporaries. Fixes PR 7028. Basically a symptom of really tragic method names. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102998 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-04Fixes a Code Gen. Crash when calling destructor on a __blockFariborz Jahanian
variabe. Blocks and their construction/destruction is wip though. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102985 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-03Just bail out immediately when emitting an unreachable function-local staticJohn McCall
variable. Surprisingly, this does seem to be the right way to solve this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102961 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-03If we're generating code to create a pointer-to-member functionDouglas Gregor
aggregate and the result of the aggregate is unused, bail out early. Fixes PR7027. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102942 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-03When computing the address of a virtual member function pointer, use the ↵Anders Carlsson
pointer width instead of hardcoding for 64-bit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102921 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-03Don't build an aggregate constructor loop when the constructor is trivial.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102912 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-03Don't copy or initialize empty classes. Fixes PR7012.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102891 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-03Store the entire base subobject in SubVTTIndices.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102890 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-03Remove OldGetAddressOfBaseClass - bye bye ambiguities.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102889 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-03Get rid of the last caller of OldGetAddressOfBaseClass.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102888 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-03More work towards getting rid of OldGetAddressOfBaseClass.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102887 91177308-0d34-0410-b5e6-96231b3b80d8