Commit Graph

107553 Commits

Author SHA1 Message Date
Anna Zaks 083f0b5a7e Add support for sadd.with.overflow and uadd.with.overflow intrinsics to the CBackend by emitting definitions for each intrinsic that occurs in the module.
llvm-svn: 133522
2011-06-21 17:18:15 +00:00
Douglas Gregor fe31481f68 Introduce a new AST node describing reference binding to temporaries.
MaterializeTemporaryExpr captures a reference binding to a temporary
value, making explicit that the temporary value (a prvalue) needs to
be materialized into memory so that its address can be used. The
intended AST invariant here is that a reference will always bind to a
glvalue, and MaterializeTemporaryExpr will be used to convert prvalues
into glvalues for that binding to happen. For example, given

  const int& r = 1.0;

The initializer of "r" will be a MaterializeTemporaryExpr whose
subexpression is an implicit conversion from the double literal "1.0"
to an integer value. 

IR generation benefits most from this new node, since it was
previously guessing (badly) when to materialize temporaries for the
purposes of reference binding. There are likely more refactoring and
cleanups we could perform there, but the introduction of
MaterializeTemporaryExpr fixes PR9565, a case where IR generation
would effectively bind a const reference directly to a bitfield in a
struct. Addresses <rdar://problem/9552231>.

llvm-svn: 133521
2011-06-21 17:03:29 +00:00
Andrew Trick fc4ccb20c6 IVUsers no longer needs to record the phis.
llvm-svn: 133518
2011-06-21 15:43:52 +00:00
Jay Foad f6474fd5f3 Remove deprecated forms of StringMap::GetOrCreateValue().
llvm-svn: 133517
2011-06-21 15:37:05 +00:00
Jay Foad 7a8a5f7f1d Remove some unnecessary uses of c_str().
llvm-svn: 133516
2011-06-21 15:36:24 +00:00
Jay Foad 9a6b09874d Make more use of llvm::StringRef in various APIs. In particular, don't
use the deprecated forms of llvm::StringMap::GetOrCreateValue().

llvm-svn: 133515
2011-06-21 15:13:30 +00:00
Benjamin Kramer ccbb77f239 Remove unused variables.
llvm-svn: 133514
2011-06-21 14:58:30 +00:00
Jay Foad a97a2c998e Reinstate r133435 and r133449 (reverted in r133499) now that the clang
self-hosted build failure has been fixed (r133512).

llvm-svn: 133513
2011-06-21 10:33:19 +00:00
Jay Foad 25127ab1e4 Don't use PN->replaceUsesOfWith() to change a PHINode's incoming blocks,
because it won't work after my phi operand changes, because the incoming
blocks will no longer be Uses.

llvm-svn: 133512
2011-06-21 10:02:43 +00:00
Joerg Sonnenberger 4eb724ffdf Fix typo. From Damjan Marion.
llvm-svn: 133511
2011-06-21 08:45:08 +00:00
Jay Foad 165910fa6d Add a reduced test case for the buildbot failure (clang self-hosted
build) caused by r133435.

llvm-svn: 133509
2011-06-21 08:33:49 +00:00
Chris Lattner 5bc616d15e use the MapEntryTy typedef instead of writing it out long form,
add some fixme's about methods that should be removed.

Merged from type-system-rewrite.

llvm-svn: 133504
2011-06-21 06:22:33 +00:00
Evan Cheng 4c0bd9629d Teach dag combine to match halfword byteswap patterns.
1. (((x) & 0xFF00) >> 8) | (((x) & 0x00FF) << 8)
   => (bswap x) >> 16
2. ((x&0xff)<<8)|((x&0xff00)>>8)|((x&0xff000000)>>8)|((x&0x00ff0000)<<8))
   => (rotl (bswap x) 16)

This allows us to eliminate most of the def : Pat patterns for ARM rev16
revsh instructions. It catches many more cases for ARM and x86.

rdar://9609108

llvm-svn: 133503
2011-06-21 06:01:08 +00:00
Andrew Trick 69d4452f2e indvars -disable-iv-rewrite: Adds support for eliminating identity
ops.

This is a rewrite of the IV simplification algorithm used by
-disable-iv-rewrite. To avoid perturbing the default mode, I
temporarily split the driver and created SimplifyIVUsersNoRewrite. The
idea is to avoid doing opcode/pattern matching inside
IndVarSimplify. SCEV already does it. We want to optimize with the
full generality of SCEV, but optimize def-use chains top down on-demand rather
than rewriting the entire expression bottom-up. This was easy to do
for operations that SCEV can prove are identity function. So we're now
eliminating bitmasks and zero extends this way.

