Commit Graph

51815 Commits

Author SHA1 Message Date
Anders Carlsson 25b16dbcd8 Add macros
llvm-svn: 61328
2008-12-22 05:42:03 +00:00
Anders Carlsson 8b79fc8aab Add misc intrinsics
llvm-svn: 61327
2008-12-22 05:20:34 +00:00
Anders Carlsson 53b3d4a32a Add control register intrinsics
llvm-svn: 61326
2008-12-22 05:00:07 +00:00
Anders Carlsson 4cf8ac8bb8 Add integer intrinsics
llvm-svn: 61325
2008-12-22 04:55:36 +00:00
Anders Carlsson 0462eb270a Generate code for __builtin_ia32_pshufw
llvm-svn: 61324
2008-12-22 04:54:32 +00:00
Anders Carlsson 70d5f46646 Add cacheability intrinsics
llvm-svn: 61323
2008-12-22 03:50:21 +00:00
Anders Carlsson 1e71996bd1 Add store intrinsics
llvm-svn: 61322
2008-12-22 03:16:40 +00:00
Anders Carlsson c7d0d8b60d Add set intrinsics
llvm-svn: 61321
2008-12-22 02:51:35 +00:00
Anders Carlsson 13fd3a1411 Add load intrinsics
llvm-svn: 61320
2008-12-22 02:43:30 +00:00
Zhongxing Xu 5b0ae81ab1 Add an option to make 'RemoveDeadBindings' a configurable behavior. This enables
us to measure the effect of this optimization.

llvm-svn: 61319
2008-12-22 01:52:37 +00:00
Anders Carlsson 1e4a9b7c0d _mm_cvtsi64_ss is 64-bit only, so wrap it in #ifdef __x86_64__
Add composite conversion intrinsics - will implement them shortly.

llvm-svn: 61318
2008-12-22 01:26:50 +00:00
Anders Carlsson 157643c8d7 Add a couple of conversion intrinsics
llvm-svn: 61317
2008-12-22 00:48:30 +00:00
Anders Carlsson 60053dd2a5 Add comparison intrinsics.
llvm-svn: 61316
2008-12-22 00:28:39 +00:00
Anders Carlsson 2df1ce496e Check in an in-progress version of xmmintrin.h that I had lying around.
llvm-svn: 61315
2008-12-22 00:01:20 +00:00
Anders Carlsson 39def3adc8 Add codegen support for __null
llvm-svn: 61314
2008-12-21 22:39:40 +00:00
Sebastian Redl fc24b63b9a Fix a comment.
llvm-svn: 61313
2008-12-21 19:24:58 +00:00
Sebastian Redl b219c90d7b Parser support for C++ try-catch.
llvm-svn: 61312
2008-12-21 16:41:36 +00:00
Zhongxing Xu 7b9c57083b Correct comments.
llvm-svn: 61311
2008-12-21 13:00:52 +00:00
Sebastian Redl f795cbed2e Test case makes a platform assumption, so force triple.
llvm-svn: 61310
2008-12-21 12:17:24 +00:00
Sebastian Redl 52f03bac60 Convert a few Stmt actions to smart pointers.
llvm-svn: 61309
2008-12-21 12:04:03 +00:00
Sebastian Redl 8de8234de4 Document how move semantics and the emulation work. Do this in-file because it's such a specific thing.
Restructure code for less duplication.

llvm-svn: 61308
2008-12-21 11:56:24 +00:00
Mikhail Glushenkov 2fe093f2b8 Use ignore & grep instead of XFAIL.
llvm-svn: 61307
2008-12-21 07:47:49 +00:00
Zhongxing Xu d93e03b25f fix 80-col violation.
llvm-svn: 61306
2008-12-21 04:46:06 +00:00
Anders Carlsson 3ebc7c4a0d Implement alignof for vla types.
llvm-svn: 61305
2008-12-21 03:48:05 +00:00
Zhongxing Xu 40b0e50ffd Use utility method.
llvm-svn: 61304
2008-12-21 03:46:11 +00:00
Anders Carlsson e0808df4a5 Add ASTContext::getBaseElementType and use it in CodeGenFunction::EmitArraySubscriptExpr.
llvm-svn: 61303
2008-12-21 03:44:36 +00:00
Anders Carlsson 118467dfb7 Commit the right version of the test
llvm-svn: 61302
2008-12-21 03:40:32 +00:00
Anders Carlsson 76dbc0423e Make sure to emit the size expression for sizeof(type)
llvm-svn: 61301
2008-12-21 03:33:21 +00:00
Zhongxing Xu 303a6d4f11 Use utility methods. No functional change.
llvm-svn: 61300
2008-12-21 03:31:01 +00:00
Zhongxing Xu f97d95a782 Remove unused function.
llvm-svn: 61299
2008-12-21 03:26:05 +00:00
Eli Friedman dea4193e8a Fix for PR3246: an empty clobber list is the empty string, not a null
string.

