Commit Graph

84720 Commits

Author SHA1 Message Date
Dale Johannesen e288fee959 Remove tail call. A tail call version will follow.
llvm-svn: 105438
2010-06-04 00:03:37 +00:00
Bob Wilson a733daf18c Add some missing checks in TwoAddressInstructionPass::CoalesceExtSubRegs.
Check that all the instructions are in the same basic block, that the
EXTRACT_SUBREGs write to the same subregs that are being extracted, and that
the source and destination registers are in the same regclass.  Some of
these constraints can be relaxed with a bit more work.  Jakob suggested
that the loop that checks for subregs when NewSubIdx != 0 should use the
"nodbg" iterator, so I made that change here, too.

llvm-svn: 105437
2010-06-03 23:53:58 +00:00
Jim Grosbach 01edd68225 Cleanup 80-column and trim trailing whitespace
llvm-svn: 105435
2010-06-03 23:49:57 +00:00
Eli Friedman 986b6ae96a Check the output of this test.
llvm-svn: 105434
2010-06-03 23:34:11 +00:00
Eli Friedman 4e7bd4a8a1 Think through my commit this time.
llvm-svn: 105433
2010-06-03 23:31:53 +00:00
Eli Friedman cd70980c8e Make sure this test doesn't break when we disallow throwing an exception
in -fno-exceptions mode.

llvm-svn: 105432
2010-06-03 23:22:25 +00:00
Jim Grosbach b30b81edb6 Teach the ARM load-store optimizer to deal with dbg_value instructions.
llvm-svn: 105427
2010-06-03 22:41:15 +00:00
Tom Care 7691c9cdb6 Removing commit access test file.
llvm-svn: 105426
2010-06-03 22:31:09 +00:00
Tom Care 4cdcf59c6d Testing commit access.
llvm-svn: 105424
2010-06-03 22:30:22 +00:00
Dale Johannesen 9f71f7f70c Remove tail call to preserve this test. A tail
call version will follow.

llvm-svn: 105422
2010-06-03 21:57:48 +00:00
Dale Johannesen 41528aeb0b Make this test not use tail calls. A tail call
version will follow.

llvm-svn: 105419
2010-06-03 21:53:01 +00:00
Nate Begeman 821079d42d Classify NEON intrinsics by overloading-type for codegen
Add a few missing instructions

llvm-svn: 105417
2010-06-03 21:36:23 +00:00
Nate Begeman 64b76bd4f7 Add some additional capabilities to the neon emitter
llvm-svn: 105416
2010-06-03 21:35:22 +00:00
Rafael Espindola 8fb957e5cb Add a emit-llvm option to the plugin and make the path argument to also-emit-llvm optional.
llvm-svn: 105414
2010-06-03 21:11:20 +00:00
Dale Johannesen d679ff7330 Early implementation of tail call for ARM.
A temporary flag -arm-tail-calls defaults to off,
so there is no functional change by default.
Intrepid users may try this; simple cases work
but there are bugs.

llvm-svn: 105413
2010-06-03 21:09:53 +00:00
Eli Friedman 91a3d27ec0 Make sure to check the accessibility of and mark the destructor for the
operand of a throw expression.  Fixes PR7281.

llvm-svn: 105408
2010-06-03 20:39:03 +00:00
Dan Gohman d83e3e7750 Fix SimplifyDemandedBits' AssertZext logic to demand all the bits. It
needs to demand the high bits because it's asserting that they're zero.

llvm-svn: 105406
2010-06-03 20:21:33 +00:00
Eli Friedman cce5b81ce1 Don't intentionally try to ignore the value of a scalar expression when we
actually care about it. Fixes PR7291.

llvm-svn: 105404
2010-06-03 19:58:07 +00:00
Howard Hinnant 3b61d21fac updated by-chapter-complete chart
llvm-svn: 105402
2010-06-03 19:31:49 +00:00
John McCall 1c70e99a2c Hack in some really terrible C++ record PCH support that I need right now.
This is required in order to test:

The ASTImporter should set base classes after formally entering the definition.

llvm-svn: 105401
2010-06-03 19:28:45 +00:00
Bob Wilson 30093b5d8b Revert 105308.
llvm-svn: 105399
2010-06-03 18:28:31 +00:00
Nick Lewycky ca4180c92a Perfer !string.empty() over string != "".
llvm-svn: 105397
2010-06-03 17:13:23 +00:00
Benjamin Kramer 9f4ab44fe4 Forgot to update the most important part of the gtest modifications readme.
llvm-svn: 105396
2010-06-03 17:11:49 +00:00
Nick Lewycky 0ac5e2205c Whitespace cleanup.
llvm-svn: 105395
2010-06-03 17:10:17 +00:00
Howard Hinnant 3bdce1c166 test results are now stored internal to Apple.
llvm-svn: 105394
2010-06-03 17:05:53 +00:00
Howard Hinnant d1803b6c87 [util.smartptr.hash]
llvm-svn: 105393
2010-06-03 16:42:57 +00:00
Ted Kremenek b4bb6dc44d Return a proper null CXSourceLocation from clang_getLocation() when the SourceLocation is invalid. Fixes <rdar://problem/8056640>.
llvm-svn: 105392
2010-06-03 15:52:32 +00:00
Anders Carlsson bcb2e4cb63 Don't try to explicitly zero out bit-fields.
llvm-svn: 105391
2010-06-03 15:36:07 +00:00
Benjamin Kramer 7cd082a7a3 Disable pthread support in googletest if llvm was configured without threads.
llvm-svn: 105390
2010-06-03 15:17:04 +00:00
Rafael Espindola 00121827b2 Don't preserve all symbols in a .so and instead trust gold to know what is
needed. The result is that now we are able to drop unnecessary symbol from
shared libraries.

