1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
Commit Graph

99002 Commits

Author SHA1 Message Date
Saleem Abdulrasool
4af9bf355f ARM IAS: support #:{lower,upper}16: for GNU compatibility
The GNU assembler supports prefixing the expression with a '#' to indiciate that
the value that is being moved is infact a constant.  This improves the
compatibility of the integrated assembler's parser for this.

llvm-svn: 198916
2014-01-10 04:38:40 +00:00
Saleem Abdulrasool
54cac13cc3 ARM IAS: support GNU extension for ldrd, strd
The GNU assembler has an extension that allows for the elision of the paired
register (dt2) for the LDRD and STRD mnemonics.  Add support for this in the
assembly parser.  Canonicalise the usage during the instruction parsing from
the specified version.

llvm-svn: 198915
2014-01-10 04:38:35 +00:00
Saleem Abdulrasool
b7a097a617 ARM IAS: support implicit immediate 0s for {LD,ST}R{B,}T
The ARM ARM indicates the mnemonics as follows:

  ldrbt{<c>}{<q>} <Rt>, [<Rn>], {, #+/-<imm>}
  ldrt{<c>}{<q>} <Rt>, [<Rn>] {, #+/-<imm>}
  strbt{<c>}{<q>} <Rt>, [<Rn>] {, #<imm>}
  strt{<c>}{<q>} <Rt>, [<Rn>] {, #+/-<imm>}

This improves the parser to deal with the implicit immediate 0 for the mnemonics
as per the specification.

Thanks to Joerg Sonnenberger for the tests!

llvm-svn: 198914
2014-01-10 04:38:31 +00:00
Venkatraman Govindaraju
b0841deda2 [Sparc] Emit retl/ret instead of jmp instruction. It improves the readability of the assembly generated.
llvm-svn: 198910
2014-01-10 02:55:27 +00:00
Venkatraman Govindaraju
c4cec3f2a4 [Sparc] Add support for parsing jmpl instruction and make indirect call and jmp instructions as aliases to jmpl.
llvm-svn: 198909
2014-01-10 01:48:17 +00:00
David Blaikie
7af36c3a6d Revert "Revert r198851, "Prototype of skeleton type units for fission""
This reverts commit r198865 which reverts r198851.

ASan identified a use-of-uninitialized of the DwarfTypeUnit::Ty variable
in skeleton type units.

llvm-svn: 198908
2014-01-10 01:38:41 +00:00
Kevin Enderby
5c3b5e0470 Fix a bug with the ARM thumb2 CBNZ and CBNZ instructions that
branch to the next instruction.  This can not be encoded but can be
turned into a NOP.

rdar://15062072

llvm-svn: 198904
2014-01-10 00:43:32 +00:00
Chandler Carruth
f17fdf0afe Update the developer policy to more clearly spell out the steps for
contributors to submit patches to the LLVM project. Thanks to Danny,
Chris, Alp, and others for reviewing.

llvm-svn: 198901
2014-01-10 00:08:34 +00:00
Justin Bogner
551f5d2c7f Bitcode: Fix a typo in an assert
llvm-svn: 198894
2014-01-09 22:02:05 +00:00
Venkatraman Govindaraju
ae0e1515ef [Sparc] Multiclass for loads/stores. No functionality change intended.
llvm-svn: 198893
2014-01-09 21:49:18 +00:00
Evan Cheng
8ece7aa601 Clean up an inconsistency in v7s feature default.
llvm-svn: 198889
2014-01-09 20:24:00 +00:00
Rafael Espindola
8d5e2752b6 Add a unit test for the copy constructor.
I would not normally add tests like these, but the copy constructor is not
used at all in our codebase with c++11, so having this tests might prevent
breaking the c++03 build again.

llvm-svn: 198886
2014-01-09 19:47:39 +00:00
Alp Toker
671c9fe7b0 Revert "Disable LeakSanitizer in TableGen binaries, see PR18325"
To declare or define reserved identifers is undefined behaviour in standard
C++. This needs to be addressed in compiler-rt before it can be used in LLVM.

See the list discussion for details.

This reverts commit r198858.

llvm-svn: 198884
2014-01-09 19:40:55 +00:00
Nadav Rotem
0ee224c122 Re-remove dead code.
This reverts r198854.

llvm-svn: 198879
2014-01-09 19:22:07 +00:00
Rafael Espindola
f8bce2c4fa Update example to be more idiomatic.
llvm-svn: 198872
2014-01-09 14:40:43 +00:00
NAKAMURA Takumi
d87c5b8748 Revert r198851, "Prototype of skeleton type units for fission"
It caused undefined behavior. DwarfTypeUnit::Ty might not be initialized properly, I guess.

llvm-svn: 198865
2014-01-09 13:08:00 +00:00
Stepan Dyatkovskiy
3ed8a09218 Fixed old typo in ScalarEvolution, that caused wrong SCEVs zext operation.
Detailed description is here:
http://llvm.org/bugs/show_bug.cgi?id=18000#c16

For participation in bugfix process special thanks to David Wiberg.

llvm-svn: 198863
2014-01-09 12:26:12 +00:00
Richard Sandiford
9a2e030d71 [SystemZ] Fix RNSBG bug introduced by r197802
The zext handling added in r197802 wasn't right for RNSBG.  This patch
restricts it to ROSBG, RXSBG and RISBG.  (The tests for RISBG were added
in r197802 since RISBG was the motivating example.)

llvm-svn: 198862
2014-01-09 11:28:53 +00:00
Richard Sandiford
62f3dcdad8 Handle masked rotate amounts
At the moment we expect rotates to have the form:

   (or (shl X, Y), (shr X, Z))

where Y == bitsize(X) - Z or Z == bitsize(X) - Y.  This form means that
the (or ...) is undefined for Y == 0 or Z == 0.  This undefinedness can
be avoided by using Y == (C * bitsize(X) - Z) & (bitsize(X) - 1) or
Z == (C * bitsize(X) - Y) & (bitsize(X) - 1) for any integer C
(including 0, the most natural choice).

llvm-svn: 198861
2014-01-09 10:56:42 +00:00
Richard Sandiford
e9b9f0fa27 Match the InstCombine form of rotates by X+C
InstCombine converts (sub 32, (add X, C)) into (sub 32-C, X),
so a rotate left of a 32-bit Y by X+C could appear as either:

   (or (shl Y, (add X, C)), (shr Y, (sub 32, (add X, C))))

without InstCombine or:

   (or (shl Y, (add X, C)), (shr Y, (sub 32-C, X)))

with it.

We already matched the first form.  This patch handles the second too.

llvm-svn: 198860
2014-01-09 10:49:40 +00:00
Kostya Serebryany
dfd3aa3e35 Disable LeakSanitizer in TableGen binaries, see PR18325
llvm-svn: 198858
2014-01-09 09:26:26 +00:00
Nadav Rotem
4b218fdee6 Revert r198819 - "Remove dead code."
llvm-svn: 198854
2014-01-09 07:50:34 +00:00
Lang Hames
a1f22f9a72 Fix accidental use of the exotic "std::string::back()" method. Turns out it's
new in C++11.

llvm-svn: 198853
2014-01-09 05:29:59 +00:00
Lang Hames
30a091cf50 Add an "-object-cache-dir=<string>" option to LLI. This option specifies the
root path to which object files managed by the LLIObjectCache instance should be
written. This option defaults to "", in which case objects are cached in the
same directory as the bitcode they are derived from.

The load-object-a.ll test has been rewritten to use this option to support
testing in environments where the test directory is not writable.

llvm-svn: 198852
2014-01-09 05:24:05 +00:00
David Blaikie
fbb88d8a1f Prototype of skeleton type units for fission
llvm-svn: 198851
2014-01-09 05:08:28 +00:00
David Blaikie
d9fe95178b llvm-dwarfdump: type unit dwo support
llvm-svn: 198850
2014-01-09 05:08:24 +00:00
Saleem Abdulrasool
1416d93593 llvm-readobj: address review comments for ARM EHABI printing
Rename bytecode to opcodes to make it more clear.  Change an impossible case to
llvm_unreachable instead.  Avoid allocation of a buffer by modifying the
PrintOpcodes iteration.

llvm-svn: 198848
2014-01-09 04:31:18 +00:00
Saleem Abdulrasool
a66068772d llvm-readobj: fix endianness
Explicitly handle endianness to ensure that bytes are read properly on
big-endian systems.

llvm-svn: 198847
2014-01-09 04:31:14 +00:00
David Blaikie
cc6bbc4be1 DwarfDebug: Refactor out common skeleton construction code to be reused for type unit skeletons.
llvm-svn: 198846
2014-01-09 04:28:46 +00:00
Richard Smith
79e98116f7 Extend llvm::AlignedCharArrayUnion to support up to 10 arguments, as required by Clang's APValue.
llvm-svn: 198844
2014-01-09 03:28:55 +00:00
David Blaikie
9315f16302 Reformatting for r198842
llvm-svn: 198843
2014-01-09 03:24:13 +00:00
David Blaikie
510d8feaa6 DwarfUnit: Rename "Node" to "CUNode" and propagate it through DwarfTypeUnit as well.
Since we'll now also need the split dwarf file name along with the
language in DwarfTypeUnits, just use the whole DICompileUnit rather than
explicitly handling each field needed.

llvm-svn: 198842
2014-01-09 03:23:41 +00:00
David Blaikie
3697d3bb2a Revert "DwarfUnit: Move the DICompileUnit Node to the DwarfCompileUnit only"
This reverts commit r198830.

Decided to go a different way with this...

llvm-svn: 198841
2014-01-09 03:03:27 +00:00
Chandler Carruth
f0897d8b1b [PM] Rename this source file to something a bit more generic before
I add support for the new pass manager to it.

llvm-svn: 198838
2014-01-09 02:39:45 +00:00
Chandler Carruth
53468087f3 Put the functionality for printing a value to a raw_ostream as an
operand into the Value interface just like the core print method is.
That gives a more conistent organization to the IR printing interfaces
-- they are all attached to the IR objects themselves. Also, update all
the users.

This removes the 'Writer.h' header which contained only a single function
declaration.

llvm-svn: 198836
2014-01-09 02:29:41 +00:00
David Blaikie
4731cd254e DwarfUnit: Move the DICompileUnit Node to the DwarfCompileUnit only
It's unused in DwarfTypeUnit, as is expected.

llvm-svn: 198830
2014-01-09 01:20:14 +00:00
Eric Christopher
bc2db2cd7b Remove the test for endianness in configure.ac and regenerate.
llvm-svn: 198825
2014-01-09 01:09:57 +00:00
Lang Hames
0a2238104b Replace fstream use with raw_fd_ostream.
llvm-svn: 198821
2014-01-09 00:47:54 +00:00
Rafael Espindola
13382e6515 Remove dead code.
llvm-svn: 198819
2014-01-09 00:32:54 +00:00
Rafael Espindola
8934d0e1d7 Use the existing typedef to avoid forming a reference to a reference.
llvm-svn: 198817
2014-01-09 00:25:25 +00:00
Andrew Trick
304bd525cb llvm.experimental.stackmap: fix encoding of large constants.
In the stackmap format we advertise the constant field as signed.
However, we were determining whether to promote to a 64-bit constant
pool based on an unsigned comparison.

This fix allows -1 to be encoded as a small constant.

llvm-svn: 198816
2014-01-09 00:22:31 +00:00
David Blaikie
a9ddd4efa6 Simplify/collapse/denest a conditions/blocks.
llvm-svn: 198813
2014-01-09 00:13:35 +00:00
David Blaikie
52f79eb8c1 llvm-dwarfdump: reorder dwo sections to immediately proceed their non-dwo equivalents
This makes it easier to write a test that's mostly shared between
fission and non-fission (using FileCheck's multiple prefix support).

llvm-svn: 198806
2014-01-08 23:29:59 +00:00
Rafael Espindola
9221326f8e Fix the C++03 build.
With c++11 we never instantiate the copy constructor.

llvm-svn: 198803
2014-01-08 22:27:04 +00:00
Rafael Espindola
721b465b58 Use getError and remove the error_code operator.
llvm-svn: 198799
2014-01-08 22:03:39 +00:00
Chandler Carruth
a41aa8b867 Remove vestigal bits of MC from the mangler. It no longer uses this, and
having the include could cause weird layering problems between the IR
and MC libraries.

llvm-svn: 198796
2014-01-08 21:59:22 +00:00
Hal Finkel
c5d78d63ff Conservatively handle multiple MMOs in MIsNeedChainEdge
MIsNeedChainEdge, which is used by -enable-aa-sched-mi (AA in misched), had an
llvm_unreachable when -enable-aa-sched-mi is enabled and we reach an
instruction with multiple MMOs. Instead, return a conservative answer. This
allows testing -enable-aa-sched-mi on x86.

Also, this moves the check above the isUnsafeMemoryObject checks.
isUnsafeMemoryObject is currently correct only for instructions with one MMO
(as noted in the comment in isUnsafeMemoryObject):

  // We purposefully do no check for hasOneMemOperand() here
  // in hope to trigger an assert downstream in order to
  // finish implementation.

The problem with this is that, had the candidate edge passed the
"!MIa->mayStore() && !MIb->mayStore()" check, the hoped-for assert would never
happen (which could, in theory, lead to incorrect behavior if one of these
secondary MMOs was volatile, for example).

llvm-svn: 198795
2014-01-08 21:52:02 +00:00
Matt Arsenault
f3e05f6fde Move declaration of variables down to first use.
llvm-svn: 198794
2014-01-08 21:47:14 +00:00
Matt Arsenault
c72dd5807f Add missing definitions of key_type and value_type to DenseSet.
This matches std::set and allows using DenseSet with the functions
in SetOperations.h

llvm-svn: 198793
2014-01-08 21:38:04 +00:00
Rafael Espindola
03d710138d Add get and getError methods to ErrorOr.
ErrorOr is modeled after boost::optional which has a get method.

llvm-svn: 198792
2014-01-08 21:17:09 +00:00