Commit Graph

6698 Commits

Author SHA1 Message Date
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