summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [EarlyCSE] Teach about CSE'ing over invariant.start intrinsicsAnna Thomas2016-08-092-0/+84
| | | | | | | | | | | | | | Summary: Teach EarlyCSE about invariant.start intrinsic. Specifically, we can perform store-load, load-load forwarding over this call. Reviewers: majnemer, reames, dberlin, sanjoy Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D23268 llvm-svn: 278153
* [llvm-cov] Swapped the line and count columns.Ying Yi2016-08-098-142/+142
| | | | | | | | | In the coverage report, the line and count columns have been swapped to make it more readable. A follow-up commit in compiler-rt is needed Differential Revision: https://reviews.llvm.org/D23281 llvm-svn: 278152
* [OpenCL][AMDGPU] Add support for -cl-denorms-are-zeroYaxun Liu2016-08-096-3/+46
| | | | | | | | | | | | Adjust target features for amdgcn target when -cl-denorms-are-zero is set. Denormal support is controlled by feature strings fp32-denormals fp64-denormals in amdgcn target. If -cl-denorms-are-zero is not set and the command line does not set fp32/64-denormals feature string, +fp32-denormals +fp64-denormals will be on for GPU's supporting them. A new virtual function virtual void TargetInfo::adjustTargetOptions(const CodeGenOptions &CGOpts, TargetOptions &TargetOpts) const is introduced to allow adjusting target option by codegen option. Differential Revision: https://reviews.llvm.org/D22815 llvm-svn: 278151
* update to use FileCheck and auto-generate checksSanjay Patel2016-08-091-20/+38
| | | | llvm-svn: 278150
* Re-apply r278065 (Weak symbol support in RuntimeDyld) with a fix for ELF.Lang Hames2016-08-097-2/+93
| | | | llvm-svn: 278149
* Add a missing -no-canonical-prefixes.Benjamin Kramer2016-08-091-1/+1
| | | | llvm-svn: 278148
* Update in-tree Google Benchmark to current ToT.Eric Fiselier2016-08-0933-290/+1102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I've put some work into the Google Benchmark library in order to make it easier to benchmark libc++. These changes have already been upstreamed into Google Benchmark and this patch applies the changes to the in-tree version. The main improvement in the addition of a 'compare_bench.py' script which makes it very easy to compare benchmarks. For example to compare the native STL to libc++ you would run: `$ compare_bench.py ./util_smartptr.native.out ./util_smartptr.libcxx.out` And the output would look like: RUNNING: ./util_smartptr.native.out Benchmark Time CPU Iterations ---------------------------------------------------------------- BM_SharedPtrCreateDestroy 62 ns 62 ns 10937500 BM_SharedPtrIncDecRef 31 ns 31 ns 23972603 BM_WeakPtrIncDecRef 28 ns 28 ns 23648649 RUNNING: ./util_smartptr.libcxx.out Benchmark Time CPU Iterations ---------------------------------------------------------------- BM_SharedPtrCreateDestroy 46 ns 46 ns 14957265 BM_SharedPtrIncDecRef 31 ns 31 ns 22435897 BM_WeakPtrIncDecRef 34 ns 34 ns 21084337 Comparing ./util_smartptr.native.out to ./util_smartptr.libcxx.out Benchmark Time CPU ----------------------------------------------------- BM_SharedPtrCreateDestroy -0.26 -0.26 BM_SharedPtrIncDecRef +0.00 +0.00 BM_WeakPtrIncDecRef +0.21 +0.21 llvm-svn: 278147
* [vim] Update the llvm.vim syntax fileDavid Majnemer2016-08-091-2/+7
| | | | | | | We never updated this file to contain the WinEH instructions. Also, add the dereferenceable attribute. llvm-svn: 278146
* clang-rename rename-all: support reading old/newname pairs from a YAML fileMiklos Vajna2016-08-095-8/+113
| | | | | | | | | | | This is handy in case by the time clang-rename is invoked, an external tool already genereated a list of oldname -> newname pairs to handle. Reviewers: omtcyfz Differential Revision: https://reviews.llvm.org/D23198 llvm-svn: 278145
* [X86] Don't model UD2/UD2B as a terminatorDavid Majnemer2016-08-092-1/+6
| | | | | | | | | | | | | | A UD2 might make its way into the program via a call to @llvm.trap. Obviously, calls are not terminators. However, we modeled the X86 instruction, UD2, as a terminator. Later on, this confuses the epilogue insertion machinery which results in the epilogue getting inserted before the UD2. For some platforms, like x64, the result is a violation of the ABI. Instead, model UD2/UD2B as a side effecting instruction which may observe memory. llvm-svn: 278144
* Fix spacing around variable initializations and for-loops. NFC.Mandeep Singh Grang2016-08-092-8/+8
| | | | | | | | | | Reviewers: grosser, _jdoerfert, zinob Projects: #polly Differential Revision: https://reviews.llvm.org/D23285 llvm-svn: 278143
* [debugserver] Delete CFData.{h,cpp}, since they appear to be dead (NFCI)Vedant Kumar2016-08-094-114/+0
| | | | | | Differential Revision: https://reviews.llvm.org/D23070 llvm-svn: 278142
* [DAGCombiner] Better support for shifting large value type by constantsSimon Pilgrim2016-08-092-17/+66
| | | | | | | | | | As detailed on D22726, much of the shift combining code assume constant values will fit into a uint64_t value and calls ConstantSDNode::getZExtValue where it probably shouldn't (leading to asserts). Using APInt directly avoids this problem but we encounter other assertions if we attempt to compare/operate on 2 APInt of different bitwidths. This patch adds a helper function to ensure that 2 APInt values are zero extended as required so that they can be safely used together. I've only added an initial example use for this to the '(SHIFT (SHIFT x, c1), c2) --> (SHIFT x, (ADD c1, c2))' combines. Further cases can easily be added as required. Differential Revision: https://reviews.llvm.org/D23007 llvm-svn: 278141
* [CUDA] Regression test to make sure C++ include path are forwarded to host ↵Samuel Antao2016-08-091-0/+10
| | | | | | | | | | | | | | and device frontends. Summary: Add test to detect the C++ include paths are passed to both CUDA host and device frontends. Reviewers: tra Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D22946 llvm-svn: 278140
* [clang-cl] Make -gline-tables-only imply -gcodeviewReid Kleckner2016-08-092-4/+9
| | | | | | | | | It's surprising that you have to pass /Z7 in addition to -gcodeview to get debug info. The sanitizer runtime, for example, expects that if the compiler supports the -gline-tables-only flag, then it will emit debug info. llvm-svn: 278139
* [AliasAnalysis] Treat invariant.start as read-memoryAnna Thomas2016-08-094-0/+168
| | | | | | | | | | | | | | | | | Summary: We teach alias analysis that invariant.start is readonly. This helps with GVN and memcopy optimizations that currently treat. invariant.start as a clobber. We need to treat this as readonly, so that DSE does not incorrectly remove stores prior to the invariant.start Reviewers: sanjoy, reames, majnemer, dberlin Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D23214 llvm-svn: 278138
* auto-generate checksSanjay Patel2016-08-091-16/+18
| | | | llvm-svn: 278137
* auto-generate checksSanjay Patel2016-08-091-14/+18
| | | | llvm-svn: 278136
* auto-generate checksSanjay Patel2016-08-091-20/+33
| | | | llvm-svn: 278135
* test-release.sh: Drop autoconf supportHans Wennborg2016-08-091-46/+17
| | | | | | The autoconf build was deleted some time ago. llvm-svn: 278133
* add tests for missing vector icmp foldsSanjay Patel2016-08-093-0/+60
| | | | llvm-svn: 278132
* update to use FileCheck and auto-generate checksSanjay Patel2016-08-091-1/+27
| | | | llvm-svn: 278131
* regenerate checksSanjay Patel2016-08-091-85/+110
| | | | llvm-svn: 278130
* add tests for missing vector icmp foldsSanjay Patel2016-08-092-2/+35
| | | | llvm-svn: 278129
* [Profile] turn off verbose warnings by defaultXinliang David Li2016-08-092-3/+3
| | | | | | | | | no prof data for func warning is turned off by default due to its high verbosity and minimal usefulness. Differential Revision: http://reviews.llvm.org/D23295 llvm-svn: 278127
* [GPGPU] Support PHI nodes used in GPU kernelTobias Grosser2016-08-092-10/+101
| | | | | | | | | | Ensure the right scalar allocations are used as the host location of data transfers. For the device code, we clear the allocation cache before device code generation to be able to generate new device-specific allocation and we need to make sure to add back the old host allocations as soon as the device code generation is finished. llvm-svn: 278126
* [GPGPU] Use separate basic block for GPU initialization codeTobias Grosser2016-08-092-0/+9
| | | | | | | | | | | This increases the readability of the IR and also clarifies that the GPU inititialization is executed _after_ the scalar initialization which needs to before the code of the transformed scop is executed. Besides increased readability, the IR should not change. Specifically, I do not expect any changes in program semantics due to this patch. llvm-svn: 278125
* [BlockGenerator] Insert initializations at beginning of start blockTobias Grosser2016-08-094-4/+4
| | | | | | | | | | | | | | In case some code -- not guarded by control flow -- would be emitted directly in the start block, it may happen that this code would use uninitalized scalar values if the scalar initialization is only emitted at the end of the start block. This is not a problem today in normal Polly, as all statements are emitted in their own basic blocks, but Polly-ACC emits host-to-device copy statements into the start block. Additional Polly-ACC test coverage will be added in subsequent changes that improve the handling of PHI nodes in Polly-ACC. llvm-svn: 278124
* [ASTMatchers] Add matchers canReferToDecl() and hasUnderlyingDecl()Martin Bohme2016-08-094-0/+106
| | | | | | | | | | | | Summary: Required for D22220 Reviewers: sbenza, klimek, aaron.ballman, alexfh Subscribers: alexfh, klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D23004 llvm-svn: 278123
* [LVI] Make LVI smarter about comparisons with non-constantsArtur Pilipenko2016-08-092-19/+148
| | | | | | | | | | Make LVI smarter about comparisons with a non-constant. For example, a s< b constraints a to be in [INT_MIN, INT_MAX) range. This is a part of https://llvm.org/bugs/show_bug.cgi?id=28620 fix. Reviewed By: sanjoy Differential Revision: https://reviews.llvm.org/D23205 llvm-svn: 278122
* clang-format: Add SpaceAfterTemplateSylvestre Ledru2016-08-095-2/+20
| | | | | | | | | | | | | | | | Summary: This is required for compliance with the Mozilla style guide. This is a rebase+minor change of Birunthan Mohanathas's patch Reviewers: djasper Subscribers: klimek, cfe-commits, opilarium Differential Revision: https://reviews.llvm.org/D23317 llvm-svn: 278121
* [X86][XOP] Add support for combining target shuffles to VPERMIL2PD/VPERMIL2PSSimon Pilgrim2016-08-092-0/+74
| | | | llvm-svn: 278120
* Add `#ifdef __cplusplus` around `extern "C"` in Compiler.h. NFC.Kuba Brecka2016-08-091-0/+4
| | | | llvm-svn: 278119
* Reapply "Rewrite gdb-remote's SendContinuePacketAndWaitForResponse"Pavel Labath2016-08-0916-895/+1214
| | | | | | | | | | | | Resumbitting the commit after fixing the following problems: - broken unit tests on windows: incorrect gtest usage on my part (TEST vs. TEST_F) - the new code did not correctly handle the case where we went to interrupt the process, but it stopped due to a different reason - the interrupt request would remain queued and would interfere with the following "continue". I also added a unit test for this case. This reapplies r277156 and r277139. llvm-svn: 278118
* AVX-512: A new test for FMA intrinsicElena Demikhovsky2016-08-091-0/+111
| | | | | | | A new test that explores sub-optimal sequence of FMA intrinsic and FNEG operation. An upcoming patch will fix it. llvm-svn: 278117
* [sanitizers] Make it possible to XFAIL on the effective target, not just the ↵Daniel Sanders2016-08-0911-9/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | default. Summary: The triple is not the right thing to XFAIL on since LIT only sees the default triple and not the effective triple chosen by any -target option in the RUN directives. This discrepancy is shown in the table below: Default Triple | Options | XFAIL | LIT's expected result | Desired expectation =================+===================================+========+=======================+==================== mips-linux-gnu | -target mips-linux-gnu | | Pass | Pass mips-linux-gnu | -target mips64-linux-gnu -mabi=64 | | Pass | Pass mips-linux-gnu | -target mips-linux-gnu | mips | Fail | Fail mips-linux-gnu | -target mips64-linux-gnu -mabi=64 | mips | Fail | Fail/Pass* (debatable**) mips-linux-gnu | -target mips-linux-gnu | mips- | Fail | Fail mips-linux-gnu | -target mips64-linux-gnu -mabi=64 | mips- | Fail | Pass* mips-linux-gnu | -target mips-linux-gnu | mips64 | Pass | Pass mips-linux-gnu | -target mips64-linux-gnu -mabi=64 | mips64 | Pass | Fail* mips64-linux-gnu | -target mips-linux-gnu | | Pass | Pass mips64-linux-gnu | -target mips64-linux-gnu -mabi=64 | | Pass | Pass mips64-linux-gnu | -target mips-linux-gnu | mips | Fail | Fail* mips64-linux-gnu | -target mips64-linux-gnu -mabi=64 | mips | Fail | Fail/Pass (debatable**) mips64-linux-gnu | -target mips-linux-gnu | mips- | Pass | Fail* mips64-linux-gnu | -target mips64-linux-gnu -mabi=64 | mips- | Pass | Pass mips64-linux-gnu | -target mips-linux-gnu | mips64 | Fail | Pass* mips64-linux-gnu | -target mips64-linux-gnu -mabi=64 | mips64 | Fail | Fail x64_64-linux-gnu | -target i386-linux-gnu | | Pass | Pass x64_64-linux-gnu | -target x86_64-linux-gnu | | Pass | Pass x64_64-linux-gnu | -target i386-linux-gnu | i386 | Pass | Fail* x64_64-linux-gnu | -target x86_64-linux-gnu | i386 | Pass | Pass x64_64-linux-gnu | -target i386-linux-gnu | x86_64 | Fail | Pass x64_64-linux-gnu | -target x86_64-linux-gnu | x86_64 | Fail | Fail* * These all differ from LIT's current behaviour. ** People's expectations vary depending on whether they know that LIT does a substring match on the default triple or think it's an exact match on an architecture. This patch adds "target-is-${target_arch}" to the available features list and updates the mips XFAIL's to use them. XFAIL'ing on these features will correctly account for the target being tested. Making the table: Options | XFAIL | LIT's expected result ==================================+==================+====================== -target mips-linux-gnu | | Pass -target mips64-linux-gnu -mabi=64 | | Pass -target mips-linux-gnu | target-is-mips | Fail -target mips64-linux-gnu -mabi=64 | target-is-mips | Pass -target mips-linux-gnu | target-is-mips64 | Pass -target mips64-linux-gnu -mabi=64 | target-is-mips64 | Fail -target i386-linux-gnu | | Pass -target x86_64-linux-gnu | | Pass -target i386-linux-gnu | target-is-i386 | Fail -target x86_64-linux-gnu | target-is-i386 | Pass -target i386-linux-gnu | target-is-x86_64 | Pass -target x86_64-linux-gnu | target-is-x86_64 | Fail Reviewers: probinson Subscribers: probinson, kubabrecka, llvm-commits, samsonov Differential Revision: https://reviews.llvm.org/D22802 llvm-svn: 278116
* [ELF] - Removed dead code. NFC.George Rimar2016-08-092-9/+0
| | | | llvm-svn: 278115
* [X86][XOP] Add support for combining target shuffles to VPPERMSimon Pilgrim2016-08-092-0/+51
| | | | llvm-svn: 278114
* [XRay] Test for xray_instr_map in object file. (NFC)Dean Michael Berris2016-08-092-3/+6
| | | | | | | | This makes a trivial change in the emission of the per-function XRay tables, and makes sure that the xray_instr_map section does show up in the object file. llvm-svn: 278113
* [clang-rename] cleanup: use isWrittenKirill Bobyrev2016-08-092-4/+4
| | | | | | | | | | | | | | nit: use isWritten and const auto *Initializer in NamedDeclFindingASTVisitor::VisitCXXConstructorDecl method. Test plan: make -j8 check-clang-tools (passed) Patch by Alexander Shaposhnikov! Reviewers: omtcyfz Differential Revision: https://reviews.llvm.org/D23298 llvm-svn: 278112
* Fix Wdocumentation unknown parameter warningSimon Pilgrim2016-08-091-1/+1
| | | | llvm-svn: 278111
* [analyzer] Try to fix coverity CID 1360469.Vassil Vassilev2016-08-091-1/+1
| | | | | | Patch by Raphael Isemann! llvm-svn: 278110
* Revert 278107 which causes buildbot failures and in addition has wrong ↵Artur Pilipenko2016-08-092-145/+19
| | | | | | commit message llvm-svn: 278109
* [modules]Add missing include.Vassil Vassilev2016-08-091-0/+1
| | | | llvm-svn: 278108
* Teach CorrelatedValuePropagation to mark adds as no wrapArtur Pilipenko2016-08-092-19/+145
| | | | | | | | | | Use LVI to prove that adds do not wrap. The change is motivated by https://llvm.org/bugs/show_bug.cgi?id=28620 bug and it's the first step to fix that problem. Reviewed By: sanjoy Differential Revision: http://reviews.llvm.org/D23059 llvm-svn: 278107
* [X86][SSE] Fix memory folding of (v)roundsd / (v)roundssSimon Pilgrim2016-08-094-8/+64
| | | | | | | | | | We only had partial memory folding support for the intrinsic definitions, and (as noted on PR27481) was causing FR32/FR64/VR128 mismatch errors with the machine verifier. This patch adds missing memory folding support for both intrinsics and the ffloor/fnearbyint/fceil/frint/ftrunc patterns and in doing so fixes the failing machine verifier stack folding tests from PR27481. Differential Revision: https://reviews.llvm.org/D23276 llvm-svn: 278106
* [LVI] NFC. Fix a typo Bofore -> BeforeArtur Pilipenko2016-08-091-1/+1
| | | | llvm-svn: 278105
* [tests] Add two missing 'REQUIRES' linesTobias Grosser2016-08-092-0/+4
| | | | llvm-svn: 278104
* [BlockGenerator] Also eliminate dead code not originating from BBTobias Grosser2016-08-095-33/+127
| | | | | | | | | | | | | | | | | After having generated the code for a ScopStmt, we run a simple dead-code elimination that drops all instructions that are known to be and remain unused. Until this change, we only considered instructions for dead-code elimination, if they have a corresponding instruction in the original BB that belongs to ScopStmt. However, when generating code we do not only copy code from the BB belonging to a ScopStmt, but also generate code for operands referenced from BB. After this change, we now also considers code for dead code elimination, which does not have a corresponding instruction in BB. This fixes a bug in Polly-ACC where such dead-code referenced CPU code from within a GPU kernel, which is possible as we do not guarantee that all variables that are used in known-dead-code are moved to the GPU. llvm-svn: 278103
* [include-fixer] Support processing multiple files in one run.Haojian Wu2016-08-099-75/+116
| | | | | | | | | | | | | | | | | | | Summary: Previously, if we pass multiple files or a file pattern (e.g. /path/to/*.cc) to include-fixer, include-fixer will apply all replacements to the first argument, which probably causes crashes. With this patch, include-fixer can process multiple files now. Vim and Emacs integration are tested manually. Reviewers: bkramer Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D23266 llvm-svn: 278102
OpenPOWER on IntegriCloud