Hongbin Zheng [Thu, 25 Feb 2016 16:33:26 +0000 (16:33 +0000)]
Introduce RegionInfoAnalysis, which compute Region Tree in the new PassManager. NFC
Differential Revision: http://reviews.llvm.org/D17571
llvm-svn: 261884
Hongbin Zheng [Thu, 25 Feb 2016 16:33:15 +0000 (16:33 +0000)]
Introduce DominanceFrontierAnalysis to the new PassManager to compute DominanceFrontier. NFC
Differential Revision: http://reviews.llvm.org/D17570
llvm-svn: 261883
Hongbin Zheng [Thu, 25 Feb 2016 16:33:06 +0000 (16:33 +0000)]
Introduce analysis pass to compute PostDominators in the new pass manager. NFC
Differential Revision: http://reviews.llvm.org/D17537
llvm-svn: 261882
Rafael Espindola [Thu, 25 Feb 2016 16:25:41 +0000 (16:25 +0000)]
Add support for weak symbols in LTO.
llvm-svn: 261881
Rafael Espindola [Thu, 25 Feb 2016 16:20:00 +0000 (16:20 +0000)]
Remove unnecessary prefix.
llvm-svn: 261880
Simon Atanasyan [Thu, 25 Feb 2016 16:19:15 +0000 (16:19 +0000)]
[ELF][MIPS] Add STO_MIPS_PLT flag to the symbols require pointer equality
On MIPS we need to mark symbol which has a PLT entry and requires
pointer equality by STO_MIPS_PLT flag. That is necessary to help
dynamic linker distinguish such symbols and MIPS lazy-binding stubs.
https://sourceware.org/ml/binutils/2008-07/txt00000.txt
Differential Revision: http://reviews.llvm.org/D17593
llvm-svn: 261879
Nikolay Haustov [Thu, 25 Feb 2016 16:09:14 +0000 (16:09 +0000)]
[AMDGPU] Disassembler: Support for all VOP1 instructions.
Support all instructions with VOP1 encoding with 32 or 64-bit operands for VI subtarget:
VGPR_32 and VReg_64 operand register classes
VS_32 and VS_64 operand register classes with inline and literal constants
Tests for VOP1 instructions.
Patch by: skolton
Reviewers: arsenm, tstellarAMD
Review: http://reviews.llvm.org/D17194
llvm-svn: 261878
Sanjay Patel [Thu, 25 Feb 2016 15:55:28 +0000 (15:55 +0000)]
don't repeat names in documentation comments; NFC
llvm-svn: 261877
Michael Kruse [Thu, 25 Feb 2016 15:52:43 +0000 (15:52 +0000)]
Use inline local variable declaration. NFC.
llvm-svn: 261876
Marshall Clow [Thu, 25 Feb 2016 15:27:13 +0000 (15:27 +0000)]
No, really - test the constructor
llvm-svn: 261875
Marshall Clow [Thu, 25 Feb 2016 15:25:29 +0000 (15:25 +0000)]
Add test to ensure that the converting constructor in N4089 is present and working
llvm-svn: 261874
Tobias Grosser [Thu, 25 Feb 2016 15:21:02 +0000 (15:21 +0000)]
www: Fix typo
Reported-by: Hongbin Zheng
llvm-svn: 261873
Aaron Ballman [Thu, 25 Feb 2016 15:14:09 +0000 (15:14 +0000)]
Replace a compiler-specific approach to determining the presence of a getDecl() member function with one that does not require compiler-specific workarounds; NFC.
llvm-svn: 261872
Joerg Sonnenberger [Thu, 25 Feb 2016 15:00:14 +0000 (15:00 +0000)]
GC empty directory.
llvm-svn: 261871
Maxim Ostapenko [Thu, 25 Feb 2016 14:58:07 +0000 (14:58 +0000)]
[asan] Disable recvfrom test failing on the bots.
llvm-svn: 261870
Haojian Wu [Thu, 25 Feb 2016 14:31:10 +0000 (14:31 +0000)]
[clang-tidy] update links to Google Code Style in docs
Summary: Because of the recent Google Code shutdown links to the Google Code Style up there are no longer relevant.
Reviewers: alexfh, hokein
Subscribers: cfe-commits
Patch by Kirill Bobyrev!
Differential Revision: http://reviews.llvm.org/D17602
llvm-svn: 261868
Tobias Grosser [Thu, 25 Feb 2016 14:17:11 +0000 (14:17 +0000)]
Add Polly GSoC projects
These projects are just some first thoughts. Feel free to updated / add ideas
for further projects.
llvm-svn: 261867
Johannes Doerfert [Thu, 25 Feb 2016 14:08:48 +0000 (14:08 +0000)]
Support calls with known ModRef function behaviour
Check the ModRefBehaviour of functions in order to decide whether or
not a call instruction might be acceptable.
Differential Revision: http://reviews.llvm.org/D5227
llvm-svn: 261866
Michael Kruse [Thu, 25 Feb 2016 14:08:48 +0000 (14:08 +0000)]
Fix DomTree preservation for generated subregions.
The generated dedicated subregion exit block was assumed to have the same
dominance relation as the original exit block. This is incorrect if the exit
block receives other edges than only from the subregion, which results in that
e.g. the subregion's entry block does not dominate the exit block.
llvm-svn: 261865
Johannes Doerfert [Thu, 25 Feb 2016 14:07:49 +0000 (14:07 +0000)]
Simplify code [NFC]
llvm-svn: 261864
Johannes Doerfert [Thu, 25 Feb 2016 14:06:11 +0000 (14:06 +0000)]
Try to build alias checks even when non-affine accesses are allowed
From now on we bail only if a non-trivial alias group contains a non-affine
access, not when we discover aliasing and non-affine accesses are allowed.
llvm-svn: 261863
Igor Breger [Thu, 25 Feb 2016 13:30:17 +0000 (13:30 +0000)]
AVX512F: Add GATHER/SCATTER assembler Intel syntax tests for knl/skx/avx . Change memory operand parser handling.
Differential Revision: http://reviews.llvm.org/D17564
llvm-svn: 261862
Aidan Dodds [Thu, 25 Feb 2016 13:07:04 +0000 (13:07 +0000)]
Improve readability and performance of ClangExpressionParser::FindFunctionInModule
Committed on behalf of: Luke Drummond
Differential Revision: http://reviews.llvm.org/D17274
llvm-svn: 261861
Hrvoje Varga [Thu, 25 Feb 2016 12:53:29 +0000 (12:53 +0000)]
[mips][microMIPS] Implement DINSU, DINSM, DINS instructions
Differential Revision: http://reviews.llvm.org/D16181
llvm-svn: 261860
Tamas Berghammer [Thu, 25 Feb 2016 12:23:43 +0000 (12:23 +0000)]
Add support for handling absolute symbols in ELF
Most address represented in lldb as section plus offset and handling of
absolute addresses is problematic in several location because of lack
of necessary information (e.g. Target) or because of performance issues.
This CL change the way ObjectFileELF handle the absolute symbols with
creating a pseudo section for each symbol. With this change all existing
code designed to work with addresses in the form of section plus offset
will work with absolute symbols as well.
Differential revision: http://reviews.llvm.org/D17450
llvm-svn: 261859
Tamas Berghammer [Thu, 25 Feb 2016 12:23:37 +0000 (12:23 +0000)]
Handle the case when a variable is only valid in part of the enclosing scope
DWARF stores this information in the DW_AT_start_scope attribute. This
CL add support for this attribute and also changes the functions
displaying frame variables to only display the variables currently in
scope.
Differential revision: http://reviews.llvm.org/D17449
llvm-svn: 261858
Nikolay Haustov [Thu, 25 Feb 2016 10:58:54 +0000 (10:58 +0000)]
[AMDGPU] Assembler: Simplify handling of optional operands
Resubmit with index problem fixed. Verified with valgrind.
Prepare to support DPP encodings.
For DPP encodings, we want row_mask/bank_mask/bound_ctrl to be optional operands.
However this means that when parsing instruction which has no mnemonic prefix,
we cannot add both default values for VOP3 and for DPP optional operands
to OperandVector - neither instructions would match. So add default values
for optional operands to MCInst during conversion instead.
Mark more operands as IsOptional = 1 in .td files.
Do not add default values for optional operands to OperandVector in AMDGPUAsmParser.
Add default values for optional operands during conversion using new helper addOptionalImmOperand.
Change to cvtVOP3_2_mod to check instruction flag instead of presence of modifiers. In the future, cvtVOP3* functions can be combined into one.
Separate cvtFlat and cvtFlatAtomic.
Fix CNDMASK_B32 definition to have no modifiers.
Review: http://reviews.llvm.org/D17445
llvm-svn: 261856
Maxim Ostapenko [Thu, 25 Feb 2016 10:55:52 +0000 (10:55 +0000)]
[asan] Disable recvfrom testcase on Android due to buildbot failure.
Trying to fix following error on Android:
FAIL: AddressSanitizer-arm-android :: TestCases/Linux/recvfrom.cc (47 of 350)
...
Command Output (stderr):
--
/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/TestCases/Linux/recvfrom.cc:22:22: error: variable has incomplete type 'struct sockaddr_in'
struct sockaddr_in serveraddr; // server's addr
^
/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/TestCases/Linux/recvfrom.cc:22:10: note: forward declaration of 'sockaddr_in'
struct sockaddr_in serveraddr; // server's addr
^
/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/TestCases/Linux/recvfrom.cc:29:38: error: use of undeclared identifier 'INADDR_ANY'
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
^
/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/TestCases/Linux/recvfrom.cc:30:25: error: use of undeclared identifier 'htons'
serveraddr.sin_port = htons(kPortNum);
^
/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/TestCases/Linux/recvfrom.cc:45:22: error: variable has incomplete type 'struct sockaddr_in'
struct sockaddr_in serveraddr; // server's addr
^
/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/TestCases/Linux/recvfrom.cc:45:10: note: forward declaration of 'sockaddr_in'
struct sockaddr_in serveraddr; // server's addr
^
/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/TestCases/Linux/recvfrom.cc:69:25: error: use of undeclared identifier 'htons'
serveraddr.sin_port = htons(kPortNum);
llvm-svn: 261855
Chandler Carruth [Thu, 25 Feb 2016 10:27:39 +0000 (10:27 +0000)]
[PM] Add the IR unit type to the pass manager's logging and make all of
the testing more more explicit.
This will currently fail on platforms without support for getTypeName.
While an assert failure seems too harsh, I'm hoping we're OK with the
regression test failure, and I'd like to find out about what platforms
actually exist in this state if there are any so we can get
implementations in place for them.
But if we just can't fix all the host compilers to have a reasonably
portable variant of getTypeName and are worried about xfailing this test
on those platforms, I can add the horrible regular expression magic to
make the tests support "unknown" here as well.
llvm-svn: 261853
Maxim Ostapenko [Thu, 25 Feb 2016 09:36:20 +0000 (09:36 +0000)]
[sanitizer] Disable recv and recvfrom interceptors on Windows.
Trying to fix sanitizer-windows buildbot by disabling new interceptors on Windows.
llvm-svn: 261844
Simon Pilgrim [Thu, 25 Feb 2016 09:12:12 +0000 (09:12 +0000)]
[X86][SSE3] Added combine support for MOVDDUP/MOVSHDUP/MOVSLDUP target shuffles
Now that PerformShuffleCombine can handle unary shuffles.
llvm-svn: 261843
NAKAMURA Takumi [Thu, 25 Feb 2016 08:50:26 +0000 (08:50 +0000)]
Revert r260064, "Disable llvm/test/tools/llvm-profdata/value-prof.proftext on win32 for now. Investigating."
It seems unreproducible any more for me.
llvm-svn: 261842
Maxim Ostapenko [Thu, 25 Feb 2016 08:44:25 +0000 (08:44 +0000)]
[sanitizer] Move recvmsg and recv interceptors to sanitizer_common.
This patch moves recv and recvfrom interceptors from MSan and TSan to
sanitizer_common to enable them in ASan.
Differential Revision: http://reviews.llvm.org/D17479
llvm-svn: 261841
George Rimar [Thu, 25 Feb 2016 08:40:26 +0000 (08:40 +0000)]
[ELF] - Referencing __start or __stop should keep the section from GC.
This fixes the https://llvm.org/bugs/show_bug.cgi?id=22906 bug.
In GNU Binutils, a reference to start or stop is sufficient to
prevent the section from being garbage collected.
Patch implements the same behavior for lld.
Differential revision: http://reviews.llvm.org/D17502
llvm-svn: 261840
NAKAMURA Takumi [Thu, 25 Feb 2016 08:35:27 +0000 (08:35 +0000)]
Revert r261742, "[AMDGPU] Assembler: Simplify handling of optional operands"
It brought undefined behavior.
llvm-svn: 261839
George Rimar [Thu, 25 Feb 2016 08:23:37 +0000 (08:23 +0000)]
[ELF2] - Basic implementation of -r/--relocatable
-r, -relocatable - Generate relocatable output
Currently does not have support for files containing
relocation sections with entries that refer to local
symbols (like rel[a].eh_frame which refer to sections
and not to symbols)
Differential revision: http://reviews.llvm.org/D14382
llvm-svn: 261838
Mohit K. Bhakkad [Thu, 25 Feb 2016 08:07:44 +0000 (08:07 +0000)]
[Compiler-rt][MSan]Fix shmat testcase: Pass SHMLBA-alligned address to shmat
Reviewers: samsonov
Subscribers: jaydeep, sagar, llvm-commits
Differential Revision: http://reviews.llvm.org/D17262
llvm-svn: 261837
Justin Bogner [Thu, 25 Feb 2016 07:23:08 +0000 (07:23 +0000)]
PM: Implement a basic loop pass manager
This creates the new-style LoopPassManager and wires it up with dummy
and print passes.
This version doesn't support modifying the loop nest at all. It will
be far easier to discuss and evaluate the approaches to that with this
in place so that the boilerplate is out of the way.
llvm-svn: 261831
Akira Hatanaka [Thu, 25 Feb 2016 07:08:33 +0000 (07:08 +0000)]
[Sema] Remove assert in TreeTransform<Derived>::TransformObjCObjectType.
The assert isn't correct since TypeLoc::ObjCObjectTypeLoc doesn't
indicate whether the type is a dependent type. The function returns
false for a type like "<SomeProtocol>" which is a synonym for
"id<SomeProtocol>".
rdar://problem/
23838912
Differential Revision: http://reviews.llvm.org/D17355
llvm-svn: 261829
Elena Demikhovsky [Thu, 25 Feb 2016 07:05:12 +0000 (07:05 +0000)]
Optimized loading (zextload) of i1 value from memory.
This patch is a partial revert of https://llvm.org/svn/llvm-project/llvm/trunk@237793.
Extra "and" causes performance degradation.
We assume that i1 is stored in zero-extended form. And store operation is responsible for zeroing upper bits.
Differential Revision: http://reviews.llvm.org/D17541
llvm-svn: 261828
Chandler Carruth [Thu, 25 Feb 2016 06:13:01 +0000 (06:13 +0000)]
[Support] Don't check for ICC directly and rely on the __GNUC__ check
(which they emulate). This way we don't use that path when compiled with
ICC on Windows where it mimics MSVC's behavior and supports __FUNCSIG__.
Thanks for David Majnemer again for spotting this better pattern!
llvm-svn: 261827
Alexey Bataev [Thu, 25 Feb 2016 05:25:57 +0000 (05:25 +0000)]
[OPENMP 4.5] Codegen for member decls in 'lastprivate' clause.
OpenMP 4.5 allows to privatize non-static member decls in non-static
member functions. Patch captures such decls by reference in general (for
bitfields, by value) and then operates with this capture. For bitfields,
at the end of codegen for lastprivates original bitfield is updated with the value of captured copy.
llvm-svn: 261824
Faisal Vali [Thu, 25 Feb 2016 05:09:30 +0000 (05:09 +0000)]
Twek fix for PR24473 (r261506) - Preserve the template arguments as written
(within the DeclRefExpr Node) when creating AST nodes that reference specializations of static data member templates. While we pass the template args through for all non-instance members, they should only be relevant (i.e. non-null) for variable template ids (assertion added for that assumption)
Also preserve the FoundDecl that refers to the canonical Decl (the primary VarTemplateDecl for a variable template specialization) that we are referencing in our DeclRefExpr. Not sure why this was not being done for non-variable template-ids.
No functionality change - so no tests added.
Thanks to Richard Smith for drawing my attention to this!
llvm-svn: 261823
Simon Atanasyan [Thu, 25 Feb 2016 05:03:52 +0000 (05:03 +0000)]
[ELF][MIPS] Enumerate absolute MIPS relocations in the isRelRelative
This commit does two related thing. At first, it enumerates supported
absolute MIPS relocations in the `MipsTargetInfo<ELFT>::isRelRelative`
method. In that case the code is shorter and the case switch does not
tend to grow. At second, it prevents R_MIPS_COPY and PLT creation for
relative relocations. For almost all relative MIPS relocations like
R_MIPS_PC19_S2, R_MIPS_PCHI16 etc it does not have a sence. The only
exception is R_MIPS_PC32. GNU linker creates a copy relocation or PLT
entry for it. But I could not find any real test case uses R_MIPS_PC32
with DSO defined symbol as a target. So for now I prefer to skip this
case to simplify the LLD code.
llvm-svn: 261822
Saleem Abdulrasool [Thu, 25 Feb 2016 04:04:37 +0000 (04:04 +0000)]
builtins: adjust the clobbers list for android __clear_cache
Adjust the clobbers list. This use to work with older versions of gcc, but now
will error on newer versions (tested against 5.3) (as well as clang).
Patch by Tee Hao Wei!
llvm-svn: 261821
Alexey Bataev [Thu, 25 Feb 2016 03:59:29 +0000 (03:59 +0000)]
[OPENMP 4.5] Support fielddecls in 'shared' clause.
OpenMP 4.5 allows to use non-static data members of current class in
non-static member functions in different kind of clauses. Patch adds
support for data members in 'shared' clause.
llvm-svn: 261820
Chandler Carruth [Thu, 25 Feb 2016 03:58:21 +0000 (03:58 +0000)]
[Support] Add a fancy helper function to get a static name for a type.
This extracts the type name from __PRETTY_FUNCTION__ for compilers that
support it (I've opted Clang, GCC, and ICC into this as I've tested that
they work) and from __FUNCSIG__ which is very similar on MSVC. The
routine falls back gracefully on a stub "UNKNOWN_TYPE" string with
compilers or formats it doesn't understand.
This should be enough for a lot of common cases in LLVM where the real
goal is just to log or print a type name as a debugging aid, and save
a ton of boilerplate in the process. Notably, I'm planning to use this
to remove all the getName() boiler plate from the new pass manager.
The design and implementation is based on a bunch of advice and
discussion with Richard Smith and experimenting with most versions of
Clang and GCC. David Majnemer also provided excellent advice on how best
to do this with MSVC. Richard also checked that ICC does something
reasonable and I'll watch the build bots for other compilers. It'd be
great if someone could contribute logic for xlC and/or other toolchains.
Differential Revision: http://reviews.llvm.org/D17565
llvm-svn: 261819
Xiuli Pan [Thu, 25 Feb 2016 03:34:20 +0000 (03:34 +0000)]
[OpenCL] Add Sema checks for types
Summary:
Add Sema checks for opencl type: image, pipe....
This patch is partitioned from http://reviews.llvm.org/D16047
Reviewers: Anastasia, yaxunl
Subscribers: pekka.jaaskelainen, cfe-commits
Differential Revision: http://reviews.llvm.org/D17437
llvm-svn: 261818
Eugene Zelenko [Thu, 25 Feb 2016 02:08:17 +0000 (02:08 +0000)]
Fix Clang-tidy modernize-use-nullptr and modernize-use-default warnings in source/Commands/CommandObjectType.cpp; other minor fixes.
llvm-svn: 261817
NAKAMURA Takumi [Thu, 25 Feb 2016 01:12:57 +0000 (01:12 +0000)]
check-clang-tools: Introduce the feature "target-headers".
For now, it just detects that host is non-Windows and target is msvc.
FIXME: It should be probable for cross compilations. Detect whether target's headers would be available.
llvm-svn: 261814
Justin Bogner [Thu, 25 Feb 2016 01:02:18 +0000 (01:02 +0000)]
IR: Make the X / undef -> undef fold match the comment
The constant folding for sdiv and udiv has a big discrepancy between the
comments and the code, which looks like a typo. Currently, we're folding
X / undef pretty inconsistently:
0 / undef -> undef
C / undef -> 0
undef / undef -> 0
Whereas the comments state we do X / undef -> undef. The logic that
returns zero is actually commented as doing undef / X -> 0, despite that
the LHS isn't undef in many of the cases that hit it.
llvm-svn: 261813
Greg Clayton [Thu, 25 Feb 2016 00:56:47 +0000 (00:56 +0000)]
Fix "target modules add -s <filename>" to work if the file doesn't exist locally on the current machine.
<rdar://problem/
24807382>
llvm-svn: 261812
Alexander Kornienko [Thu, 25 Feb 2016 00:39:11 +0000 (00:39 +0000)]
[clang-tidy] Another attempt to fix MSVC build
llvm-svn: 261811
Adrian McCarthy [Thu, 25 Feb 2016 00:24:07 +0000 (00:24 +0000)]
XFail TestInlines.py on Windows with clang.
Test expects the breakpoint to resolve to three locations, but clang on windows yields only 2.
llvm.org/pr26710
llvm-svn: 261810
Junmo Park [Thu, 25 Feb 2016 00:23:27 +0000 (00:23 +0000)]
[CodeGenPrepare] Remove load-based heuristic
Summary:
Both the hardware and LLVM have changed since 2012.
Now, load-based heuristic don't show big differences any more on OoO cores.
There is no notable regressons and improvements on spec2000/2006. (Cortex-A57, Core i5).
Reviewers: spatel, zansari
Differential Revision: http://reviews.llvm.org/D16836
llvm-svn: 261809
Adrian McCarthy [Thu, 25 Feb 2016 00:23:27 +0000 (00:23 +0000)]
Get register context for the 32-bit process in a WoW64 process minidump
32-bit processes on 64-bit Windows run in a layer called WoW64 (Windows-on-Windows64). If you capture a mini dump of such a process from a 32-bit debugger, you end up with a register context for the 64-bit WoW64 process rather than the 32-bit one you probably care about.
This detects WoW64 by looking to see if there's a module named wow64.dll loaded. For such processes, it then looks in the 64-bit Thread Environment Block (TEB) to locate a copy of the 32-bit CONTEXT record that the plugin needs for the register context.
Added some rudimentary tests. I'd like to improve these later once we figure out how to get the exception information from these mini dumps.
Differential Revision: http://reviews.llvm.org/D17465
llvm-svn: 261808
Cong Hou [Thu, 25 Feb 2016 00:12:18 +0000 (00:12 +0000)]
Move test/CodeGen/Generic/pr26652.ll to test/CodeGen/X86/pr26652.ll and test it only on X86.
llvm-svn: 261807
Alexander Kornienko [Wed, 24 Feb 2016 23:48:24 +0000 (23:48 +0000)]
Trying to fix MSVC build
llvm-svn: 261806
Sanjay Patel [Wed, 24 Feb 2016 23:44:19 +0000 (23:44 +0000)]
fix typo
llvm-svn: 261805
Cong Hou [Wed, 24 Feb 2016 23:40:36 +0000 (23:40 +0000)]
Detecte vector reduction operations just before instruction selection.
(This is the second attemp to commit this patch, after fixing pr26652 & pr26653).
This patch detects vector reductions before instruction selection. Vector
reductions are vectorized reduction operations, and for such operations we have
freedom to reorganize the elements of the result as long as the reduction of them
stay unchanged. This will enable some reduction pattern recognition during
instruction combine such as SAD/dot-product on X86. A flag is added to
SDNodeFlags to mark those vector reduction nodes to be checked during instruction
combine.
To detect those vector reductions, we search def-use chains starting from the
given instruction, and check if all uses fall into two categories:
1. Reduction with another vector.
2. Reduction on all elements.
in which 2 is detected by recognizing the pattern that the loop vectorizer
generates to reduce all elements in the vector outside of the loop, which
includes several ShuffleVector and one ExtractElement instructions.
Differential revision: http://reviews.llvm.org/D15250
llvm-svn: 261804
Manman Ren [Wed, 24 Feb 2016 23:05:43 +0000 (23:05 +0000)]
Fix assertion failure on MaybeODRUseExprs.
In VisitNonTypeTemplateParamDecl, before SubstExpr with the default argument,
we should create a ConstantEvaluated ExpressionEvaluationContext. Without this,
it is possible to use a PotentiallyEvaluated ExpressionEvaluationContext; and
MaybeODRUseExprs will not be cleared when popping the context, causing
assertion failure.
This is similar to how we handle the context before SubstExpr with the
default argument, in SubstDefaultTemplateArgument.
Part of PR13986.
rdar://
24480205
Differential Revision: http://reviews.llvm.org/D17576
llvm-svn: 261803
Rafael Espindola [Wed, 24 Feb 2016 22:47:41 +0000 (22:47 +0000)]
Make test more portable.
We just need to show that an error is printed, so no need to check for a
system dependent message.
llvm-svn: 261802
Chris Bieneman [Wed, 24 Feb 2016 22:42:47 +0000 (22:42 +0000)]
[CMake] Fix a really simple, silly bug from r261797
This should fix bots with CMake older than 2.8.12.
llvm-svn: 261801
Zachary Turner [Wed, 24 Feb 2016 22:41:04 +0000 (22:41 +0000)]
xfail case sensitivity test on Linux.
There are two tests in this file. One which only runs on Windows
and tests that you can set a breakpoint with mismatched case. And
another that only runs on non-Windows and tests that you cannot set
a breakpoint with mismatched case. This latter test is failing on
non Windows platforms for some reason. It could be that the test
is just written incorrectly, as I think the actual functionality
actually works correctly on non-Windows platforms.
llvm-svn: 261800
Sanjay Patel [Wed, 24 Feb 2016 22:31:18 +0000 (22:31 +0000)]
add tests to show missing bitcasted logic transform
llvm-svn: 261799
George Burgess IV [Wed, 24 Feb 2016 22:31:14 +0000 (22:31 +0000)]
Minor cleanup of Sema::CheckEnableIf. NFC.
llvm-svn: 261798
Chris Bieneman [Wed, 24 Feb 2016 22:29:42 +0000 (22:29 +0000)]
[CMake] Default CMAKE_MACOSX_RPATH to On, this is the default with CMP0042
Summary: Building the sanitizer libraries without rpaths causes all sorts of problems when you try to use them. This simple fix should make it all work.
Reviewers: samsonov, zaks.anna
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D17556
llvm-svn: 261797
Amaury Sechet [Wed, 24 Feb 2016 22:25:18 +0000 (22:25 +0000)]
Add capability to push/pop DFI in MCStreamer. NFC
Summary: This is extracted from D17555
Reviewers: davidxl, reames, sanjoy, MatzeB, pete
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D17579
llvm-svn: 261796
Zachary Turner [Wed, 24 Feb 2016 22:19:23 +0000 (22:19 +0000)]
Update the website with lots of new info about building / testing.
llvm-svn: 261795
Anna Zaks [Wed, 24 Feb 2016 22:12:18 +0000 (22:12 +0000)]
[asan] Do not instrument globals in the special "LLVM" sections
llvm-svn: 261794
Michael Kruse [Wed, 24 Feb 2016 22:08:28 +0000 (22:08 +0000)]
Introduce ScopStmt::getRegionNode(). NFC.
Replace an inline ternary operator pattern.
llvm-svn: 261793
Michael Kruse [Wed, 24 Feb 2016 22:08:24 +0000 (22:08 +0000)]
Introduce ScopStmt::getEntryBlock(). NFC.
This replaces an ungly inline ternary operator pattern.
llvm-svn: 261792
Michael Kruse [Wed, 24 Feb 2016 22:08:19 +0000 (22:08 +0000)]
Introduce Scop::getStmtFor. NFC.
Replace Scop::getStmtForBasicBlock and Scop::getStmtForRegionNode, and
add overloads for llvm::Instruction and llvm::RegionNode.
getStmtFor and overloads become the common interface to get the Stmt
that contains something. Named after LoopInfo::getLoopFor and
RegionInfo::getRegionFor.
llvm-svn: 261791
Michael Kruse [Wed, 24 Feb 2016 22:08:14 +0000 (22:08 +0000)]
Add assertions checking def dominates use. NFC.
This is also be caught by the function verifier, but disconnected from
the place that produced it. Catch it already at creation to be able to
reason more directly about the cause.
llvm-svn: 261790
Michael Kruse [Wed, 24 Feb 2016 22:08:11 +0000 (22:08 +0000)]
Add assertion to MemoryAccess::addIncoming. NFC.
MemoryAccess::addIncoming exists to remember which values come from that
statement in PHI writes, relevant for subregions that have multiple
exiting edges to an exit block. The exit block can be separated from the
exiting block by regions simplifications. It should not be called for
any read accesses.
llvm-svn: 261789
Michael Kruse [Wed, 24 Feb 2016 22:08:08 +0000 (22:08 +0000)]
Use inline variable declaration. NFC.
llvm-svn: 261788
Michael Kruse [Wed, 24 Feb 2016 22:08:05 +0000 (22:08 +0000)]
Replace std::auto_ptr with std::unique_ptr. NFC.
std::auto_ptr has been deprecated in C++11, which some compilers warn
about.
llvm-svn: 261787
Michael Kruse [Wed, 24 Feb 2016 22:08:02 +0000 (22:08 +0000)]
Tidy test case. NFC.
The test style guide defines that opt should get its input from stdin.
(instead by file argument to avoid that the file name appears in its
output)
CHECK-FORCED is not recognized by FileCheck; remove it.
llvm-svn: 261786
Michael Kruse [Wed, 24 Feb 2016 22:07:57 +0000 (22:07 +0000)]
Proofreading comments in DependenceInfo.h. NFC.
Typos, commas and other minor changes
(e.g. "dependences struct" -> "Dependences struct", because it is the
struct's name)
llvm-svn: 261785
David Majnemer [Wed, 24 Feb 2016 22:07:26 +0000 (22:07 +0000)]
Revert "Don't convert a char to a const char *"
This reverts commit r261780. It turns out the original code was just
fine. An overload for ltrim which takes char was added but the Doxygen
docs haven't seemed to pick it up.
llvm-svn: 261784
Rafael Espindola [Wed, 24 Feb 2016 22:07:12 +0000 (22:07 +0000)]
Mark R_AARCH64_CALL26 as relative.
llvm-svn: 261783
Peter Collingbourne [Wed, 24 Feb 2016 22:03:06 +0000 (22:03 +0000)]
Fix build by using hasFlag instead of hasArg.
llvm-svn: 261782
Richard Smith [Wed, 24 Feb 2016 21:59:10 +0000 (21:59 +0000)]
PR26237: Fix iterator invalidation bug that occurs if serializing
specializations of a template manages to trigger deserialization of more
specializations of the same template.
No test case provided: this is hard to reliably test due to standard library
differences.
Patch by Vassil Vassilev!
llvm-svn: 261781
David Majnemer [Wed, 24 Feb 2016 21:55:58 +0000 (21:55 +0000)]
Don't convert a char to a const char *
This fixes PR26728.
llvm-svn: 261780
Justin Lebar [Wed, 24 Feb 2016 21:55:11 +0000 (21:55 +0000)]
[CUDA] Mark all CUDA device-side function defs, decls, and calls as convergent.
Summary:
This is important for e.g. the following case:
void sync() { __syncthreads(); }
void foo() {
do_something();
sync();
do_something_else():
}
Without this change, if the optimizer does not inline sync() (which it
won't because __syncthreads is also marked as noduplicate, for now
anyway), it is free to perform optimizations on sync() that it would not
be able to perform on __syncthreads(), because sync() is not marked as
convergent.
Similarly, we need a notion of convergent calls, since in the case when
we can't statically determine a call's target(s), we need to know
whether it's safe to perform optimizations around the call.
This change is conservative; the optimizer will remove these attrs where
it can, see r260318, r260319.
Reviewers: majnemer
Subscribers: cfe-commits, jhen, echristo, tra
Differential Revision: http://reviews.llvm.org/D17056
llvm-svn: 261779
Artem Belevich [Wed, 24 Feb 2016 21:54:45 +0000 (21:54 +0000)]
[CUDA] do not allow attribute-based overloading for __global__ functions.
__global__ functions are present on both host and device side,
so providing __host__ or __device__ overloads is not going to
do anything useful.
llvm-svn: 261778
Justin Lebar [Wed, 24 Feb 2016 21:49:33 +0000 (21:49 +0000)]
[CUDA] Add conversion operators for threadIdx, blockIdx, gridDim, and blockDim to uint3 and dim3.
Summary:
This lets you write, e.g.
uint3 a = threadIdx;
uint3 b = blockIdx;
dim3 c = gridDim;
dim3 d = blockDim;
which is legal in nvcc, but was not legal in clang.
The fact that e.g. the type of threadIdx is not actually uint3 is still
observable, but now you have to try to observe it.
Reviewers: tra
Subscribers: echristo, cfe-commits
Differential Revision: http://reviews.llvm.org/D17561
llvm-svn: 261777
Justin Lebar [Wed, 24 Feb 2016 21:49:31 +0000 (21:49 +0000)]
[CUDA] Add hack so code which includes "curand.h" doesn't break.
Summary:
curand.h includes curand_mtgp32_kernel.h. In host mode, this header
redefines threadIdx and blockDim, giving them their "proper" types of
uint3 and dim3, respectively.
clang has its own plan for these variables -- their types are magic
builtin classes. So these redefinitions are incompatible.
As a hack, we force-include the offending CUDA header and use #defines
to get the right types for threadIdx and blockDim.
Reviewers: tra
Subscribers: echristo, cfe-commits
Differential Revision: http://reviews.llvm.org/D17562
llvm-svn: 261776
Justin Lebar [Wed, 24 Feb 2016 21:49:30 +0000 (21:49 +0000)]
[CUDA] Don't specify exact line numbers in cuda-builtin-vars.cu.
This makes the test less fragile to changes to cuda_builtin_vars.h.
Test-only change.
llvm-svn: 261775
Justin Lebar [Wed, 24 Feb 2016 21:49:28 +0000 (21:49 +0000)]
Bail on compilation as soon as a job fails.
Summary:
(Re-land of r260448, which was reverted in r260522 due to a test failure
in Driver/output-file-cleanup.c that only showed up in fresh builds.)
Previously we attempted to be smart; if one job failed, we'd run all
jobs that didn't depend on the failing job.
Problem is, this doesn't work well for e.g. CUDA compilation without
-save-temps. In this case, the device-side and host-side Assemble
actions (which actually are responsible for preprocess, compile,
backend, and assemble, since we're not saving temps) are necessarily
distinct. So our clever heuristic doesn't help us, and we repeat every
error message once for host and once for each device arch.
The main effect of this change, other than fixing CUDA, is that if you
pass multiple cc files to one instance of clang and you get a compile
error, we'll stop when the first cc1 job fails.
Reviewers: echristo
Subscribers: cfe-commits, jhen, echristo, tra, rafael
Differential Revision: http://reviews.llvm.org/D17217
llvm-svn: 261774
Justin Lebar [Wed, 24 Feb 2016 21:49:26 +0000 (21:49 +0000)]
Make test/Driver/output-file-cleanup.c hermetic.
Summary:
It checks that certain files do and exist, so make sure that they don't
exist at the beginning of the test.
This hid a failure in r260448; to see the failure, you had to run the test with
a clean-ish objdir.
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D17216
llvm-svn: 261773
Rafael Espindola [Wed, 24 Feb 2016 21:48:06 +0000 (21:48 +0000)]
Mark R_AARCH64_ADD_ABS_LO12_NC as relative.
llvm-svn: 261772
Zachary Turner [Wed, 24 Feb 2016 21:26:47 +0000 (21:26 +0000)]
Some fixes for case insensitive paths on Windows.
Paths on Windows are not case-sensitive. Because of this, if a file
is called main.cpp, you should be able to set a breakpoint on it
by using the name Main.cpp. In an ideal world, you could just
tell people to match the case, but in practice this can be a real
problem as it requires you to know whether the person who compiled
the program ran "clang++ main.cpp" or "clang++ Main.cpp", both of
which would work, regardless of what the file was actually called.
This fixes http://llvm.org/pr22667
Patch by Petr Hons
Differential Revision: http://reviews.llvm.org/D17492
Reviewed by: zturner
llvm-svn: 261771
Nico Weber [Wed, 24 Feb 2016 20:58:14 +0000 (20:58 +0000)]
Fix rejects-valid caused by r261297.
r261297 called hasUserProvidedDefaultConstructor() to check if defining a
const object is ok. This is incorrect for this example:
struct X { template<typename ...T> X(T...); int n; };
const X x; // formerly OK, now bogus error
Instead, track if a class has a defaulted default constructor, and disallow
a const object for classes that either have defaulted default constructors or
if they need an implicit constructor.
Bug report and fix approach by Richard Smith, thanks!
llvm-svn: 261770
Rafael Espindola [Wed, 24 Feb 2016 20:52:58 +0000 (20:52 +0000)]
Mark R_AARCH64_LDST64_ABS_LO12_NC as relative.
llvm-svn: 261769
Greg Clayton [Wed, 24 Feb 2016 20:47:13 +0000 (20:47 +0000)]
Removed unused functions.
llvm-svn: 261768
Peter Collingbourne [Wed, 24 Feb 2016 20:46:36 +0000 (20:46 +0000)]
Add whole-program vtable optimization feature to Clang.
This patch introduces the -fwhole-program-vtables flag, which enables the
whole-program vtable optimization feature (D16795) in Clang.
Differential Revision: http://reviews.llvm.org/D16821
llvm-svn: 261767
Rafael Espindola [Wed, 24 Feb 2016 20:18:06 +0000 (20:18 +0000)]
Mark R_AARCH64_LDST32_ABS_LO12_NC as relative.
llvm-svn: 261766
Rafael Espindola [Wed, 24 Feb 2016 19:58:50 +0000 (19:58 +0000)]
R_AARCH64_LDST8_ABS_LO12_NC is effectivelly relative.
It only sets the low bits and given the page alignment of PT_LOAD the
dynamic linker can only change the high ones.
llvm-svn: 261765
Rafael Espindola [Wed, 24 Feb 2016 19:36:30 +0000 (19:36 +0000)]
R_AARCH64_ADR_PREL_PG_HI21 is relative.
llvm-svn: 261764