Devang Patel
ffa30ab216
Finalize debug info after all deferred globals are emitted.
...
llvm-svn: 137750
2011-08-16 20:58:22 +00:00
Devang Patel
e24d324762
Use new DIBuilder::finalize() at the end to wrap up debug info encoding for a translation unit.
...
llvm-svn: 137674
2011-08-15 23:01:55 +00:00
Douglas Gregor
636e200675
Move the creation of the record type for the state of Objective-C fast
...
enumerations from the ASTContext into CodeGen, so that we don't need
to serialize it to AST files. This appears to be the last of the
low-hanging fruit for SpecialTypes.
llvm-svn: 137124
2011-08-09 17:23:49 +00:00
Douglas Gregor
abf4e0dfcd
Move the construction of the RecordDecl representing the runtime
...
layout of a constant NSString from the ASTContext over to CodeGen,
since this is solely CodeGen's responsibility. Eliminates one of the
unnecessary "special" types that we serialize.
llvm-svn: 137121
2011-08-09 15:54:21 +00:00
John McCall
9b24df470d
Emit wide string literals with the appropriate alignment.
...
Patch by Craig Topper and Sundeep!
llvm-svn: 136856
2011-08-04 01:03:22 +00:00
John McCall
625ed88f07
When rewriting a call to a K&R function to lead to a well-prototyped
...
function, be sure to drop parameter attributes when dropping their
associated arguments. Patch by Aaron Landwehr!
llvm-svn: 136753
2011-08-03 00:43:55 +00:00
Peter Collingbourne
e1d209911f
CodeGen: rename CodeGenModule::Runtime to ObjCRuntime
...
llvm-svn: 136254
2011-07-27 20:29:46 +00:00
Douglas Gregor
fb65e592e0
Add support for C++0x unicode string and character literals, from Craig Topper!
...
llvm-svn: 136210
2011-07-27 05:40:30 +00:00
Chandler Carruth
d48db2115a
Rename getInstantiationLineNumber to getExpansionLineNumber in both
...
SourceManager and FullSourceLoc.
llvm-svn: 135969
2011-07-25 21:09:52 +00:00
Chris Lattner
84037d3d0a
fix PR10415, tidying up IR representation of module level inline asm
...
to avoid extraneous \n's.
llvm-svn: 135862
2011-07-23 20:04:25 +00:00
Chris Lattner
54b1677d23
Move ArrayRef to LLVM.h and eliminate now-redundant qualifiers, patch by Jon Mulder!
...
llvm-svn: 135855
2011-07-23 17:14:25 +00:00
Chris Lattner
0e62c1cc0b
remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports
...
them into the clang namespace.
llvm-svn: 135852
2011-07-23 10:55:15 +00:00
Jordy Rose
a91768e569
Add a const overload for ObjCInterfaceDecl::all_declared_ivar_begin.
...
This was previously not-const only because it has to lazily construct a chain
of ivars the first time it is called (and after the chain is invalidated).
In practice, all the clients were just const_casting their const Decls;
all those now-unnecessary const_casts have been removed.
llvm-svn: 135741
2011-07-22 02:08:32 +00:00
Jay Foad
ed8db7d9df
Convert ConstantExpr::getGetElementPtr and
...
ConstantExpr::getInBoundsGetElementPtr to use ArrayRef.
llvm-svn: 135673
2011-07-21 14:31:17 +00:00
Nick Lewycky
26da4ddfa6
In C99, emit an inline function when encountering an extern redeclaration.
...
Fixes PR10233!
llvm-svn: 135377
2011-07-18 05:26:13 +00:00
Chris Lattner
2192fe50da
de-constify llvm::Type, patch by David Blaikie!
...
llvm-svn: 135370
2011-07-18 04:24:23 +00:00
Jay Foad
5bd375a6cc
Convert CallInst and InvokeInst APIs to use ArrayRef.
...
llvm-svn: 135265
2011-07-15 08:37:34 +00:00
Benjamin Kramer
8d375cef55
Change intrinsic getter to take an ArrayRef, now that the underlying function in LLVM does.
...
llvm-svn: 135155
2011-07-14 17:45:50 +00:00
Jay Foad
b804a2b751
Second attempt at de-constifying LLVM Types in FunctionType::get(),
...
StructType::get() and TargetData::getIntPtrType().
llvm-svn: 134982
2011-07-12 14:06:48 +00:00
Bill Wendling
7475113d74
Revert r134888 (and related patches in other trees). It was causing
...
an assert on Darwin llvm-gcc builds.
Assertion failed: (castIsValid(op, S, Ty) && "Invalid cast!"), function Create, file /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.llvm-gcc-i386-darwin9-RA/llvm.src/lib/VMCore/Instructions.cpp, line 2067.
etc.
http://smooshlab.apple.com:8013/builders/llvm-gcc-i386-darwin9-RA/builds/2354
--- Reverse-merging r134888 into '.':
U lib/CodeGen/CodeGenModule.cpp
llvm-svn: 134950
2011-07-12 01:16:47 +00:00
Jay Foad
56cc1530ee
De-constify Types in FunctionType::get().
...
llvm-svn: 134888
2011-07-11 07:56:41 +00:00
Chris Lattner
a5f58b05e8
clang side to match the LLVM IR type system rewrite patch.
...
llvm-svn: 134831
2011-07-09 17:41:47 +00:00
Cameron Zwarich
be652e6a24
r134634 causes a failure on MultiSource/Benchmarks/Olden/bh with TEST=nightly,
...
so roll it out.
llvm-svn: 134638
2011-07-07 21:03:28 +00:00
Nick Lewycky
d755e6ac48
A redeclaration of an inline method in C99 mode should trigger emission of that
...
function. Fixes PR10233!
llvm-svn: 134634
2011-07-07 20:25:10 +00:00
John McCall
23c29fea92
Change the IR-generation of VLAs so that we capture bounds,
...
not sizes; so that we use well-typed allocas; and so that we
properly recurse through the full set of variably-modified types.
llvm-svn: 133827
2011-06-24 21:55:10 +00:00
Daniel Dunbar
0de2faae4d
IRgen: Add CGOptions to CGTypes.
...
llvm-svn: 133530
2011-06-21 18:54:39 +00:00
Fariborz Jahanian
ab578bf355
llvm-gcc treats a tentative definition with a previous
...
(or follow up) extern declaration with weak_import as
an actual definition. make clang follows this behavior.
// rdar://9538608
llvm-gcc treats an extern declaration with weak_import
llvm-svn: 133450
2011-06-20 17:50:03 +00:00
Chris Lattner
e64d7ba153
Update to match mainline ConstantStruct::get API change. Also, use
...
ConvertType on InitListExprs as they are being converted. This is
needed for a forthcoming patch, and improves the IR generated anyway
(see additional type names in testcases).
This patch also converts a bunch of std::vector's in CGObjCMac to use
C arrays. There are a ton more that should be converted as well.
llvm-svn: 133413
2011-06-20 04:01:35 +00:00
Chris Lattner
845511fe1c
update for api change.
...
llvm-svn: 133365
2011-06-18 22:49:11 +00:00
Fariborz Jahanian
8feee2d169
Move computation of __private_extern__ visibilty to
...
getLVForNamespaceScopeDecl(). // rdar://9609649
llvm-svn: 133182
2011-06-16 20:14:50 +00:00
Fariborz Jahanian
a27070db0c
Set the visibility to 'hidden' when previous
...
declaration of global var is __private_extern__.
// rdar://9609649
llvm-svn: 133157
2011-06-16 14:49:42 +00:00
John McCall
31168b077c
Automatic Reference Counting.
...
Language-design credit goes to a lot of people, but I particularly want
to single out Blaine Garst and Patrick Beard for their contributions.
Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself,
in no particular order.
llvm-svn: 133103
2011-06-15 23:02:42 +00:00
Eli Friedman
300f55dcad
PR10120: Make CodeGenModule::getVTableLinkage use NamedDecl::getLinkage to determine whether the vtable should be externally visible, instead of a rough approximation of it which messes up with templates.
...
While I'm here, zap the other user of isInAnonymousNamespace outside of Decl.cpp.
llvm-svn: 132861
2011-06-10 21:53:06 +00:00
Douglas Gregor
0aa91e0a66
When inferring the result type of a block based on a return statement
...
with a type-dependent expression, infer the placeholder type
'Context.DependentTy' to indicate that this is just a
placeholder. Fixes PR9982 / <rdar://problem/9486685>.
llvm-svn: 132657
2011-06-05 05:04:23 +00:00
Eli Friedman
6ffb623a52
Match llvm-gcc's string literals alignment by forcing alignment on string literals to 1. This can significantly impact the size of the string data, and as far as I know, the alignment doesn't help performance. rdar://9078969 .
...
llvm-svn: 132223
2011-05-27 22:13:20 +00:00
Rafael Espindola
c1ee12c952
Update for llvm api change.
...
llvm-svn: 132034
2011-05-25 03:44:55 +00:00
Fariborz Jahanian
ccdfa39005
Code cleanup of my last patch.
...
llvm-svn: 131499
2011-05-17 22:46:11 +00:00
Fariborz Jahanian
7bd3d1c49b
Patch to fix IR-gen crash generating structure ABI which implements
...
user specified string class via -fconstant-string-class option.
pr9914.
llvm-svn: 131496
2011-05-17 22:21:16 +00:00
John McCall
9dc0db2192
Use arrays and SmallVectors instead of std::vectors when building function
...
types. Also, cache a translation of 'void' in CGM and provide a ptrdiff_t
alias. No functionality change.
llvm-svn: 131373
2011-05-15 01:53:33 +00:00
Joerg Sonnenberger
be7850dd8a
Simplify
...
llvm-svn: 131321
2011-05-13 22:58:37 +00:00
Joerg Sonnenberger
caf8ffd8e3
Bug 8765: Honor assembler labels for builtins. Ensure that the label is
...
mangled to avoid doing it twice for platforms that use prefixes like
Darwin.
llvm-svn: 131311
2011-05-13 21:12:10 +00:00
Fariborz Jahanian
a52b1f72ef
Produce UTF-8 strings with -fconstant-string-class
...
-fno-constant-cfstrings. Patch by Jonathan Schleifer.
llvm-svn: 131298
2011-05-13 18:13:10 +00:00
Douglas Gregor
61226d3fcf
When determining whether we can make a declaration into a global
...
constant, also consider whether it's a class type that has any mutable
fields. If so, it can't be a global constant.
llvm-svn: 131276
2011-05-13 01:05:07 +00:00
Douglas Gregor
2d1c055eba
In C++, allow us to emit a global as 'constant' even if it has class
...
type, so long as it is known to have a constant initializer and the
class type is a POD class. Fixes <rdar://problem/9306265>.
llvm-svn: 131060
2011-05-07 22:06:45 +00:00
Alexis Hunt
4a8ea1092a
Modify some deleted function methods to better reflect reality:
...
- New isDefined() function checks for deletedness
- isThisDeclarationADefinition checks for deletedness
- New doesThisDeclarationHaveABody() does what
isThisDeclarationADefinition() used to do
- The IsDeleted bit is not propagated across redeclarations
- isDeleted() now checks the canoncial declaration
- New isDeletedAsWritten() does what it says on the tin.
- isUserProvided() now correct (thanks Richard!)
This fixes the bug that we weren't catching
void foo() = delete;
void foo() {}
as being a redefinition.
llvm-svn: 131013
2011-05-06 20:44:56 +00:00
Eli Friedman
49a94b1c7c
Add an implementation of thunks for varargs methods. The implementation is a bit messy, but it is correct as long as the method in question doesn't use indirect gotos. A couple of possible alternative implementations are outlined in FIXME's in this patch. rdar://problem/8077308 .
...
llvm-svn: 130993
2011-05-06 17:27:27 +00:00
Richard Smith
3f1b5d077b
Implement support for C++0x alias templates.
...
llvm-svn: 130953
2011-05-05 21:57:07 +00:00
Nick Lewycky
85c011ddc4
Preserve the full name of the file, so that '-c -o foo.pic.o' produces
...
foo.pic.gcno instead of foo.gcno.
llvm-svn: 130899
2011-05-05 00:08:20 +00:00
Nick Lewycky
480cb9918d
Record where the GCOV data files should be placed.
...
llvm-svn: 130866
2011-05-04 20:46:58 +00:00
Francois Pichet
1c229c0472
Add -fdelayed-template-parsing option. Using this option all templated function definitions are parsed at the end of the translation unit only if it is required by an actual instantiation. As such all the symbols of the TU are available during name lookup.
...
Using this flag is necessary for compatibility with Microsoft template code.
This also provides some parsing speed improvement.
llvm-svn: 130022
2011-04-22 22:18:13 +00:00