Commit Graph

161265 Commits

Author SHA1 Message Date
Chandler Carruth 8f9bd1fa42 Move the test type out of the function and into the anonymous namespace
to fix C++98 builds.

llvm-svn: 194316
2013-11-09 04:09:50 +00:00
Chandler Carruth 64b0556071 Add a polymorphic_ptr<T> smart pointer data type. It's a somewhat silly
unique ownership smart pointer which is *deep* copyable by assuming it
can call a T::clone() method to allocate a copy of the owned data.

This is mostly useful with containers or other collections of uniquely
owned data in C++98 where they *might* copy. With C++11 we can likely
remove this in favor of move-only types and containers wrapped around
those types.

llvm-svn: 194315
2013-11-09 04:06:02 +00:00
NAKAMURA Takumi 5f847c007b include/llvm/CodeGen/PBQP: Update @param(s) in comments. [-Wdocumentation]
llvm-svn: 194314
2013-11-09 03:54:05 +00:00
NAKAMURA Takumi 866975c26c Fix whitespace.
llvm-svn: 194313
2013-11-09 03:53:55 +00:00
Dmitri Gribenko 322654d0a7 Comment parsing: recognize \def (but processing is a no-op, like the rest of
similar commands that duplicate the declaration name)

llvm-svn: 194312
2013-11-09 03:50:37 +00:00
Lang Hames fb82630a91 Re-apply r194300 with fixes for warnings.
llvm-svn: 194311
2013-11-09 03:08:56 +00:00
Daniel Jasper 279430585a clang-format: Fix alignment of ObjC string literals.
This used to interfere with AlwaysBreakBeforeMultilineStrings.

This fixes llvm.org/PR17856.

llvm-svn: 194310
2013-11-09 03:08:25 +00:00
Akira Hatanaka d1c58ed8a7 [mips] Make sure there is a chain edge dependency between loads that read
formal arguments on the stack and stores created afterwards. We need this to
ensure tail call optimized function calls do not write over the argument area
of the stack before it is read out.
 

llvm-svn: 194309
2013-11-09 02:38:51 +00:00
Nick Lewycky 59886d00ec Revert r194300 which broke the build.
llvm-svn: 194308
2013-11-09 02:01:25 +00:00
Rafael Espindola 961ba21a47 Don't emit an internal destructor that is identical to an external one.
It is not safe to emit alias to undefined (not supported by ELF or COFF), but
it is safe to rauw when the alias would have been internal or linkonce_odr.

llvm-svn: 194307
2013-11-09 01:57:21 +00:00
Juergen Ributzka 87ed906b2e [Stackmap] Materialize the jump address within the patchpoint noop slide.
This patch moves the jump address materialization inside the noop slide. This
enables patching of the materialization itself or its complete removal. This
patch also adds the ability to define scratch registers that can be used safely
by the code called from the patchpoint intrinsic. At least one scratch register
is required, because that one is used for the materialization of the jump
address. This patch depends on D2009.

Differential Revision: http://llvm-reviews.chandlerc.com/D2074

Reviewed by Andy

llvm-svn: 194306
2013-11-09 01:51:33 +00:00
Nick Kledzik 00a15d9428 [mach-o] Use LEB128 stuff from llvm/Support. No functionality change.
llvm-svn: 194305
2013-11-09 01:00:51 +00:00
Adrian Prantl a473a2ba19 Revert "Move copying of global initializers below the cloning of functions."
This would cause internal symbols that are only referenced by global initializers to be removed.

This reverts commit 194219.

llvm-svn: 194304
2013-11-09 00:43:18 +00:00
Adrian Prantl c6e97f66c1 Revert "Run clang-format on file."
This reverts commit 194219.

