Commit Graph

6204 Commits

Author SHA1 Message Date
Craig Topper
b1618d24d3 [TableGen] Take a parameter by reference instead of pointer so we don't have to add & on both callers. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305807 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-20 16:34:37 +00:00
Craig Topper
c4a82c8d4b [TableGen] Use range based for loop. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305806 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-20 16:34:35 +00:00
Yuka Takahashi
bc5df29fed [GSoC] Flag value completion for clang
This is patch for GSoC project, bash-completion for clang.

To use this on bash, please run `source clang/utils/bash-autocomplete.sh`.
bash-autocomplete.sh is code for bash-completion.

In this patch, Options.td was mainly changed in order to add value class
in Options.inc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305805 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-20 16:31:31 +00:00
Daniel Sanders
a4b49d696a [globalisel][tablegen] Add support for COPY_TO_REGCLASS.
Summary:
As part of this
* Emitted instructions now have named MachineInstr variables associated
  with them. This isn't particularly important yet but it's a small step
  towards multiple-insn emission.
* constrainSelectedInstRegOperands() is no longer hardcoded. It's now added
  as the ConstrainOperandsToDefinitionAction() action. COPY_TO_REGCLASS uses
  an alternate constraint mechanism ConstrainOperandToRegClassAction() which
  supports arbitrary constraints such as that defined by COPY_TO_REGCLASS.

Reviewers: ab, qcolombet, t.p.northover, rovka, kristof.beyls, aditya_nandakumar

Reviewed By: ab

Subscribers: javed.absar, igorb, llvm-commits

Differential Revision: https://reviews.llvm.org/D33590



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305791 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-20 12:36:34 +00:00
Pengxuan Zheng
a4bbfa963d [test-release.sh] Enable Polly by default
Reviewers: grosser, hans, zinob, bollu

Reviewed By: grosser, hans

Subscribers: tstellar, llvm-commits

Differential Revision: https://reviews.llvm.org/D34306

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305763 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-20 01:04:25 +00:00
Peter Collingbourne
9a9e3b8289 Revert r305598, "utils: Add a git-r utility for mapping svn revisions to git revisions in the monorepo."
$ git revert `git r 305598`

We need to decide whether we want development tools to be written in
Go first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305741 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-19 20:43:09 +00:00
Simon Pilgrim
5aac6c6367 Use range for loops. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305693 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-19 13:24:12 +00:00
Peter Collingbourne
b8f8fa1c8c utils: Add a git-r utility for mapping svn revisions to git revisions in the monorepo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305598 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-16 22:15:18 +00:00
Krzysztof Parzyszek
773e19ab52 [TableGen] Do not assume that the first variant is the original pattern
The variant generation for commutative/associative patterns would simply
delete the first output from the list assuming that it was identical to
the original pattern. This does not have to be the case, and a legitimate
variant could actually be removed that way. 


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305556 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-16 13:44:34 +00:00
Tom Stellard
aa27e87c45 test-release.sh: Run the test-suite using phase3 clang
Summary: We were using the system compiler to run the test suite.

Reviewers: hansw

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D34246

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305525 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-15 23:05:21 +00:00
Sanjay Patel
59e73620b8 [utils] remove ability to generate llc check lines from update_test_checks.py
The dream of a unified check-line auto-generator for all phases of compilation is dead.
The llc script has already diverged to be better at its goal, so having 2 scripts that
do almost the same thing just causes confusion. Now, this script will only work with 
opt to produce check lines for IR transforms.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305208 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-12 17:44:30 +00:00
Brian Gesiak
23ff0950e1 [opt-viewer] Include default values in help output
Summary:
Python's argparse module includes a `%(default)s` format specifier that
can be used to print the default value of an option in its help text.
Use this for opt-viewer utilities' `--jobs` arguments.

Reviewers: anemet

Reviewed By: anemet

Subscribers: llvm-commits, fhahn

Differential Revision: https://reviews.llvm.org/D34081

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305155 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-10 21:33:27 +00:00
Tom Stellard
e99f33afd9 test-release.sh: Remove workaround for test-suite build
Summary: We aren't actually building the test suite, so this isn't needed.

Reviewers: rengolin, hansw

Reviewed By: rengolin

Subscribers: rengolin, llvm-commits