A result of this rewrite is that indvars -disable-iv-rewrite no longer
requires IVUsers.

llvm-svn: 133502
2011-06-21 03:22:38 +00:00
NAKAMURA Takumi 5364847a84 De-Unicode-ify in comments.
llvm-svn: 133501
2011-06-21 03:19:28 +00:00
Jason Molenda 98322e64c3 Replace examine-threads.c with a similar little utility I wrote a
while back.  By default its output will be less verbose than the
old examine-threads.c but adding the '-v' command line flag will
give all the information that examine-threads.c provided plus some.

Of note, this implementation can take a process name -- and it will
use the libproc API so it can match program names longer than 16
characters.

llvm-svn: 133500
2011-06-21 02:57:15 +00:00
Chad Rosier 184f3b37e2 Revert r133435 and r133449 to appease buildbots.
llvm-svn: 133499
2011-06-21 02:09:03 +00:00
Greg Clayton fe356d356a Added the ability to find functions from either a SBModule (find functions
only in a specific module), or in a SBTarget (all modules for a target).

llvm-svn: 133498
2011-06-21 01:34:41 +00:00
Akira Hatanaka 27029885f0 Add A0 and A1 to the list of registers used for returning a value in order to
handle functions with return type Complex long long.

llvm-svn: 133497
2011-06-21 01:28:11 +00:00
Akira Hatanaka 5b350be79d Coding style fixes.
llvm-svn: 133496
2011-06-21 01:02:03 +00:00
Johnny Chen ed492022f4 For now, insert some delays between succesive test cases in the test/types directory
if not already specified by the test driver (via ./dotest -w).  Remove the AbstractBase.setUp()
method definition when/if we find out the cause of the failures if no delays are inserted
between these test cases.

llvm-svn: 133495
2011-06-21 00:53:00 +00:00
Akira Hatanaka 4c406e7457 Re-apply 132758 and 132768 which were speculatively reverted in 132777.
llvm-svn: 133494
2011-06-21 00:40:49 +00:00
Bill Wendling a05dedf925 Don't mark the eh.dispatch.setup with a memory access marker. We want this to
stick around even during fast isel.
<rdar://problem/9637156>

llvm-svn: 133493
2011-06-21 00:35:15 +00:00
Nick Lewycky 9e8bf1ba06 Also fix the warning about using "clang" instead of %clang.
llvm-svn: 133492
2011-06-21 00:23:47 +00:00
Nick Lewycky 65df58582c Remove the leading hyphen so that grep doesn't parse it as one long option :)
llvm-svn: 133491
2011-06-21 00:21:22 +00:00
Daniel Dunbar 471c4f8299 Driver/Darwin: Honor -Xarch_FOO when the arch matches either the toolchain or
the architecture being bound.
 - Fixes things like -Xarch_armv7.

llvm-svn: 133490
2011-06-21 00:20:17 +00:00
Nick Lewycky ca6b90d8af Add support for -Wa,--noexecstack when building from a non-assembly file. For
an assembly file it worked correctly, while for a .c file it would given an
error about how --noexecstack is not a supported argument to -Wa.

llvm-svn: 133489
2011-06-21 00:14:18 +00:00
Johnny Chen e5cc4b6330 Simplify the the generic AbstractBase.py test base for testing variable types.
We still have the the issue where running:

    ./dotest.py -v types

we have test failures where the inferior either runs to exited with status 0 or
the inferior stops but not because of breakpoint (for example):

runCmd: process status
output: Process 90060 stopped
* thread #1: tid = 0x2d03, 0x000000010000e2ca, stop reason = EXC_BAD_ACCESS (code=2, address=0x10000e2ca)
  frame #0: 0x000000010000e2ca

There are two cases where the inferior stops for the breakpoint (good), but the expression parser
prints out the wrong information.  The two failures are:

Failure-TestFloatTypesExpr.FloatTypesExprTestCase.test_double_type_with_dsym.log
Failure-TestFloatTypesExpr.FloatTypesExprTestCase.test_double_type_with_dwarf.log

I'll file a radar on the two expression parser misbehave, while continue investigating why the
inferior stops for the wrong reason or does not stop at all.

For now, you'll need to do:

    ./dotest.py -v -w types