llvm-svn: 194303
2013-11-09 00:43:12 +00:00
Greg Clayton 854800287a Fixed up registers in debugserver.
- removed all gaps from the g/G packets
- optimized registers for x86_64 to not send/receive xmm0-xmm15 as well as ymm0-ymm15, now we only send ymm0-15 and xmm0-15 are now pseudo regs
- Fixed x86_64 floating point register gaps
- Fixed x86_64 so that xmm8-xmm15 don't overlap with ymm0-ymm3. This could lead to bad values showing in the debugger and was due to bad register info structure contents
- Fixed i386 so we only send ymm0-ymm7 and xmm0-xmm7 are now pseudo regs.
- Fixed ARM register definitions to not have any gaps
- Fixed it so value registers and invalidation registers are specified using register names which avoid games we had to play with register numbering in the ARM plugin.

llvm-svn: 194302
2013-11-09 00:33:46 +00:00
Bill Wendling e94f74f69f Use a StringRef. Saves 0.00000000000001s on execution time.
llvm-svn: 194301
2013-11-09 00:23:58 +00:00
Lang Hames 1662b832d9 Rewrite the PBQP graph data structure.
The new graph structure replaces the node and edge linked lists with vectors.
Free lists (well, free vectors) are used for fast insertion/deletion.

The ultimate aim is to make PBQP graphs cheap to clone. The motivation is that
the PBQP solver destructively consumes input graphs while computing a solution,
forcing the graph to be fully reconstructed for each round of PBQP. This
imposes a high cost on large functions, which often require several rounds of
solving/spilling to find a final register allocation. If we can cheaply clone
the PBQP graph and incrementally update it between rounds then hopefully we can
reduce this cost. Further, once we begin pooling matrix/vector values (future
work), we can cache some PBQP solver metadata and share it between cloned
graphs, allowing the PBQP solver to re-use some of the computation done in
earlier rounds.

For now this is just a data structure update. The allocator and solver still
use the graph the same way as before, fully reconstructing it between each
round. I expect no material change from this update, although it may change
the iteration order of the nodes, causing ties in the solver to break in
different directions, and this could perturb the generated allocations
(hopefully in a completely benign way).

Thanks very much to Arnaud Allard de Grandmaison for encouraging me to get back
to work on this, and for a lot of discussion and many useful PBQP test cases.

llvm-svn: 194300
2013-11-09 00:14:07 +00:00
Nick Kledzik 29f749eef8 [mach-o] reduce duplicate source code by using a templated method. No functionality change.
llvm-svn: 194299
2013-11-09 00:07:28 +00:00
Greg Clayton b35db6399d Fixed the the breakpoint test case failures.
There were 6 on darwin. All of these were related to the recent changes for exec.

llvm-svn: 194298
2013-11-09 00:03:31 +00:00
Hans Wennborg 1b6973fc99 Update macro expansion diagnostic examples to say 'expanded from:'
instead of 'instantiated from:'. The actual wording of the note was
changed in r135135.

llvm-svn: 194297
2013-11-08 23:52:29 +00:00
Rafael Espindola 23d3751170 Use rauw for all discardable aliases, not just linkonce_odr.
llvm-svn: 194296
2013-11-08 23:46:20 +00:00
Greg Clayton c28ce7828b Fixed a build warning for a missing switch case.
llvm-svn: 194295
2013-11-08 23:38:26 +00:00
Daniel Jasper 0e93cdb0d0 clang-format: Improve clang-format's detection about comment binding.
Before, existing code in the form of:

  int a; // this is a.
  // This is
  // b.
  int b;

Got turned into:

  int a; // this is a.
         // This is
  // b.
  int b;

llvm-svn: 194294
2013-11-08 23:31:14 +00:00
Juergen Ributzka 9969d3e6e8 [Stackmap] Add AnyReg calling convention support for patchpoint intrinsic.
The idea of the AnyReg Calling Convention is to provide the call arguments in
registers, but not to force them to be placed in a paticular order into a
specified set of registers. Instead it is up tp the register allocator to assign
any register as it sees fit. The same applies to the return value (if
applicable).

Differential Revision: http://llvm-reviews.chandlerc.com/D2009

Reviewed by Andy

