Matthias Gehre [Thu, 14 Jul 2016 20:00:48 +0000 (20:00 +0000)]
cppcoreguidelines-pro-bounds-constant-array-index: crash for value dependent index in c++03 mode
Summary:
When the expression is value dependent,
isIntegerConstantExpr() crashes in C++03 mode with
../tools/clang/lib/AST/ExprConstant.cpp:9330: (anonymous namespace)::ICEDiag CheckICE(const clang::Expr *, const clang::ASTContext &):
Assertion `!E->isValueDependent() && "Should not see value dependent exprs!"' failed.
In C++11 mode, that assert does not trigger.
This commit works around this in the check. We don't check
value-dependent indices and instead check their specialization.
Reviewers: alexfh, aaron.ballman
Subscribers: nemanjai, cfe-commits
Differential Revision: http://reviews.llvm.org/D22190
llvm-svn: 275461
Sean Callanan [Thu, 14 Jul 2016 19:53:44 +0000 (19:53 +0000)]
When importing classes and structs with anonymous structs, it is critical that
distinct anonymous structs remain distinct despite having similar layout.
This is already ensured by distinguishing based on their placement in the parent
struct, using the function `findAnonymousStructOrUnionIndex`.
The problem is that this function only handles anonymous structs, like
```
class Foo { struct { int a; } }
```
and not untagged structs like
```
class Foo { struct { int a; } var; }
```
Both need to be handled, and this patch fixes that. The test case ensures that this functionality doesn't regress.
Thanks to Manman Ren for review.
https://reviews.llvm.org/D22270
llvm-svn: 275460
Greg Clayton [Thu, 14 Jul 2016 19:31:18 +0000 (19:31 +0000)]
Add support for Objective-C class properties.
Added test cases to exiting tests to cover the new functionality.
<rdar://problem/
24311282>
llvm-svn: 275459
Krzysztof Parzyszek [Thu, 14 Jul 2016 19:30:55 +0000 (19:30 +0000)]
[Hexagon] Packetize function call arguments with tail call instructions
On Hexagon is it legal to packetize the instructions setting up call
arguments with the call instruction itself. This was already done,
except for tail calls. Make sure tail calls are handled as well.
llvm-svn: 275458
Evandro Menezes [Thu, 14 Jul 2016 19:25:46 +0000 (19:25 +0000)]
[AArch64] Adjust the scheduling model for Exynos-M1.
Enable use-postra-scheduler. (NFC)
llvm-svn: 275457
Sanjoy Das [Thu, 14 Jul 2016 19:21:15 +0000 (19:21 +0000)]
[JumpThreading] PRE unordered loads
Summary: Extend JumpThreading's PRE to unordered atomic loads.
Reviewers: hfinkel, reames
Subscribers: mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D22326
llvm-svn: 275456
Krzysztof Parzyszek [Thu, 14 Jul 2016 19:04:26 +0000 (19:04 +0000)]
Add debugging code to the packetizer
llvm-svn: 275455
Ben Langmuir [Thu, 14 Jul 2016 18:51:55 +0000 (18:51 +0000)]
[index] Index system ImportDecls even when there is a DeclarationsOnly filter
Whether we call an ImportDecl a decl or a reference symbol role is
somewhat academic, but in practice it's more like a declaration because
it is interesting even to consumers who wouldn't care about references.
Most importantly, we want to report the module dependencies of system
modules even when we have declaration-only filtering.
rdar://problem/
27134855
llvm-svn: 275454
Jun Bum Lim [Thu, 14 Jul 2016 18:28:29 +0000 (18:28 +0000)]
[PM] Port Dead Loop Deletion Pass to the new PM
Summary: Port Dead Loop Deletion Pass to the new pass manager.
Reviewers: silvas, davide
Subscribers: llvm-commits, sanjoy, mcrosier
Differential Revision: https://reviews.llvm.org/D21483
llvm-svn: 275453
Justin Lebar [Thu, 14 Jul 2016 18:15:20 +0000 (18:15 +0000)]
[CodeGen] Refactor MachineMemOperand::Flags's target-specific flags.
Summary:
Make the target-specific flags in MachineMemOperand::Flags real, bona
fide enum values. This simplifies users, prevents various constants
from going out of sync, and avoids the false sense of security provided
by declaring static members in classes and then forgetting to define
them inside of cpp files.
Reviewers: MatzeB
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D22372
llvm-svn: 275451
Justin Bogner [Thu, 14 Jul 2016 18:08:33 +0000 (18:08 +0000)]
TableGen: Fix a confusing use of both i and I as variables. NFC
llvm-svn: 275450
Kostya Serebryany [Thu, 14 Jul 2016 17:59:01 +0000 (17:59 +0000)]
[sanitizer-coverage] make sure that calls to __sanitizer_cov_trace_pc are not merged (otherwise different calls get the same PC and confuse fuzzers)
llvm-svn: 275449
Rui Ueyama [Thu, 14 Jul 2016 17:57:33 +0000 (17:57 +0000)]
Update error message to use "ld.lld" instead of "lld -flavor gnu".
Dispatching based on argv[0] seems to be more convenient for users
than dispatching based on -flavor option. Currently, when a user
invoke LLD as "lld", we recommend them pass -flavor option. This
patch changes the message so that we recommend use ld.lld, ld or
lld-link instead.
Differential Revision: http://reviews.llvm.org/D22321
llvm-svn: 275448
Rui Ueyama [Thu, 14 Jul 2016 17:43:28 +0000 (17:43 +0000)]
Remove TargetInfo::getImageBase. NFC.
llvm-svn: 275447
Rui Ueyama [Thu, 14 Jul 2016 17:40:18 +0000 (17:40 +0000)]
Set DT_MIPS_BASE_ADDRESS correctly if -image-base is given.
Differential Revision: http://reviews.llvm.org/D22323
llvm-svn: 275446
Nirav Dave [Thu, 14 Jul 2016 17:37:05 +0000 (17:37 +0000)]
[X86][MC] Fix bracket expression parsing in intel-style assembly.
Only perform struct field check on Identifier tokens.
Fixes PR28547.
Reviewers: rnk
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D22361
llvm-svn: 275445
Ahmed Bougacha [Thu, 14 Jul 2016 17:29:49 +0000 (17:29 +0000)]
[GlobalISel] Fix G_OR opcode after the addition of a TargetOpcode.
r275367 fixed G_ADD and G_BR, but not G_OR.
llvm-svn: 275444
Ahmed Bougacha [Thu, 14 Jul 2016 17:29:46 +0000 (17:29 +0000)]
[CodeGen] Simplify reg bank/class union is+get into dyn_cast. NFC.
llvm-svn: 275443
Saleem Abdulrasool [Thu, 14 Jul 2016 17:27:06 +0000 (17:27 +0000)]
X86: handle external tail calls in Windows JIT
If there was a tail call, we would incorrectly handle the relocation. It would
end up indexing into the array with an incorrect section id. The symbol was
external to the module, so the Section ID was UNDEFINED (-1). We would then
index the SmallVector with this ID, triggering an assertion. Use the Value
rather than the section load address in this case.
llvm-svn: 275442
Justin Lebar [Thu, 14 Jul 2016 17:16:40 +0000 (17:16 +0000)]
[CodeGen] s/constexpr/LLVM_CONSTEXPR/ in MachineMemOperand.h.
llvm-svn: 275441
Aaron Ballman [Thu, 14 Jul 2016 17:15:06 +0000 (17:15 +0000)]
Despite there being an option, it seems that Sphinx has decided that "=123" is part of the option directive name, and so having "=0" in the option tag is problematic. Since the option tag is part of the option directive definition, it's superfluous, and so I've removed it.
llvm-svn: 275440
Sanjay Patel [Thu, 14 Jul 2016 17:07:55 +0000 (17:07 +0000)]
auto-generate checks
Note: I removed the checks after each jump because that's noise, but we apparently
need branches rather than returning i1 to see the bt codegen in some cases.
llvm-svn: 275439
Justin Lebar [Thu, 14 Jul 2016 17:07:44 +0000 (17:07 +0000)]
[CodeGen] Refactor MachineMemOperand's Flags enum.
Summary:
- Give it a shorter name (because we're going to refer to it often from
SelectionDAG and friends).
- Split the flags and alignment into separate variables.
- Specialize FlagsEnumTraits for it, so we can do bitwise ops on it
without losing type information.
- Make some enum values constants in MachineMemOperand instead.
MOMaxBits should not be a valid Flag.
- Simplify some of the bitwise ops for dealing with Flags.
Reviewers: chandlerc
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D22281
llvm-svn: 275438
Tim Northover [Thu, 14 Jul 2016 17:04:34 +0000 (17:04 +0000)]
ARM: fix vmov.i64 immediate validity check
Typo meant we were only checking the low byte (repeatedly).
llvm-svn: 275437
Tobias Grosser [Thu, 14 Jul 2016 15:51:37 +0000 (15:51 +0000)]
GPGPU: Generate an AST for the GPU-mapped schedule
For this we need to provide an explicit list of statements as they occur in
the polly::Scop to ppcg.
We also setup basic AST printing facilities to facilitate debugging. To allow
code reuse some (minor) changes in ppcg are have been necessary.
llvm-svn: 275436
Tobias Grosser [Thu, 14 Jul 2016 15:51:32 +0000 (15:51 +0000)]
GPGPU: Add dummy implementation for ast expression construction
Instead of calling to a pet function that does not return anything, we pass
our own dummy implementation to ppcg that always returns a nullptr. This
ensures that the list of ast expressions always contains a nullptr and we do
not accidentally free a random (uninitalized) pointer. This resolves the
last valgrind warning we see.
We provide an implementation for this function, when the generated AST
expressions can be used and consequently can be tested.
llvm-svn: 275435
Tom Stellard [Thu, 14 Jul 2016 15:50:27 +0000 (15:50 +0000)]
GlobalsAA: Functions with the argmemonly attribute won't read arbitrary globals
Summary:
In preparation for changing GlobalsAA to stop assuming that intrinsics
can't read arbitrary globals, we need to make sure GlobalsAA is querying
function attributes rather than relying on this assumption.
This patch was inspired by: http://reviews.llvm.org/D20206
Reviewers: jmolloy, hfinkel
Subscribers: eli.friedman, llvm-commits
Differential Revision: https://reviews.llvm.org/D21318
llvm-svn: 275433
Nico Weber [Thu, 14 Jul 2016 15:40:22 +0000 (15:40 +0000)]
Don't optimize movs to pushes in -O0 builds.
https://reviews.llvm.org/D22362
llvm-svn: 275431
Aaron Ballman [Thu, 14 Jul 2016 15:32:11 +0000 (15:32 +0000)]
Removing a few more :option: tags that we do not have corresponding .. option directives for; these are causing the sphinx bot to fail (lab.llvm.org:8011/builders/clang-sphinx-docs/builds/15197/steps/docs-clang-html/logs/stdio).
llvm-svn: 275430
Nico Weber [Thu, 14 Jul 2016 15:07:44 +0000 (15:07 +0000)]
Delete some trailing whitespace.
llvm-svn: 275429
Benjamin Kramer [Thu, 14 Jul 2016 15:06:57 +0000 (15:06 +0000)]
[OpenCL] In test/Driver/opencl.cl, don't require name of Clang binary to contain "clang"
The test currently fails if the name of the Clang binary doesn't contain "clang".
This patch removes that requirement, as some environments may choose to run the test with a differently named binary. This shouldn't make the test any less strict -- the only place where the flags we're searching for can really occur is the Clang command line.
Patch by Martin Böhme!
Differential Revision: https://reviews.llvm.org/D22359
llvm-svn: 275428
Ahmed Bougacha [Thu, 14 Jul 2016 14:53:21 +0000 (14:53 +0000)]
[X86] Decode MPX BND registers.
We were able to assemble, but not disassemble.
Note that fixupRMValue was truncating EA_REG_BND0-3 because we hit
the uint8_t max. The control registers were already squarely above
it, but I don't think they ever go in .r/m, only in .reg.
I also did notice an extra REX.W in our encoding, but I think that's
fine.
llvm-svn: 275427
Ahmed Bougacha [Thu, 14 Jul 2016 14:53:17 +0000 (14:53 +0000)]
[X86] Don't mark addressing mode operands as "outs". NFC-ish.
Nothing in-tree can tell the difference, but it's incorrect: the
addressing mode registers aren't what's defined.
llvm-svn: 275426
Ahmed Bougacha [Thu, 14 Jul 2016 14:53:14 +0000 (14:53 +0000)]
[TableGen] Autobrief-ize Record. NFC.
llvm-svn: 275425
Ahmed Bougacha [Thu, 14 Jul 2016 14:53:11 +0000 (14:53 +0000)]
[TableGen] Cleanup Record comments. NFC.
LLVM doesn't use exceptions anymore.
Also remove the implementation comments. Some of them diverged.
llvm-svn: 275424
Ahmed Bougacha [Thu, 14 Jul 2016 14:52:55 +0000 (14:52 +0000)]
[GlobalISel] Fix #include ordering/spacing. NFC.
llvm-svn: 275423
Sam Kolton [Thu, 14 Jul 2016 14:50:35 +0000 (14:50 +0000)]
[AMDGPU] Assembler: fix row_bcast parsing
Summary: This change fix bug 28538
Reviewers: tstellarAMD, vpykhtin
Subscribers: arsenm, kzhuravl
Differential Revision: https://reviews.llvm.org/D22355
llvm-svn: 275422
Nico Weber [Thu, 14 Jul 2016 14:49:35 +0000 (14:49 +0000)]
Revert r275411, it cause PR28552.
llvm-svn: 275421
Nico Weber [Thu, 14 Jul 2016 14:41:25 +0000 (14:41 +0000)]
Revert r275401, it caused PR28551.
llvm-svn: 275420
Matthew Simpson [Thu, 14 Jul 2016 14:36:06 +0000 (14:36 +0000)]
[LV] Avoid unnecessary IV scalar-to-vector-to-scalar conversions
This patch prevents increases in the number of instructions, pre-instcombine,
due to induction variable scalarization. An increase in instructions can lead
to an increase in the compile-time required to simplify the induction
variables. We now maintain a new map for scalarized induction variables to
prevent us from converting between the scalar and vector forms.
This patch should resolve compile-time regressions seen after r274627.
llvm-svn: 275419
Tobias Grosser [Thu, 14 Jul 2016 14:14:02 +0000 (14:14 +0000)]
GPGPU: Use a tile size of 32 by default
The tile size was previously uninitialized. As a result, it was often zero (aka.
no tiling), which is not what we want in general. More importantly, there was
the risk for arbitrary tile sizes to be choosen, which we did not observe, but
which still is highly problematic.
llvm-svn: 275418
Roger Ferrer Ibanez [Thu, 14 Jul 2016 14:10:43 +0000 (14:10 +0000)]
Diagnose taking address and reference binding of packed members
This patch implements PR#22821.
Taking the address of a packed member is dangerous since the reduced
alignment of the pointee is lost. This can lead to memory alignment
faults in some architectures if the pointer value is dereferenced.
This change adds a new warning to clang emitted when taking the address
of a packed member. A packed member is either a field/data member
declared as attribute((packed)) or belonging to a struct/class
declared as such. The associated flag is -Waddress-of-packed-member.
Conversions (either implicit or via a valid casting) to pointer types
with lower or equal alignment requirements (e.g. void* or char*)
silence the warning.
This change also adds a new error diagnostic when the user attempts to
bind a reference to a packed member, regardless of the alignment.
Differential Revision: https://reviews.llvm.org/D20561
llvm-svn: 275417
Aaron Ballman [Thu, 14 Jul 2016 14:07:37 +0000 (14:07 +0000)]
Removing more :option: tags that we do not have corresponding .. option directives for; these are causing the sphinx bot to fail (lab.llvm.org:8011/builders/clang-sphinx-docs/builds/15195/steps/docs-clang-html/logs/stdio).
llvm-svn: 275416
Pierre Gousseau [Thu, 14 Jul 2016 13:58:27 +0000 (13:58 +0000)]
The test added in r275267 does not work on read-only checkouts because of the use of touch -m -t.
Following Tom Rybka suggestion, the test files are now copied to a temporary directory first.
llvm-svn: 275415
Nico Weber [Thu, 14 Jul 2016 13:54:26 +0000 (13:54 +0000)]
Teach fast isel calls and rets about stdcall.
stdcall is callee-pop like thiscall, so the thiscall changes already did most
of the work for this. This change only opts stdcall in and adds tests.
llvm-svn: 275414
Simon Pilgrim [Thu, 14 Jul 2016 13:40:53 +0000 (13:40 +0000)]
[X86][AVX] Added an additional vperm2f128 memory folding test
llvm-svn: 275413
Simon Pilgrim [Thu, 14 Jul 2016 13:29:23 +0000 (13:29 +0000)]
Remove trailing whitespace.
llvm-svn: 275412
Simon Pilgrim [Thu, 14 Jul 2016 13:28:43 +0000 (13:28 +0000)]
[X86][AVX2] Allow VPERMPD/VPERMQ shuffles to call combineShuffle
This improves the situation discussed in D19228 where we were forcing VPERMPD/VPERMQ where VPERM2F128/VPERM2I128 would have been better.
llvm-svn: 275411
Daniel Sanders [Thu, 14 Jul 2016 13:25:22 +0000 (13:25 +0000)]
[mips] SelectionDAGISel subclasses now follow the optimization level.
Summary:
It was recently discovered that, for Mips's SelectionDAGISel subclasses,
all optimization levels caused SelectionDAGISel to behave like -O2.
This change adds the necessary plumbing to initialize the optimization level.
Reviewers: andrew.w.kaylor
Subscribers: andrew.w.kaylor, sdardis, dean, llvm-commits, vradosavljevic, petarj, qcolombet, probinson, dsanders
Differential Revision: https://reviews.llvm.org/D14900
llvm-svn: 275410
Benjamin Kramer [Thu, 14 Jul 2016 13:15:37 +0000 (13:15 +0000)]
Upgrade all the .arcconfigs to https.
llvm-svn: 275409
Aaron Ballman [Thu, 14 Jul 2016 13:08:16 +0000 (13:08 +0000)]
Speculatively fix the sphinx build, which does not think the original code was valid nasm (lab.llvm.org:8011/builders/llvm-sphinx-docs/builds/11854/steps/docs-llvm-html/logs/stdio).
llvm-svn: 275408
Aaron Ballman [Thu, 14 Jul 2016 13:01:00 +0000 (13:01 +0000)]
This is a malformed :option: tag -- we don't have an option directive that matches it, so turning it actual text instead of a markup tag. This will hopefully fix the clang docs build (lab.llvm.org:8011/builders/clang-sphinx-docs/builds/15194/steps/docs-clang-html/logs/stdio)
llvm-svn: 275407
Simon Pilgrim [Thu, 14 Jul 2016 12:58:04 +0000 (12:58 +0000)]
[X86][AVX] Add support for narrowing 128-bit+ shuffle mask elements to 64-bits to allow combining
Primarily this is to allow blend with zero instead of having to use vperm2f128, but we can use this in the future to deal with AVX512 cases where we need to keep the original element size to correctly fold masked operations.
llvm-svn: 275406
Benjamin Kramer [Thu, 14 Jul 2016 12:56:21 +0000 (12:56 +0000)]
[OpenCL] Actually activate Frontend/opencl.cl test and fix test bugs
rL275318 added the test Frontend/opencl.cl test, but that test was never actually run because Frontend/lit.local.cfg doesn't contain the '.cl' file suffix.
Once the test is activated, it fails with (unintended) compile errors in the newly added CHECK_INVALID_OPENCL_VERSION checks.
This patch adds the '.cl' file suffix to Frontend/lit.local.cfg to activate the test and fixes the test bug by adding '-fblocks' to the relevant command lines.
Patch by Martin Böhme!
Differential Revision: http://reviews.llvm.org/D22349
llvm-svn: 275405
Aaron Ballman [Thu, 14 Jul 2016 12:35:00 +0000 (12:35 +0000)]
Correct the attribute documentation for the new XRay attributes. Fixes the documentation build.
llvm-svn: 275404
Sjoerd Meijer [Thu, 14 Jul 2016 12:23:48 +0000 (12:23 +0000)]
This converts a signed remainder instruction to unsigned remainder, which
enables the code size optimisation to fold a rem and div into a single
aeabi_uidivmod call. This was not happening before because sdiv was converted
but srem not, and instructions with different signedness are not combined.
Differential Revision: http://reviews.llvm.org/D22214
llvm-svn: 275403
Simon Pilgrim [Thu, 14 Jul 2016 12:21:40 +0000 (12:21 +0000)]
[X86][AVX] Add 128-bit wide shuffle tests that should combine to blend-with-zero
llvm-svn: 275402
Sebastian Pop [Thu, 14 Jul 2016 12:18:53 +0000 (12:18 +0000)]
code hoisting pass based on GVN
This pass hoists duplicated computations in the program. The primary goal of
gvn-hoist is to reduce the size of functions before inline heuristics to reduce
the total cost of function inlining.
Pass written by Sebastian Pop, Aditya Kumar, Xiaoyu Hu, and Brian Rzycki.
Important algorithmic contributions by Daniel Berlin under the form of reviews.
Differential Revision: http://reviews.llvm.org/D19338
llvm-svn: 275401
Simon Pilgrim [Thu, 14 Jul 2016 12:07:43 +0000 (12:07 +0000)]
[X86][AVX] Add VBROADCASTF128/VBROADCASTI128 shuffle comments support
llvm-svn: 275400
Dean Michael Berris [Thu, 14 Jul 2016 11:46:41 +0000 (11:46 +0000)]
Remove extra ';' to appease -Wpedantic
Summary:
Reviewers: dok
Subscribers: llvm-commits
llvm-svn: 275399
Simon Pilgrim [Thu, 14 Jul 2016 11:05:43 +0000 (11:05 +0000)]
[X86][AVX] Regenerate broadcast upgrade tests
llvm-svn: 275398
Tobias Grosser [Thu, 14 Jul 2016 10:53:00 +0000 (10:53 +0000)]
Fix formatting
llvm-svn: 275397
Tobias Grosser [Thu, 14 Jul 2016 10:51:52 +0000 (10:51 +0000)]
GPGPU: Map initial schedule to GPU schedule
This change now applies ppcg's GPU mapping on our initial schedule. For this
to work, we need to also initialize the set of all names (isl_ids) used in
the scop as well as the program context.
llvm-svn: 275396
Tobias Grosser [Thu, 14 Jul 2016 10:51:47 +0000 (10:51 +0000)]
GPGPU: Do not dump schedule by default
llvm-svn: 275395
Pavel Labath [Thu, 14 Jul 2016 10:43:24 +0000 (10:43 +0000)]
mark newly failing tests as XFAIL
llvm-svn: 275394
Pavel Labath [Thu, 14 Jul 2016 10:43:21 +0000 (10:43 +0000)]
[test] [linux] define PR_SET_PTRACER constants if the system does not provide them
Android API <= 16 header do not have these symbols defined, but the kernel does support the
relevant calls. And in general, since these calls are on a best-effort basis, it won't hurt even
if we try to run in on a really ancient kernel.
llvm-svn: 275393
Roman Gareev [Thu, 14 Jul 2016 10:40:15 +0000 (10:40 +0000)]
[NFC] Add full title/author information to "Apply the BLIS matmul optimization pattern"
llvm-svn: 275392
Simon Pilgrim [Thu, 14 Jul 2016 10:37:14 +0000 (10:37 +0000)]
[X86][AVX2] VBROADCASTSSrr/VBROADCASTSSYrr require AVX2 not AVX
llvm-svn: 275391
Tobias Grosser [Thu, 14 Jul 2016 10:22:25 +0000 (10:22 +0000)]
GPGPU: compute new schedule from polly scop
To do so we copy the necessary information to compute an initial schedule from
polly::Scop to ppcg's scop. Most of the necessary information is directly
available and only needs to be passed on to ppcg, with the exception of 'tagged'
access relations, access relations that additionally carry information about
which memory access an access relation originates from.
We could possibly perform the construction of tagged accesses as part of
ScopInfo, but as this format is currently specific to ppcg we do not do this
yet, but keep this functionality local to our GPU code generation.
After the scop has been initialized, we compute data dependences and ask ppcg to
compute an initial schedule. Some of this functionality is already available in
polly::DependenceInfo and polly::ScheduleOptimizer, but to keep differences
to ppcg small we use ppcg's functionality here. We may later investiage if
a closer integration of these tools makes sense.
llvm-svn: 275390
Tobias Grosser [Thu, 14 Jul 2016 10:22:19 +0000 (10:22 +0000)]
GPGPU: create default initialized PPCG scop and gpu program
At this stage, we do not yet modify the IR but just generate a default
initialized ppcg_scop and gpu_prog and free both immediately. Both will later be
filled with data from the polly::Scop and are needed to use PPCG for GPU
schedule generation. This commit does not yet perform any GPU code generation,
but ensures that the basic infrastructure has been put in place.
We also add a simple test case to ensure the new code is run and use this
opportunity to verify that GPU_CODEGEN tests are only run if GPU code generation
has been enabled in cmake.
llvm-svn: 275389
Benjamin Kramer [Thu, 14 Jul 2016 09:46:07 +0000 (09:46 +0000)]
[clang-rename] add documentation
clang-rename needs at least to have a minimum documentation to provide a
small introduction for new users
Patch by Kirill Bobyrev!
Differential Revision: http://reviews.llvm.org/D22129
llvm-svn: 275388
Benjamin Kramer [Thu, 14 Jul 2016 09:46:03 +0000 (09:46 +0000)]
[clang-rename] exit code-related bugfix and code cleanup
This patch does the following:
* enforces proper formatting for few files (i.e. deals with 80 linewidth violations and few other things)
* ensures '\n' chars are passed to the output streams instead of "\n" strings
* fixes a bug caused by calling cl::PrintHelpMessage(), which occasionally calls exit(0), so that exit(1) (which is right after cl::PrintHelpMessage line) becomes dead code
Patch by Kirill Bobyrev!
Differential Revision: http://reviews.llvm.org/D22091
llvm-svn: 275387
Haojian Wu [Thu, 14 Jul 2016 09:39:12 +0000 (09:39 +0000)]
[include-fixer] Correct an incorrecst judgement about prefix scoped qualifiers.
Summary:
The judgement that checks whether the fully-qualified name has scoped qualifiers
prefix is incorrect. Should always check whether the first matched postion is the
beginning position.
Reviewers: bkramer
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D22343
llvm-svn: 275386
Eugene Leviant [Thu, 14 Jul 2016 09:21:24 +0000 (09:21 +0000)]
[ELF] r275383 reverted due to buildbot failure
llvm-svn: 275385
Asaf Badouh [Thu, 14 Jul 2016 08:40:30 +0000 (08:40 +0000)]
[X86][AVX512F] minor fix of the parameter names
add "__" prefix
llvm-svn: 275384
Eugene Leviant [Thu, 14 Jul 2016 08:26:41 +0000 (08:26 +0000)]
[ELF] Allow overriding reserved symbols in linker scripts
llvm-svn: 275383
Sjoerd Meijer [Thu, 14 Jul 2016 07:44:20 +0000 (07:44 +0000)]
This implements a more optimal algorithm for selecting a base constant in
constant hoisting. It not only takes into account the number of uses and the
cost of expressions in which constants appear, but now also the resulting
integer range of the offsets. Thus, the algorithm maximizes the number of uses
within an integer range that will enable more efficient code generation. On
ARM, for example, this will enable code size optimisations because less
negative offsets will be created. Negative offsets/immediates are not supported
by Thumb1 thus preventing more compact instruction encoding.
Differential Revision: http://reviews.llvm.org/D21183
llvm-svn: 275382
Ilia K [Thu, 14 Jul 2016 07:43:14 +0000 (07:43 +0000)]
Fix -break-enable/-break-disable commands (MI)
* Previously -break-enable mistakenly set BP's enabled flag to false.
* These commands print fake =breakpoint-modified messages, what's not
needed anymore because that events are come in normal way.
* Add tests for -break-enable/-break-disable commands
Initial patch from xuefangliang@hotmail.com. The test case was improved by me.
Differential Revision: http://reviews.llvm.org/D21757
llvm-svn: 275381
David Majnemer [Thu, 14 Jul 2016 06:58:42 +0000 (06:58 +0000)]
[InstCombine] Masked loads with undef masks can fold to normal loads
We were able to fold masked loads with an all-ones mask to a normal
load. However, we couldn't turn a masked load with a mask with mixed
ones and undefs into a normal load.
llvm-svn: 275380
David Majnemer [Thu, 14 Jul 2016 06:58:37 +0000 (06:58 +0000)]
Simplify llvm.masked.load w/ undef masks
We can always pick the passthru value if the mask is undef: we are
permitted to treat the mask as-if it were filled with zeros.
llvm-svn: 275379
Craig Topper [Thu, 14 Jul 2016 06:41:34 +0000 (06:41 +0000)]
[AVX512] Implement EXTLOAD lowering with patterns to select existing VPMOVZX instructions instead of creating CodeGenOnly instructions.
llvm-svn: 275378
Dean Michael Berris [Thu, 14 Jul 2016 06:37:46 +0000 (06:37 +0000)]
Use hasFlag instead of hasArg
Summary: Fix the build to use hasFlag instead of hasArg for checking some flags.
Reviewers: echristo
Subscribers: mehdi_amini, cfe-commits
Differential Revision: http://reviews.llvm.org/D22338
llvm-svn: 275377
Eli Friedman [Thu, 14 Jul 2016 05:48:25 +0000 (05:48 +0000)]
[X86] Fix stupid typo in isel lowering.
Apparently someone miscounted the number of zeros in the immediate.
Fixes https://llvm.org/bugs/show_bug.cgi?id=28544 .
llvm-svn: 275376
Matt Arsenault [Thu, 14 Jul 2016 05:47:17 +0000 (05:47 +0000)]
AMDGPU/R600: Delete/rename intrinsics no longer used by mesa
Use the replacement pass to update the tests, and delete old names.
llvm-svn: 275375
Rui Ueyama [Thu, 14 Jul 2016 05:46:24 +0000 (05:46 +0000)]
Set sh_addralign to 1 instead of 0.
ELF spec says that alignment of 0 is equivalent to 1.
Previously, we arbitrary set to 0 or 1, but always setting to 1
makes our program simpler.
llvm-svn: 275374
Rui Ueyama [Thu, 14 Jul 2016 05:46:22 +0000 (05:46 +0000)]
Attempt to unbreak msan bot.
r275301 made .got section be aligned on Target->GotEntrySize,
so GotEntrySize must have been initialized. We didn't initialize
it for AMDGPU.
llvm-svn: 275373
Matt Arsenault [Thu, 14 Jul 2016 05:23:23 +0000 (05:23 +0000)]
AMDGPU/R600: Remove intrinsics with no tests and no users
Mesa removed this path, so nothing is using these anymore.
llvm-svn: 275372
Matt Arsenault [Thu, 14 Jul 2016 05:23:19 +0000 (05:23 +0000)]
AMDGPU: Remove unused intrinsics
llvm-svn: 275371
Matt Arsenault [Thu, 14 Jul 2016 05:23:15 +0000 (05:23 +0000)]
AMDGPU: Fix test not actually testing anything
It wasn't actually running the pass, and since it is
missing the llvm prefix, the eh intrinsic was not
really an IntrinsicInst.
Also add missing test for lifetime markers.
llvm-svn: 275370
Matt Arsenault [Thu, 14 Jul 2016 05:23:08 +0000 (05:23 +0000)]
AMDGPU: Remove dead code
llvm-svn: 275369
Dean Michael Berris [Thu, 14 Jul 2016 04:58:44 +0000 (04:58 +0000)]
Add C++ dependencies to xray runtime
Summary:
Depends on D21982 which implements the in-memory logging implementation of the
XRay runtime. These additional changes also depends on D20352 which adds the
bulk of XRay flags/dependencies when using the `-fxray-instrument` flag from
Clang.
Reviewers: echristo, rnk, aaron.ballman
Subscribers: mehdi_amini, cfe-commits
Differential Revision: http://reviews.llvm.org/D21983
llvm-svn: 275368
Dean Michael Berris [Thu, 14 Jul 2016 04:06:33 +0000 (04:06 +0000)]
XRay: Add entry and exit sleds
Summary:
In this patch we implement the following parts of XRay:
- Supporting a function attribute named 'function-instrument' which currently only supports 'xray-always'. We should be able to use this attribute for other instrumentation approaches.
- Supporting a function attribute named 'xray-instruction-threshold' used to determine whether a function is instrumented with a minimum number of instructions (IR instruction counts).
- X86-specific nop sleds as described in the white paper.
- A machine function pass that adds the different instrumentation marker instructions at a very late stage.
- A way of identifying which return opcode is considered "normal" for each architecture.
There are some caveats here:
1) We don't handle PATCHABLE_RET in platforms other than x86_64 yet -- this means if IR used PATCHABLE_RET directly instead of a normal ret, instruction lowering for that platform might do the wrong thing. We think this should be handled at instruction selection time to by default be unpacked for platforms where XRay is not availble yet.
2) The generated section for X86 is different from what is described from the white paper for the sole reason that LLVM allows us to do this neatly. We're taking the opportunity to deviate from the white paper from this perspective to allow us to get richer information from the runtime library.
Reviewers: sanjoy, eugenis, kcc, pcc, echristo, rnk
Subscribers: niravd, majnemer, atrick, rnk, emaste, bmakam, mcrosier, mehdi_amini, llvm-commits
Differential Revision: http://reviews.llvm.org/D19904
llvm-svn: 275367
Davide Italiano [Thu, 14 Jul 2016 03:02:34 +0000 (03:02 +0000)]
[SCCP] Pass a Value * instead of templating this function. NFC.
Thanks to Eli for the suggestion!
llvm-svn: 275366
Kelvin Li [Thu, 14 Jul 2016 02:54:56 +0000 (02:54 +0000)]
[OpenMP] Sema and parsing for 'target parallel for simd' pragma
This patch is to implement sema and parsing for 'target parallel for simd' pragma.
Differential Revision: http://reviews.llvm.org/D22096
llvm-svn: 275365
Chris Lattner [Thu, 14 Jul 2016 02:52:04 +0000 (02:52 +0000)]
clarify a bit.
llvm-svn: 275364
Davide Italiano [Thu, 14 Jul 2016 02:51:41 +0000 (02:51 +0000)]
[IPSCCP] Constant fold struct argument/instructions when all the lattice values are constant.
This now should also work with the interprocedural variant of the pass.
Slightly easier now that the yak is shaved.
Differential Revision: http://reviews.llvm.org/D22329
llvm-svn: 275363
Lang Hames [Thu, 14 Jul 2016 02:35:18 +0000 (02:35 +0000)]
[lld] Update LLD for Archive::child_iterator change in LLVM r275361.
llvm-svn: 275362
Lang Hames [Thu, 14 Jul 2016 02:24:01 +0000 (02:24 +0000)]
[Object] Re-apply r275316 now that I have the corresponding LLD patch ready.
llvm-svn: 275361
Nico Weber [Thu, 14 Jul 2016 01:52:51 +0000 (01:52 +0000)]
Teach fast isel about thiscall (and callee-pop) calls.
http://reviews.llvm.org/D22315
llvm-svn: 275360
Mehdi Amini [Thu, 14 Jul 2016 01:31:25 +0000 (01:31 +0000)]
[Scalarizer] PR28108: Skip over nullptr rather than crashing on it.
Summary:
In Scalarizer::gather we see if we already have a scattered form of Op,
and in that case use the new form.
In the particular case of PR28108, the found ValueVector SV has size 2,
where the first Value is nullptr, and the second is indeed a proper Value.
The nullptr then caused an assert to blow when we tried to do
cast<Instruction>(SV[I]).
With this patch we check SV[I] before doing the cast, and if it's nullptr
we just skip over it.
I don't know the Scalarizer well enough to know if this is the best fix
or if something should be done else where to prevent the nullptr from
being in the ValueVector at all, but at least this avoids the crash
and looking at the test case output it looks reasonable.
Reviewers: hfinkel, frasercrmck, wala, mehdi_amini
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D21518
llvm-svn: 275359