llvm-svn: 133488
2011-06-21 00:13:15 +00:00
Nick Kledzik 1f9470589b <rdar://problem/9624306> clean up darwin platform to use xcrun. Set up variables in darwin_bni.mk. Use GetCNAVar in AppleBI.mk
llvm-svn: 133487
2011-06-21 00:07:55 +00:00
Eric Christopher b4a791f7bc Canonicalize register names properly.
Fixes rdar://9425559

llvm-svn: 133486
2011-06-21 00:07:10 +00:00
Eric Christopher cdd3635b09 Move additional register names to their own lookup, separate from
register aliases. Fixes unnecessary renames of clobbers.

Fixes part of rdar://9425559

llvm-svn: 133485
2011-06-21 00:05:20 +00:00
Peter Collingbourne d155c0b451 Remove duplicate m_monitor field from LaunchArgs
Fixes segfault when launching process on Linux.

llvm-svn: 133484
2011-06-20 23:55:58 +00:00
Peter Collingbourne 6f2b85221d Set LLDB_SESSION_DIRNAME to absolute path
This is to ensure that session files are written to the correct
directory if the -r option is given.

llvm-svn: 133483
2011-06-20 23:55:53 +00:00
Nick Kledzik 3729225576 add STRIP and LIPO as AvailableOptions
llvm-svn: 133481
2011-06-20 23:47:02 +00:00
Argyrios Kyrtzidis 0a9d652331 [arcmt] Always add '__bridge' cast when 'self' is cast to a C pointer. rdar://9644061
llvm-svn: 133480
2011-06-20 23:39:20 +00:00
Jim Ingham 91da589d7e The "-r" option should work for both "-n" and "-s", but it was only set to work for "-s".
llvm-svn: 133479
2011-06-20 23:38:11 +00:00
Dan Gohman ceaac7cb4a Completely short-circuit out ARC optimization if the ARC runtime
functions do not appear in the module.

llvm-svn: 133478
2011-06-20 23:20:43 +00:00
Johnny Chen 3343c13c6e Minor module-level docstring change.
llvm-svn: 133476
2011-06-20 22:33:35 +00:00
Johnny Chen dd68ab83b9 Test lldb Python API object's default constructor and make sure it is invalid
after initial construction.

There are two exceptions to the above general rules, though; the API objects are
SBCommadnReturnObject and SBStream.

llvm-svn: 133475
2011-06-20 22:30:48 +00:00
Bill Wendling b3aaf95c4f Remove the subclassing. This will be moved to the ASM printer.
llvm-svn: 133473
2011-06-20 22:12:24 +00:00
Jordy Rose b41f7c55f5 [analyzer] Finish size argument checking for strncat (and strncpy).
llvm-svn: 133472
2011-06-20 21:55:40 +00:00
Jakob Stoklund Olesen d9149a45ea Skip fields that don't exist in the Register class.
llvm-svn: 133470
2011-06-20 20:56:05 +00:00
Fariborz Jahanian 4ad5686399 objc-arc: allow explicit unbridged casts if the source of the cast is a
message sent to an objc method (or property access)
// rdar://9474349

llvm-svn: 133469
2011-06-20 20:54:42 +00:00
Johnny Chen 91016396b9 Change to get around the nested ifeq woes on OS X Snow Leopard:
../make/Makefile.rules:217: *** missing `endif'.  Stop.

llvm-svn: 133466
2011-06-20 20:08:26 +00:00
Argyrios Kyrtzidis 81a3590a0e [arcmt] Find out whether there is an ARC runtime directly from the triple, avoid hacky delegation to the driver for that.
llvm-svn: 133464
2011-06-20 19:59:52 +00:00
Peter Collingbourne aa14adc639 Add dependency tracking/clean rule to interpreter makefile
llvm-svn: 133463
2011-06-20 19:07:07 +00:00
Peter Collingbourne 3b3531618b Enable the "make test" rule in the root Makefile
llvm-svn: 133462
2011-06-20 19:06:57 +00:00
Peter Collingbourne b0589f16a4 Add a default rule to test/Makefile which runs the test suite
llvm-svn: 133461
2011-06-20 19:06:51 +00:00
Peter Collingbourne d6824de00e Modify TestHelp to search for LLDB-Info.plist in the correct place
This is required to run the test suite outside of the source tree
or on a case sensitive file system.

llvm-svn: 133460
2011-06-20 19:06:45 +00:00
Peter Collingbourne 7477e10dc8 Create a _lldb.so symlink in the bin directory
This is required to run the test suite without installing.

llvm-svn: 133459
2011-06-20 19:06:35 +00:00