llvm-svn: 194293
2013-11-08 23:28:16 +00:00
Nick Kledzik 1b30228994 [mach-o] revert gunk added to test cases to debug build bot failures
llvm-svn: 194292
2013-11-08 23:18:51 +00:00
Rafael Espindola 91bc73bf1a Fix name in test.
llvm-svn: 194291
2013-11-08 23:06:10 +00:00
Nick Kledzik 705cbc1733 [mach-o] fix uninitialized variable
llvm-svn: 194290
2013-11-08 23:00:26 +00:00
Nick Lewycky 22e55a0590 Remove an incorrect optimization inside Clang's IRGen. Its check to determine
whether we can safely lower a conditional operator to select was insufficient.
I've left a large comment in place to explaining the sort of problems that this
transform can encounter in clang in the hopes of discouraging others from
reimplementing it wrongly again in the future. (The test should also help with
that, but it's easy to work around any single test I might add and think that
your particular implementation doesn't miscompile any code.)

llvm-svn: 194289
2013-11-08 23:00:12 +00:00
Rafael Espindola e2ec6faa36 If a linkonce_odr dtor/ctor is identical to another one, just rauw.
Unlike an alias a rauw is always safe, so we don't need to avoid this
optimization when the replacement is not know to be available in every TU.

llvm-svn: 194288
2013-11-08 22:59:46 +00:00
Sean Silva 60dccf2d06 Py3k compat for clang-format Sublime Text extension.
Sublime Text 2 uses Python 2.6
Sublime Text 3 uses Python 3.3

The `print` function has been available as a __future__ import since
2.6, so use it.

Patch by Johan Engelen!

llvm-svn: 194287
2013-11-08 22:46:56 +00:00
Pedro Artigas 71f87cb33a increase the accuracy of register pressure computation in the presence of dead definitions by using live intervals, if available, to identify dead definitions and proceed accordingly.
llvm-svn: 194286
2013-11-08 22:46:28 +00:00
Jim Grosbach 2fca51d3b4 X86: Assembly files with .cfi_cfa_def shouldn't hit llvm_unreachable()
On darwin, when trying to create compact unwind info, a .cfi_cfa_def
directive would case an llvm_unreachable() to be hit. Back off when we
see this directive and generate the regular DWARF style eh_frame.

rdar://15406518

llvm-svn: 194285
2013-11-08 22:33:06 +00:00
Lang Hames 8a065703ef Fix some minor issues with r194282 to get the tree healthy again.
llvm-svn: 194284
2013-11-08 22:30:52 +00:00
Bill Wendling 56e82a080b Fix grammar-o.
llvm-svn: 194283
2013-11-08 22:15:02 +00:00
Lang Hames 3078977d28 Add a method to get the object-file appropriate stack map section.
Thanks to Eric Christopher for the tips on the appropriate way to do this.

llvm-svn: 194282
2013-11-08 22:14:49 +00:00
Richard Smith 68b1453ce0 Fix %select numbering confusion between diagnostic and Diag call.
llvm-svn: 194281
2013-11-08 21:51:24 +00:00
Nick Kledzik 5eb9bfc863 [mach-o] add debugging to help explain one build bot failure
llvm-svn: 194280
2013-11-08 21:43:28 +00:00
Reid Kleckner 5bc6d0fbe4 Make -fdump-vtable-layouts print to stdout, not stderr
This makes it consistent with -fdump-record-layouts, which was moved to
outs() in r186219.  My reasoning for going with stdout is that when one
of these options is present, the layouts are really a program output,
and shouldn't be interleaved with diagnostics, which are on stderr.

Reviewers: timurrrr

Differential Revision: http://llvm-reviews.chandlerc.com/D2127

llvm-svn: 194279
2013-11-08 21:28:00 +00:00
Michael J. Spencer b8ab9f52ca Add explictly exported atoms and export R_*_COPY'ed atoms.
llvm-svn: 194278
2013-11-08 21:04:20 +00:00
Hal Finkel 1a642aef37 Remove dead code from LoopUnswitch
LoopUnswitch's code simplification routine has logic to convert conditional
branches into unconditional branches, after unswitching makes the condition
constant, and then remove any blocks that renders dead. Unfortunately, this
code is dead, currently broken, and furthermore, has never been alive (at least
as far back at 2006).

No functionality change intended.

llvm-svn: 194277
2013-11-08 19:58:21 +00:00
Daniel Jasper 9e5ede0f8b clang-format: Improve formatting of operators forced to new lines.
Before:
  unsigned ContentSize =
      sizeof(int16_t) // DWARF ARange version number
      +
      sizeof(int32_t) // Offset of CU in the .debug_info section
      +
      sizeof(int8_t) // Pointer Size (in bytes)
      +
      sizeof(int8_t); // Segment Size (in bytes)

After:
  unsigned ContentSize =
      sizeof(int16_t)   // DWARF ARange version number
      + sizeof(int32_t) // Offset of CU in the .debug_info section
      + sizeof(int8_t)  // Pointer Size (in bytes)
      + sizeof(int8_t); // Segment Size (in bytes)

This fixes llvm.org/PR17687.

llvm-svn: 194276
2013-11-08 19:56:28 +00:00
DeLesley Hutchins e73d6b605c Thread-safety analysis: check guarded_by and pt_guarded_by on array access.
Currently supported only with -Wthread-safety-beta.

llvm-svn: 194275
2013-11-08 19:42:01 +00:00
Richard Smith 003c5e1db9 Untabify.
llvm-svn: 194274
2013-11-08 19:03:29 +00:00
Richard Smith cd556eb265 Issue a diagnostic if we see a templated friend declaration that we do not
support.

llvm-svn: 194273
2013-11-08 18:59:56 +00:00
Arnaud A. de Grandmaison f7a60a8e01 Revert "CalculateSpillWeights does not need to be a pass"
Temporarily revert my previous commit until I understand why it breaks 3 target tests.

llvm-svn: 194272
2013-11-08 18:19:19 +00:00
Quentin Colombet b06a0ed4b0 [VirtRegMap] Fix for PR17825. Do not ignore noreturn definitions when setting
isPhysRegUsed if the unwind information is required.
Indeed, the runtime may need a correct stack to be able to unwind the call.

llvm-svn: 194271
2013-11-08 18:14:17 +00:00
Richard Barton 5f54c655c1 Make PrintAsmOperand call to the superclass to handle 'n' and 'c' operand modifiers.
llvm-svn: 194270
2013-11-08 18:09:57 +00:00
Arnaud A. de Grandmaison ed812f6590 CalculateSpillWeights does not need to be a pass
Based on discussions with Lang Hames and Jakob Stoklund Olesen at the hacker's lab, and in the light of upcoming work on the PBQP register allocator, it was though that CalcSpillWeights does not need to be a pass. This change will enable to customize / tune the spill weight computation depending on the allocator.

Update the documentation style while there.

No functionnal change.

llvm-svn: 194269
2013-11-08 17:56:29 +00:00
Daniel Jasper 98fb6e1b9f clang-format: Don't auto-break short macros in WebKit style.
This fixes llvm.org/PR17842.

llvm-svn: 194268
2013-11-08 17:33:27 +00:00
Daniel Jasper 4478e5245e clang-format: Improve linebreaking and indentation for ObjC calls.
Before:
  popup_wdow_.reset([[RenderWidgetPopupWindow alloc]
      iniithContentRect:
          NSMakRet(origin_global.x, origin_global.y, pos.width(), pos.height())
                syeMask:NSBorderlessWindowMask
                  bking:NSBackingStoreBuffered
                    der:NO]);
  [self param:function( //
      parameter)]

After:
  popup_wdow_.reset([[RenderWidgetPopupWindow alloc]
      iniithContentRect:NSMakRet(origin_global.x, origin_global.y, pos.width(),
                                 pos.height())
                syeMask:NSBorderlessWindowMask
                  bking:NSBackingStoreBuffered
                    der:NO]);
  [self param:function( //
                  parameter)]

llvm-svn: 194267
2013-11-08 17:33:24 +00:00