Differential Revision: https://reviews.llvm.org/D29840

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305017 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-08 21:31:59 +00:00
Filipe Cabecinhas
6a60571869 PR33331 - opt-viewer.py produces broken output for directories with spaces
Fix: Properly quote href attributes.

Patch by Simon Whittaker!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304919 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-07 14:57:20 +00:00
Benjamin Kramer
5a998740d1 [FileCheck] Don't scan past the closing CHECK-DAG for CHECK-NOT inside CHECK-DAG
If there's enough data in fron of it the skipped region would just
become arbitrarily large, and we scan for the CHECK-NOT everywhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304900 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-07 12:06:45 +00:00
Chandler Carruth
565cfe059c [x86] Revert the X86FoldTablesEmitter due to more miscompiles.
In testing, we've found yet another miscompile caused by the new tables.
And this one is even less clear how to fix (we could teach it to fold
a 16-bit load instead of the 32-bit load it wants, or block folding
entirely).

Also, the approach to excluding instructions seems increasingly to not
scale well.

I have left a more detailed analysis on the review log for the original
patch (https://reviews.llvm.org/D32684) along with suggested path
forward. I will land an additional test case that I wrote which covers
the code that was miscompiling (folding into the output of `pextrw`) in
a subsequent commit to keep this a pure revert.

For each commit reverted here, I've restricted the revert to the
non-test code touching the x86 fold table emission until the last commit
where I did revert the test updates. This means the *new* test cases
added for `insertps` and `xchg` remain untouched (and continue to pass).

Reverted commits:
r304540: [X86] Don't fold into memory operands into insertps in the ...
r304347: [TableGen] Adapt more places to getValueAsString now ...
r304163: [X86] Don't fold away the memory operand of an xchg.
r304123: Don't capture a temporary std::string in a StringRef.
r304122: Resubmit "[X86] Adding new LLVM TableGen backend that ..."

Original commit was in r304088, and after a string of fixes was reverted
previously in r304121 to fix build bots, and then re-landed in r304122.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304762 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-06 02:15:31 +00:00
Peter Collingbourne
6ef4e40d48 git-llvm: Update the project list for the llvm-project-20170507 monorepo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304691 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-04 22:18:57 +00:00
David Blaikie
8c1cc236e0 Make the Twine pretty-printer work with GDB 7.11
Apparently ::NodeKind is sometimes part of the name in GDB.
Without this patch I get the following error message from GDB:
`Unhandled NodeKind llvm::Twine::NodeKind::EmptyKind`.

Patch by Alexander Richardson!

Differential Revision: https://reviews.llvm.org/D32795

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304675 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-04 03:27:12 +00:00
Alex Lorenz
c9c72aa1f6 [lit][macOS] Add a utility function to find the platform SDK version
on macOS

This function will be used to tie Clang's Integeration tests to a particular
SDK version. See https://reviews.llvm.org/D32178 for more context.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304541 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-02 11:21:37 +00:00
Benjamin Kramer
f4cc8004bc [X86] Don't fold into memory operands into insertps in the generated folding tables.
insertps behaves differently, the register form selects from an input
register based on the immediate operand while the memory form just loads
the given address. We have custom code to change the immediate in cases
where that's legal, so completely remove insertps from the generated
tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304540 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-02 10:50:22 +00:00
Craig Topper
9ca534daa4 [TableGen] Remove code for renaming anonymous register classes as it can never execute.
It tried to detect 9 letters (the length of anonymous) followed by a period. But anonymous classes start with "anonymous_" rather than "anonymous." these days.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304387 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-01 06:56:13 +00:00
Craig Topper
14e210f062 [TableGen] Use StringRef to capture getValueAsString in a couple more places. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304386 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-01 06:56:11 +00:00
Craig Topper
2a129871cc [TableGen] Adapt more places to getValueAsString now returning a StringRef instead of a std::string.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304347 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-31 21:12:46 +00:00
Craig Topper
c469be384c [TableGen] Make Record::getValueAsString and getValueAsListOfStrings return StringRefs instead of std::string
Internally both these methods just return the result of getValue on either a StringInit or a CodeInit object. In both cases this returns a StringRef pointing to a string allocated in the BumpPtrAllocator so its not going anywhere. So we can just pass that StringRef along.

This is a fairly naive patch that targets just the build failures caused by this change. There's additional work that can be done to avoid creating std::string at call sites that still think getValueAsString returns a std::string. I'll try to clean those up in future patches.

Differential Revision: https://reviews.llvm.org/D33710

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304325 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-31 19:01:11 +00:00
Craig Topper
70ac7747fa [TableGen] Introduce DagInit::getArgs that returns an ArrayRef. Use it to fix 80 column violations in arg_begin/arg_end. Remove DagInit::args and use getArgs instead. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304177 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-29 21:49:34 +00:00
Benjamin Kramer
3259254476 [X86] Don't fold away the memory operand of an xchg.
xchg with a mem operand has different locking semantics. If we unfold it
into a xchg r,r we will loose the implicit lock. Likewise we never want
to fold a register xchg into a memory one as it would be a lot slower.

This triggers during LLVM selfhost.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304163 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-29 16:25:20 +00:00
Zachary Turner
1fa6eae52d Don't capture a temporary std::string in a StringRef.
This fixes the breakages in llvm-tblgen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304123 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-29 02:20:12 +00:00
Zachary Turner
5f67424f80 Resubmit "[X86] Adding new LLVM TableGen backend that generates the X86 backend memory folding tables."
This was reverted due to buildbot breakages and I was not familiar
with this code to investigate it.  But while trying to get a
useful backtrace for the author, it turns out the fix was very
obvious.  Resubmitting this patch as is, and will submit the
fix in a followup so that the fix is not hidden in the larger
CL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304122 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-29 02:19:37 +00:00
Zachary Turner
0279796588 Revert "[X86] Adding new LLVM TableGen backend that generates the X86 backend memory folding tables."
This reverts commit 28cb1003507f287726f43c771024a1dc102c45fe as well
as all subsequent followups.  llvm-tblgen currently segfaults with
this change, and it seems it has been broken on the bots all
day with no fixes in preparation.  See, for example:

http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304121 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-29 01:48:53 +00:00
Craig Topper
1cd10499fc [TableGen][X86] Fix formatting I accidentally messed up in r304099. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304115 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-28 23:47:17 +00:00
Craig Topper
7193e15c38 [TableGen][X86] Use CHAR_BIT with sizeof instead of hardcoded 8. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304100 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-28 18:24:43 +00:00
Craig Topper
d60f6d272b [TableGen][X86] Mark a couple global tables as const. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304099 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-28 18:24:41 +00:00
Craig Topper
3d21edd814 [TableGen][X86] Improve formatting of the fold table output by indenting the body of the table and adding blank lines between tables. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304098 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-28 18:24:39 +00:00
Craig Topper
8595928974 [TableGen][X86] Add an llvm_unreachable to a switch so we get an error if we need expansion in the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304097 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-28 18:24:37 +00:00
Craig Topper
c10cab0683 [TableGen][X86] Remove unnecessary std::string creations. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304096 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-28 18:24:35 +00:00
Craig Topper
3443b3b2d8 [TableGen][X86] Replace a global std::vector with a regular array. llvm::find works on arrays, just need to use std::end to check the result.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304095 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-28 18:24:32 +00:00
Craig Topper
fb26ad64d8 [TableGen][X86] getValueAsString returns a std::string not a StringRef. Capture it that way to avoid a StringRef to a temporary.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304093 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-28 17:48:41 +00:00
Ayman Musa
0ccceac14c [X86] Adding new LLVM TableGen backend that generates the X86 backend memory folding tables.
X86 backend holds huge tables in order to map between the register and memory forms of each instruction.
This TableGen Backend automatically generated all these tables with the appropriate flags for each entry.

Differential Revision: https://reviews.llvm.org/D32684



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304088 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-28 12:55:36 +00:00
Dimitry Andric
9cd70d945c Return a lit.Test.Result object from TestRunner's executeShTest()
Summary:
For various clang analyzer tests, which were unsupported, I got lit
exceptions, similar to the following:

    Exception during script execution:
    Traceback (most recent call last):
      File "utils/lit/lit/run.py", line 190, in execute_test
        result = test.config.test_format.execute(test, lit_config)
      File "tools/clang/test/Analysis/analyzer_test.py", line 11, in execute
        if result.code == lit.Test.FAIL:
    AttributeError: 'tuple' object has no attribute 'code'

This is because executeShTest() in utils/lit/lit/TestRunner.py is
supposed to return a lit.Test.Result object, but in case of unsupported
tests, it returns a plain tuple.

Fix this by returning a properly initialized lit.Test.Result object
instead.

Reviewers: rnk, rafael, modocache

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D33579

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303943 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-25 23:56:44 +00:00
Galina Kistanova
ebc10e3a25 Fixed nondeterminism in RuleMatcher::emit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303829 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-25 01:51:53 +00:00
Zachary Turner
69916e12b3 git-llvm script should add .exe on Windows.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303708 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-24 00:28:46 +00:00
Rui Ueyama
30395dd637 [git-llvm] Check if svn is installed.
The error message that git-llvm script prints out when svn is missing
is very cryptic. I spent a fair amount of time to find what was wrong
with my environment. It looks like many newcomers also exprienced a
hard time to submit their first patches due to this error.

This patch adds a more user-friendly error message.

Differential Revision: https://reviews.llvm.org/D33458

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303696 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-23 21:50:40 +00:00
Francis Visoiu Mistrih
78c24559f4 abtest: remove duplicate script
This is fixing a mistake from r303690.

Differential Revision: https://reviews.llvm.org/D33303

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303692 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-23 21:28:41 +00:00
Francis Visoiu Mistrih
3a50f77d96 AsmPrinter: mark the beginning and the end of a function in verbose mode
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303690 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-23 21:22:16 +00:00
Tom Stellard
59b664b197 merge-request.sh: Use https url for bugzilla
With the http url, the script fails with:

Connection lost/failed: 411 Client Error: Length Required

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303685 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-23 20:35:38 +00:00
Daniel Sanders
8eeef874d9 Fix unused variable warnings after r303678
This should fix lld-x86_64-darwin13



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303683 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-23 20:02:48 +00:00
Daniel Sanders
50acddba23 [globalisel][tablegen] Add support for (set $dst, 1) and test X86's OptForSize predicate.
Summary:
It's rare but a small number of patterns use IntInit's at the root of the match.
On X86, one such rule is enabled by the OptForSize predicate and causes the
compiler to use the smaller:
	%0 = MOV32r1
instead of the usual:
	%0 = MOV32ri 1

This patch adds support for matching IntInit's at the root and uses this as a
test case for the optsize attribute that was implemented in r301750

Reviewers: qcolombet, ab, t.p.northover, rovka, kristof.beyls, aditya_nandakumar

Reviewed By: qcolombet

Subscribers: igorb, llvm-commits

Differential Revision: https://reviews.llvm.org/D32791

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303678 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-23 19:33:16 +00:00
Daniel Sanders
32e52f525a Revert r303259 - [globalisel][tablegen] Import rules containing intrinsic_wo_chain.
It's causing some buildbots to timeout whenever tablegen needs re-compilation,
particularly those with -fsanitize=memory but not only them. A compile time
regression was expected since it triples the amount of SelectionDAG rules we
are able to import but it's currently too high.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303542 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-22 10:14:33 +00:00
Zachary Turner
435c118e77 [lit] Take the last error when executing pipelines.
This seems to have been present since the beginning of time,
which is quite surprising.  The symptom was this: Suppose you
have a test with a run line that looks like this:

  RUN: foo | FileCheck %s

foo prints some output and then due to a bug in the program it
asserts.  On Windows this results in the program returning a
negative exit code.  But if enough output had been printed
already by the tool so that the FileCheck match would succeed
then FileCheck would return 0, and because of bad logic in
lit this 0 return value would overwrite the failed return
value from previous items in the pipeline.  This only happened
with negative exit codes.

The most sensible behavior is to just take whatever the first
exit code is.  There is no logical ordering defined on exit
codes, so comparing with < and > does not make a lot of sense.
Instead, as soon as we find the first non-successful return
value, that should be the result of the entire expression.

This fixes the issue, as now tests which fail on non-Windows
platforms also fail for me on Windows as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303440 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-19 18:12:07 +00:00
Reid Kleckner
71f289771f [git-llvm] Don't attempt to propget files that don't exist yet in SVN
svn propget will fail halfway through, and the patch will fail to apply.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303359 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-18 17:17:17 +00:00