llvm-svn: 105389
2010-06-03 14:45:44 +00:00
Bill Wendling f82aea634c Machine sink could potentially sink instructions into a block where the physical
registers it defines then interfere with an existing preg live range.

For instance, if we had something like these machine instructions:

BB#0
  ... = imul ... EFLAGS<imp-def,dead>
  test ..., EFLAGS<imp-def>
  jcc BB#2 EFLAGS<imp-use>

BB#1
  ... ; fallthrough to BB#2

BB#2
  ... ; No code that defines EFLAGS
  jcc ... EFLAGS<imp-use>

Machine sink will come along, see that imul implicitly defines EFLAGS, but
because it's "dead", it assumes that it can move imul into BB#2. But when it
does, imul's "dead" imp-def of EFLAGS is raised from the dead (a zombie) and
messes up the condition code for the jump (and pretty much anything else which
relies upon it being correct).

The solution is to know which pregs are live going into a basic block. However,
that information isn't calculated at this point. Nor does the LiveVariables pass
take into account non-allocatable physical registers. In lieu of this, we do a
*very* conservative pass through the basic block to determine if a preg is live
coming out of it.

llvm-svn: 105387
2010-06-03 07:54:20 +00:00
Benjamin Kramer 1add5f378d Turns out gtest still prefers the system <tr1/tuple> over it's own
implementation. Force the internal one to unbreak clang selfhost on linux.

llvm-svn: 105386
2010-06-03 07:51:58 +00:00
Jordy Rose d47ff22893 Test commit: fix method summary comment
llvm-svn: 105385
2010-06-03 06:52:32 +00:00
Zhongxing Xu ea9fcffe03 Make addStmt always add stmt. Delegate other cases to Visit() directly.
llvm-svn: 105384
2010-06-03 06:43:23 +00:00
Zhongxing Xu 41cdf585c2 CFG: add all LHS of assingments as lvalue. This improves support for C++ reference. Patch by Jordy.
llvm-svn: 105383
2010-06-03 06:23:18 +00:00
Zhongxing Xu 3b7294777c Add comments.
llvm-svn: 105382
2010-06-03 06:19:01 +00:00
Eric Christopher b0e1a458ce Add first pass at darwin tls compiler support.
llvm-svn: 105381
2010-06-03 04:07:48 +00:00
Nate Begeman 11d56c55c4 arm_neon.h now makes it through clang and generates appropriate code for those functions which can use
generic vector operators rather than __builtin_neon_*

llvm-svn: 105380
2010-06-03 04:04:09 +00:00
Eric Christopher f67fe3b1e8 One underscore, not two.
llvm-svn: 105379
2010-06-03 04:02:59 +00:00
Eli Friedman dbbbf73c96 Implement expansion in type legalization for add/sub with overflow. The
expansion is the same as that used by LegalizeDAG.

The resulting code sucks in terms of performance/codesize on x86-32 for a
64-bit operation; I haven't looked into whether different expansions might be
better in general.

llvm-svn: 105378
2010-06-03 03:49:50 +00:00
Eli Friedman ceb13f2af3 Remove some already-fixed README entries.
llvm-svn: 105377
2010-06-03 01:47:31 +00:00
Eli Friedman a59b7a72b9 Remove README entry which no longer compiles to something sane.
llvm-svn: 105376
2010-06-03 01:16:51 +00:00
Eli Friedman 1f41303260 Remove a fixed item, update a couple partially-fixed items.
llvm-svn: 105375
2010-06-03 01:01:48 +00:00
Anders Carlsson a2f74f3c98 Add all final overriders to the map.
llvm-svn: 105374
2010-06-03 01:00:02 +00:00
Jakob Stoklund Olesen 4029596f93 Use the fast register allocator by default for -O0 builds.
This affects both llvm-gcc and clang.

llvm-svn: 105372
2010-06-03 00:39:06 +00:00
Jakob Stoklund Olesen 818e4df2b4 Use readsWritesVirtualRegister instead of counting uses and defs when inserting
spills and reloads.

This means that a partial define of a register causes a reload so the other
parts of the register are preserved.

The reload can be prevented by adding an <imp-def> operand for the full
register. This is already done by the coalescer and live interval analysis where
relevant.

llvm-svn: 105369
2010-06-03 00:07:47 +00:00
Jakob Stoklund Olesen 42c642cd24 Add full register <imp-def> operands when the coalescer is creating partial
register updates.

These operands tell the spiller that the other parts of the partially defined
register are don't-care, and a reload is not necessary.

llvm-svn: 105361
2010-06-02 23:22:11 +00:00
Devang Patel df84e8baf7 Speedup bitcode writer. Do not walk all values for all functions to emit function local metadata. In one testcase, probably worst case scenario, the 70x speed up is seen.
llvm-svn: 105360
2010-06-02 23:05:04 +00:00
Bill Wendling 7ee730eb40 Compulsive reformating. No functionalitical changes.
llvm-svn: 105359
2010-06-02 23:04:26 +00:00
Jakob Stoklund Olesen a8ad97743d Slightly change the meaning of the reMaterialize target hook when the original
instruction defines subregisters.

Any existing subreg indices on the original instruction are preserved or
composed with the new subreg index.

Also substitute multiple operands mentioning the original register by using the
new MachineInstr::substituteRegister() function. This is necessary because there
will soon be <imp-def> operands added to non read-modify-write partial
definitions. This instruction:

  %reg1234:foo = FLAP %reg1234<imp-def>

will reMaterialize(%reg3333, bar) like this:

  %reg3333:bar-foo = FLAP %reg333:bar<imp-def>

Finally, replace the TargetRegisterInfo pointer argument with a reference to
indicate that it cannot be NULL.

llvm-svn: 105358
2010-06-02 22:47:25 +00:00