Eli Friedman
7c54f66058
PR4308: Fix support for -m32/-m64 on Linux.
...
I'll look into cleaning this up a bit as a followup.
llvm-svn: 72794
2009-06-03 18:59:56 +00:00
Anders Carlsson
6d36343ed8
Store more information about live temporaries. No functionality change for now.
...
llvm-svn: 72793
2009-06-03 18:54:26 +00:00
Anders Carlsson
82aea737a7
Move code generation of C++ temporaries into a new file.
...
llvm-svn: 72792
2009-06-03 18:40:21 +00:00
Daniel Dunbar
0c48b64807
(llvm up) Switch to using StandardPasses.h
...
- One functionality change, the LoopIndexSplit pass is now reenabled (it was
disabled in r60089 but we forgot to reenable it).
llvm-svn: 72787
2009-06-03 18:01:18 +00:00
Fariborz Jahanian
b68215c4de
Place the GC attribute on the same relative pointer
...
position to make it consistant and to match gcc's behavior,
by placing it at the inner-most pointer.
llvm-svn: 72784
2009-06-03 17:15:17 +00:00
Daniel Dunbar
877b30f83c
Driver: Support -mllvm; this just forwards options to clang-cc.
...
llvm-svn: 72780
2009-06-03 16:16:27 +00:00
Duncan Sands
f4063513d0
Compile fix needed by the solaris system gcc.
...
llvm-svn: 72772
2009-06-03 14:28:20 +00:00
Eli Friedman
aef810900a
Minor cleanup for implicit int warnings.
...
llvm-svn: 72770
2009-06-03 12:22:01 +00:00
Eli Friedman
3d2c8fd3a6
Back out r72764; I should have looked more carefully before committing
...
this. The correct replacement for "Y" and "Yt" is "x".
llvm-svn: 72765
2009-06-03 10:41:42 +00:00
Eli Friedman
ffc8748faa
PR3678: Add support for "Yt" asm register constraint.
...
llvm-svn: 72764
2009-06-03 10:33:05 +00:00
Zhongxing Xu
b027cdfb6f
emit ORIGINAL_FILE_NAME record ID to blockinfo block.
...
llvm-svn: 72759
2009-06-03 09:23:28 +00:00
Argyrios Kyrtzidis
b1d51aa18a
Use "()" instead of "(void)" when pretty-printing a parameter-less function type for C++.
...
llvm-svn: 72747
2009-06-03 02:06:50 +00:00
Daniel Dunbar
4b665ebb01
Add clang-cc support for -disable-llvm-optzns.
...
- Avoids running any LLVM optimizations, even at -O2, etc., while still keeping
any language changes these optimizations imply.
llvm-svn: 72742
2009-06-02 22:07:45 +00:00
Fariborz Jahanian
991a2b1933
Diagnose misuse of __strong attribute in a redeclaration.
...
llvm-svn: 72737
2009-06-02 20:58:58 +00:00
Fariborz Jahanian
6ab4375f87
Issue diagnostics on __weak attribute mismatch.
...
Fixes an error recovery issue which caused a crash.
llvm-svn: 72733
2009-06-02 18:32:00 +00:00
Eli Friedman
cb9d07caeb
Add support for __builtin_unwind_init.
...
Also, committing an #if 0'ed __builtin_setjmp and __builtin_longjmp
implementation I've had sitting in my tree for a while. I haven't
enabled it because the LLVM backend support isn't complete yet.
llvm-svn: 72727
2009-06-02 09:37:50 +00:00
Eli Friedman
9baa191f31
PR4142: Add %m format string specifier.
...
llvm-svn: 72726
2009-06-02 08:36:19 +00:00
Eli Friedman
fd80b2af16
PR4288: Make -dD (dump macros with preprocessed source) play nicely with
...
# line directives.
llvm-svn: 72724
2009-06-02 07:55:39 +00:00
Eli Friedman
5aa28de4fe
Fix a silly typo in my previous objc_gc merging patch.
...
llvm-svn: 72723
2009-06-02 07:45:37 +00:00
Eli Friedman
f6bd15038c
If we recognize alloca, treat it as a builtin. This fixes uses of
...
alloca without declaring it.
llvm-svn: 72719
2009-06-02 07:10:30 +00:00
Eli Friedman
f83c258eae
Add aliases for a couple of SSE intrinsics. Patch by Ed Schouten.
...
llvm-svn: 72717
2009-06-02 05:55:48 +00:00
Eli Friedman
091a9ac014
Cleaned-up version of gc attribute type merging. I still don't like it
...
very much, but I have a feeling we're never going to have an
implementation that makes sense because of compatibility issues.
llvm-svn: 72715
2009-06-02 05:28:56 +00:00
Sanjiv Gupta
7c72007e2a
Add floating point details to PIC16 Target.
...
llvm-svn: 72713
2009-06-02 04:43:46 +00:00
Fariborz Jahanian
2d725b19da
This patch attempts to fix the merging of __strong/__weak attributes
...
in merge_types. It is incomplete. We probably want to issue
a warning if user attempts to change the attribute from __weak to
__strong or vice-vera. It also assumes that a __weak/__strong
attribute can not be specified with other (currently one) type
attriute.
llvm-svn: 72711
2009-06-02 01:40:22 +00:00
Daniel Dunbar
3acbe4ab58
Fix rare failure of .ver-svn creation, it has a dependency that the output
...
directory exist.
llvm-svn: 72704
2009-06-01 22:15:35 +00:00
Fariborz Jahanian
c6d9800564
A corner case of objc2 gc's write-barrier generation
...
for the Next runtime.
llvm-svn: 72703
2009-06-01 21:29:32 +00:00
Eli Friedman
e32c02114f
PR4289: Make sure "&func" has the right LLVM type when "func" is a
...
K&R-style definition.
llvm-svn: 72690
2009-06-01 10:04:20 +00:00
Eli Friedman
fcbf7d2baf
PR4287: allow a variadic prototype to make a subsequent K&R style
...
definition variadic. I'm not completely sure it's legal, but the
standard can be interpreted as making it legal, and gcc seems to think
it's legal, so I didn't add an extension warning.
llvm-svn: 72689
2009-06-01 09:24:59 +00:00
Eli Friedman
d8cec57b9d
PR4283: Don't truncate multibyte character constants in the
...
preprocessor.
llvm-svn: 72686
2009-06-01 05:25:02 +00:00
Eli Friedman
dcca6333c6
Disable type merging with gc attributes. This has a number of nasty
...
properties at the moment:
1. It allows stuff like "__strong id x; __weak id x;".
2. For constructs like "__strong id x; id x;", subsequent references to
x lose the objc_gc attribute.
3. This incorrectly allows merges involving the address_space attribute.
4. Constructs like "id x; /* some code using x */ __weak id x;" don't
apply the objc_gc attribute consistently to all uses of x.
The first three can probably be fixed relatively easily; the fourth
would be extremely difficult to fix.
llvm-svn: 72683
2009-06-01 01:22:52 +00:00
Zhongxing Xu
84a1af5206
Unify coding style.
...
llvm-svn: 72682
2009-06-01 00:50:23 +00:00
Zhongxing Xu
dccbf28dda
Use a reference to modify the DeclIDs map.
...
llvm-svn: 72681
2009-06-01 00:49:11 +00:00
Anders Carlsson
fa7c608ecc
Fix a thinko.
...
llvm-svn: 72679
2009-06-01 00:26:14 +00:00
Anders Carlsson
ca50119a31
Check for null correctly for new expressions.
...
llvm-svn: 72678
2009-06-01 00:05:16 +00:00
Anders Carlsson
cba81fc4de
Improve irgen of 'new' further.
...
llvm-svn: 72677
2009-05-31 21:53:59 +00:00
Anders Carlsson
96c012ff8b
...and aggregate POD types.
...
llvm-svn: 72676
2009-05-31 21:12:26 +00:00
Anders Carlsson
60d0c2c1c2
Support for complex types.
...
llvm-svn: 72675
2009-05-31 21:07:58 +00:00
Anders Carlsson
ec71f61608
Better support for scalar POD types in 'new' expressions.
...
llvm-svn: 72674
2009-05-31 20:56:36 +00:00
Anders Carlsson
6f9dabff6d
Make sure to copy back arguments that can be changed by FindAllocationOverload. This fixes placement new. (Sebastian, please review).
...
llvm-svn: 72673
2009-05-31 20:26:12 +00:00
Anders Carlsson
1832f52b10
Very basic irgen support for new expressions.
...
llvm-svn: 72672
2009-05-31 20:21:44 +00:00
Anders Carlsson
0955f20473
Don't try to call getFileCharacteristic if the function declaration has an invalid source location (as is the case for the global allocation functions.
...
llvm-svn: 72671
2009-05-31 20:19:23 +00:00
Anders Carlsson
2418712039
Fix an off by one error when trying to perform copy initialization of operator new and operator delete arguments. Sebastian, please review.
...
llvm-svn: 72670
2009-05-31 19:49:47 +00:00
Chris Lattner
6e127a6d86
Downgrade an error about "return in a no-return function" from being
...
an error to being a warning that defaults to error. If you want this to
be a warning, you have to explicitly pass -Winvalid-noreturn to clang to
map it back to a warning.
llvm-svn: 72669
2009-05-31 19:32:13 +00:00
Sebastian Redl
fb3f1794e1
Disallow exception specs on typedefs.
...
llvm-svn: 72664
2009-05-31 11:47:27 +00:00
Eli Friedman
42a8465518
Fix for PR4285: allow intializing a const wchar_t array with a wide
...
string.
llvm-svn: 72663
2009-05-31 10:54:53 +00:00
Douglas Gregor
2373c599b5
Initial infrastructure for class template partial specialization. Here
...
we have the basics of declaring and storing class template partial
specializations, matching class template partial specializations at
instantiation time via (limited) template argument deduction, and
using the class template partial specialization's pattern for
instantiation.
This patch is enough to make a simple is_pointer type trait work, but
not much else.
llvm-svn: 72662
2009-05-31 09:31:02 +00:00
Douglas Gregor
7a1a7cb09d
Add a little FIXME for C++ class printing
...
llvm-svn: 72660
2009-05-31 07:13:39 +00:00
Duncan Sands
6674a492c4
Unbreak the clang build by applying the same temporary
...
workaround for machine code emitter changes as was used
in llvm-gcc.
llvm-svn: 72657
2009-05-31 04:09:57 +00:00
Anders Carlsson
4a7b49b56a
Add a new function for emitting new functions.
...
llvm-svn: 72656
2009-05-31 01:40:14 +00:00
Anders Carlsson
8eb93e72f7
Emit destructors correctly for temporaries.
...
llvm-svn: 72655
2009-05-31 00:34:10 +00:00
Anders Carlsson
f3f91cee43
When possible, don't emit the cleanup block. Instead, just move the instructions to the current block.
...
llvm-svn: 72654
2009-05-31 00:33:20 +00:00
Anders Carlsson
c0092ad333
Implement VisitCXXExprWithTemporaries for complex expressions.
...
llvm-svn: 72653
2009-05-31 00:12:05 +00:00
Anders Carlsson
2262b307aa
Call EmitCXXExprWithTemporaries.
...
llvm-svn: 72652
2009-05-31 00:09:15 +00:00
Anders Carlsson
fd2af0cf86
Add lvalue irgen support for CXXBindTemporaryExpr.
...
llvm-svn: 72649
2009-05-30 23:30:54 +00:00
Anders Carlsson
3be22e27b6
More temporary support.
...
llvm-svn: 72648
2009-05-30 23:23:33 +00:00
Anders Carlsson
feefce601f
Forgot the implementation. Thanks Eli.
...
llvm-svn: 72647
2009-05-30 22:51:20 +00:00
Anders Carlsson
777711ba0b
Add RemoveOutermostTemporaryBinding. Not used yet.
...
llvm-svn: 72644
2009-05-30 22:47:03 +00:00
Anders Carlsson
73b836bf3d
Clean up the newly added C++ AST nodes.
...
llvm-svn: 72643
2009-05-30 22:38:53 +00:00
Anders Carlsson
a524f6fce6
It's OK for a full expr to be null. This fixes the failing test cases.
...
llvm-svn: 72642
2009-05-30 22:24:16 +00:00
Anders Carlsson
5de832ecfa
ActOnReturnStmt should also take a FullExprArg.
...
llvm-svn: 72641
2009-05-30 21:42:34 +00:00
Anders Carlsson
5e9444f541
AddInitializerToDecl needs to take a full expression.
...
llvm-svn: 72640
2009-05-30 21:37:25 +00:00
Anders Carlsson
c78576e250
Add the newly created temporary to the ExprTemporaries stack.
...
llvm-svn: 72638
2009-05-30 21:21:49 +00:00
Anders Carlsson
4f44fd5c6f
Get rid of CXXTempVarDecl.
...
llvm-svn: 72637
2009-05-30 21:10:34 +00:00
Eli Friedman
f7f9f68722
Some small fixes for fields of reference type.
...
llvm-svn: 72636
2009-05-30 21:09:44 +00:00
Anders Carlsson
a29ded9ba8
Stop using CXXTempVarDecl and use CXXTemporary instead.
...
llvm-svn: 72634
2009-05-30 21:05:25 +00:00
Anders Carlsson
4b2434da54
Remove VarDecl from CXXConstructExpr.
...
llvm-svn: 72633
2009-05-30 20:56:46 +00:00
Anders Carlsson
b228818554
Bind temporaries correctly when instantiating expressions.
...
llvm-svn: 72632
2009-05-30 20:52:37 +00:00
Anders Carlsson
28486d420b
Remove VarDecl from CheckInitializerTypes now that CXXConstructExpr doesn't need to take a VarDecl anymore. (It still does, but it won't for long)
...
llvm-svn: 72630
2009-05-30 20:41:30 +00:00
Anders Carlsson
2d4cada7f7
Add Sema::MaybeBindToTemporary which takes an expression and (if needed) wraps it in a CXXBindTemporaryExpr. Use this when creating CXXTemporaryObjectExprs.
...
llvm-svn: 72629
2009-05-30 20:36:53 +00:00
Anders Carlsson
ffda606612
Small fixes to CXXTemporary and CXXBindTemporaryExpr.
...
llvm-svn: 72628
2009-05-30 20:34:37 +00:00
Anders Carlsson
993a4b3080
Add a CXXBindTemporaryExpr.
...
llvm-svn: 72627
2009-05-30 20:03:25 +00:00
Anders Carlsson
f337d8c515
Add a CXXTemporary class. Not used yet.
...
llvm-svn: 72626
2009-05-30 19:54:15 +00:00
Anders Carlsson
36b75a4619
Replace a cast with a dyn_cast as suggested by Doug.
...
llvm-svn: 72624
2009-05-30 17:26:39 +00:00
Mike Stump
b807c9c622
Cleqnup ideas from Chris, thanks.
...
llvm-svn: 72621
2009-05-30 14:43:18 +00:00
Douglas Gregor
5f478b78c0
AST printing for C++ base classes
...
llvm-svn: 72617
2009-05-30 06:58:37 +00:00
Douglas Gregor
182319375a
Pretty printing and improved representation for namespace alias declarations
...
llvm-svn: 72616
2009-05-30 06:48:27 +00:00
Eli Friedman
1730424516
Add a hack to prevent us from printing out the __builtin_va_list
...
declaration in -ast-print mode.
llvm-svn: 72615
2009-05-30 06:35:22 +00:00
Douglas Gregor
3bc6e4c72a
Printing for using directives, e.g.,
...
using namespace std::debug;
Extended UsingDirectiveDecl to store the nested-name-specifier that
precedes the nominated namespace.
llvm-svn: 72614
2009-05-30 06:31:56 +00:00
Douglas Gregor
2d042f1cf4
Never suppress specifiers when printing the parameters of a function
...
declaration.
llvm-svn: 72613
2009-05-30 05:39:39 +00:00
Eli Friedman
c4fc839c57
Pass an ASTContext into Stmt::printPretty.
...
llvm-svn: 72612
2009-05-30 05:32:46 +00:00
Eli Friedman
0905f14e62
Pass an ASTContext into Stmt::printPretty.
...
llvm-svn: 72611
2009-05-30 05:19:26 +00:00
Eli Friedman
ef334fdfa2
Add a Stmt::printPretty overload which takes an ASTContext; start
...
transitioning callers over to pass one in.
llvm-svn: 72609
2009-05-30 05:03:24 +00:00
Eli Friedman
796358498f
Expose an API to print a group of decls (like "int a,b;").
...
Make StmtPrinter use DeclPrinter to print all declarations. Merge
declarations in the limited case of an unnamed TagDecl followed by one
or more declarations using that TagDecl directly. Change
SuppressTypeSpecifiers to the more general SuppressSpecifiers, and
use it to suppress stuff like "typedef" and "extern". Replace
OwnedTag with SuppressTag, since it's more convenient to print
declarations from DeclPrinter at the moment.
improvements to declaration printing. Fix pretty-printing for K&R
function definitions and __builtin_va_arg.
We're now to the point where the pretty-printing output for non-trivial
programs can actually be piped back into clang.
llvm-svn: 72608
2009-05-30 04:20:30 +00:00
Mike Stump
2346cd2a10
Improve __builtin_nanf support; we now can deal with them as constants.
...
llvm-svn: 72607
2009-05-30 03:56:50 +00:00
Eli Friedman
258ffef5b5
Fix some test failures involving -ast-print.
...
llvm-svn: 72605
2009-05-30 01:45:29 +00:00
Douglas Gregor
36098ff480
Clean up printing for Objective-C, designated initializers.
...
llvm-svn: 72602
2009-05-30 00:56:08 +00:00
Anders Carlsson
65d5820892
Add a member lookup criteria constructor for searching for overridden virtual member functions. Use this instead of regular name lookup when checking for overriding functions so we will see declarations that would otherwise be hidden. Fixes 6902298.
...
llvm-svn: 72601
2009-05-30 00:52:53 +00:00
Eli Friedman
15ea880358
Some enhancements to DeclStmt printing. Some of this should
...
move to DeclPrinter.cpp, but I haven't quite worked out how best to do
that.
llvm-svn: 72599
2009-05-30 00:19:54 +00:00
Eli Friedman
d5ef49ff54
Add support for PrintingPolicy::SuppressTypeSpecifiers to type printing.
...
(I have a work-in-progress patch which uses this.)
llvm-svn: 72598
2009-05-30 00:10:16 +00:00
Douglas Gregor
278f52ec29
Refactor and clean up the AST printer, so that it uses a DeclVisitor,
...
walks through DeclContexts properly, and prints more of the
information available in the AST. The functionality is still available
via -ast-print, -ast-dump, etc., and also via the new member functions
Decl::dump() and Decl::print().
llvm-svn: 72597
2009-05-30 00:08:05 +00:00
Anders Carlsson
01bcef4a17
Make the LookupBase boolean an enum instead.
...
llvm-svn: 72594
2009-05-29 23:42:05 +00:00
Anders Carlsson
0a63741a3f
Add code for emitting C++ destructors. Not used yet.
...
llvm-svn: 72591
2009-05-29 21:03:38 +00:00
Douglas Gregor
7de5966d76
Create a new PrintingPolicy class, which we pass down through the AST
...
printing logic to help customize the output. For now, we use this
rather than a special flag to suppress the "struct" when printing
"struct X" and to print the Boolean type as "bool" in C++ but "_Bool"
in C.
llvm-svn: 72590
2009-05-29 20:38:28 +00:00
Eli Friedman
bd32745978
Make sure we don't give the wrong warning, and make sure not to set
...
hadError (suppressing future diagnostics) if we didn't print an
error.
llvm-svn: 72588
2009-05-29 20:20:05 +00:00
Eli Friedman
be7e42b27f
Add an assertion so that we don't accidentally build constant arrays of
...
VLAs.
llvm-svn: 72587
2009-05-29 20:17:55 +00:00
Eli Friedman
9444638e4e
Re-add a slightly more general version of the check from r72578; it is
...
actually necessary in some obscure cases.
llvm-svn: 72585
2009-05-29 19:23:46 +00:00
Mike Stump
a678874975
Oops, the testcase I was thinking of is supposed to error out. I
...
tried other things that might trip, but they all worked.
llvm-svn: 72584
2009-05-29 19:14:13 +00:00
Eli Friedman
20da71e3b6
Add a couple missing ARM defines.
...
llvm-svn: 72583
2009-05-29 19:00:15 +00:00
Douglas Gregor
6181ded4ad
Reduce the amount of stack space we use in SmallVectors during
...
template instantiation. This helps reduce our stack footprint when
performing deep template instantiations.
llvm-svn: 72582
2009-05-29 18:27:38 +00:00
Eli Friedman
893abe482d
Revert r72575, which isn't really right, and fix up other code to
...
handle the construct in question correctly.
llvm-svn: 72581
2009-05-29 18:22:49 +00:00