That said, we should probably try and track down the correct clobber 
lists for the targets that don't have them (PPC, ARM, and Sparc), 
so that we can generate correct code.

llvm-svn: 61298
2008-12-21 01:15:32 +00:00
Nick Lewycky 10eb8e533f Turn strcmp into memcmp, such as strcmp(P, "x") --> memcmp(P, "x", 2).
llvm-svn: 61297
2008-12-21 00:19:21 +00:00
Anders Carlsson 8e0ba05074 Did not mean to commit this.
llvm-svn: 61296
2008-12-21 00:16:32 +00:00
Anders Carlsson 3d312f8788 Handle VLA indexing
llvm-svn: 61295
2008-12-21 00:11:23 +00:00
Douglas Gregor 2eedc3aa1c Add support for member references (E1.E2, E1->E2) with C++ semantics,
which can refer to static data members, enumerators, and member
functions as well as to non-static data members.

Implement correct lvalue computation for member references in C++. 
Compute the result type of non-static data members of reference type properly.

llvm-svn: 61294
2008-12-20 23:49:58 +00:00
Fariborz Jahanian a0befc0a6f Finish up saving original parameter type and
using it in ObjC's method parameter encoding.

llvm-svn: 61293
2008-12-20 23:29:59 +00:00
Eli Friedman 5ad3c91b27 Extend the unsupported error to include break and continue, and fix a
warning by using an unsigned index.

llvm-svn: 61292
2008-12-20 23:18:29 +00:00
Eli Friedman f4084708cd Make VLAs usable, and make basic usage work correctly. Also, add a
simple test that actually does VLA codegen.

Note that despite the fact that the alloca isn't in the entry block, it 
should dominate all uses; this is guaranteed by the restrictions on goto 
into VLA scope in C99.

llvm-svn: 61291
2008-12-20 23:11:59 +00:00
Anders Carlsson 5d985f5f16 Handle typedefs to VLAs (Emit the size expr when we encounter the typedef
llvm-svn: 61290
2008-12-20 21:51:53 +00:00
Anders Carlsson fbef9c208f Check the entire StackSaveValues stack for VLAs when dealing with goto and return statements. Noticed by Eli Friedman.
llvm-svn: 61289
2008-12-20 21:33:38 +00:00
Anders Carlsson c20879a6e4 Make sure to generate code for arguments that have a variably modified type.
llvm-svn: 61288
2008-12-20 21:28:43 +00:00
Fariborz Jahanian 0c277dbee2 Add case for the new AST node.
llvm-svn: 61287
2008-12-20 21:06:28 +00:00
Fariborz Jahanian 7664ffb954 introducing ParmVarWithOriginalTypeDecl class to
keep track of the original parameter decl. types.
This is work in progress.

llvm-svn: 61286
2008-12-20 20:56:12 +00:00
Anders Carlsson 8a01b79274 Change EmitVLASize to take a QualType that must be a variably modified type.
Emit the size even if the declared type is a variably modified type. This lets us handle

void f(int n) {
  int (*a)[n];
  
  printf("size: %d\n", sizeof(*a));
}

llvm-svn: 61285
2008-12-20 20:46:34 +00:00
Anders Carlsson e388a5bf44 Split up emitting of VLA sizes and getting the size of a VLA.
llvm-svn: 61284
2008-12-20 20:27:15 +00:00
Anders Carlsson 6200f0c533 Add some ErrorUnsupported calls and turn on VLA codegen again.
llvm-svn: 61283
2008-12-20 19:33:21 +00:00
Fariborz Jahanian 7acf0749d4 Strangely enough, name of ObjC class is not encoded into the
full encoding of the class which has an ivar of pointer to this
class. Its name is encoded in the type for the ivar in the
ivar-list metadata. This patch conforms to the above rule.

llvm-svn: 61282
2008-12-20 19:17:01 +00:00
Dan Gohman ab316350bf Fix fast-isel to not emit invalid assembly when presented with a
constant shift count that doesn't fit in the shift instruction's
immediate field. This fixes PR3242.

llvm-svn: 61281
2008-12-20 17:19:40 +00:00
Dan Gohman a12f115972 Reword the comment for ConstantInt's getLimitedValue.
llvm-svn: 61280
2008-12-20 17:06:39 +00:00
Nick Lewycky 4bc10c9e77 Remove redundant test for vector-nature. Scan the vector first to see whether
our optz'n will apply to it, then build the replacement vector only if needed.

llvm-svn: 61279
2008-12-20 16:48:00 +00:00