Eli Friedman
c55efe4fb2
Make sure we don't inline functions marked with __attribute__((naked)). <rdar://problem/9973228>
...
llvm-svn: 138310
2011-08-22 23:55:33 +00:00
Argyrios Kyrtzidis
004df6e053
Mark objc methods that are implicitly declared for properties (not user-declared) as implicit.
...
This results in libclang ignoring such methods.
llvm-svn: 137852
2011-08-17 19:25:08 +00:00
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