Justin Holewinski [Fri, 27 Jun 2014 19:36:25 +0000 (19:36 +0000)]
[NVPTX] Use GreatestCommonDivisor64 from MathExtras instead of using our own. Thanks Hal!
llvm-svn: 211952
Nick Kledzik [Fri, 27 Jun 2014 19:08:56 +0000 (19:08 +0000)]
[mach-o] fix struct initialization to work with Windows compiler
llvm-svn: 211951
Aaron Ballman [Fri, 27 Jun 2014 19:05:17 +0000 (19:05 +0000)]
Adding some trailing whitespace after a comment previously ending with \ to ensure that it isn't lexed as a multiline comment. This silences some -Wcomment warnings.
llvm-svn: 211950
David Majnemer [Fri, 27 Jun 2014 18:38:12 +0000 (18:38 +0000)]
Include <tuple> to make buildbots happy
llvm-svn: 211949
Justin Holewinski [Fri, 27 Jun 2014 18:36:11 +0000 (18:36 +0000)]
[NVPTX] Add reflect intrinsic (better than matching by function name)
Also clean up some of the logic in NVVMReflect.cpp while we're messing around in there.
llvm-svn: 211948
Justin Holewinski [Fri, 27 Jun 2014 18:36:08 +0000 (18:36 +0000)]
[NVPTX] Handle all possible vector types in getSetCCResultType, not just the ones representable as MVTs
llvm-svn: 211947
Justin Holewinski [Fri, 27 Jun 2014 18:36:06 +0000 (18:36 +0000)]
[NVPTX] Add 'b' asm constraint
llvm-svn: 211946
Justin Holewinski [Fri, 27 Jun 2014 18:36:04 +0000 (18:36 +0000)]
[NVPTX] Simplify some argument lowering logic
llvm-svn: 211945
Justin Holewinski [Fri, 27 Jun 2014 18:36:02 +0000 (18:36 +0000)]
[NVPTX] Do not process samplers in GenericToNVVM
llvm-svn: 211944
Justin Holewinski [Fri, 27 Jun 2014 18:36:01 +0000 (18:36 +0000)]
[NVPTX] Error out if initializer is given for variable in an address space that does not support initialization
llvm-svn: 211943
Justin Holewinski [Fri, 27 Jun 2014 18:35:58 +0000 (18:35 +0000)]
[NVPTX] Add support for .managed variables for UVM
llvm-svn: 211942
Justin Holewinski [Fri, 27 Jun 2014 18:35:56 +0000 (18:35 +0000)]
[NVPTX] Emit .weak linkage for link_once, weak, available_externally, and common linkage
llvm-svn: 211941
Justin Holewinski [Fri, 27 Jun 2014 18:35:53 +0000 (18:35 +0000)]
[NVPTX] Variables that start with llvm. or nvvm. are reserved and should not be emitted
llvm-svn: 211940
Justin Holewinski [Fri, 27 Jun 2014 18:35:51 +0000 (18:35 +0000)]
[NVPTX] Fix handling of ldg/ldu intrinsics.
The address space of the pointer must be global (1) for these intrinsics. There must also be alignment metadata attached to the intrinsic calls, e.g.
%val = tail call i32 @llvm.nvvm.ldu.i.global.i32.p1i32(i32 addrspace(1)* %ptr), !align !0
!0 = metadata !{i32 4}
llvm-svn: 211939
Justin Holewinski [Fri, 27 Jun 2014 18:35:44 +0000 (18:35 +0000)]
[NVPTX] Clean up argument lowering code and properly handle alignment for structs and vectors
llvm-svn: 211938
Justin Holewinski [Fri, 27 Jun 2014 18:35:42 +0000 (18:35 +0000)]
[NVPTX] Add missing boolean vector contents flag
llvm-svn: 211937
Justin Holewinski [Fri, 27 Jun 2014 18:35:40 +0000 (18:35 +0000)]
[NVPTX] Add support for [SHL,SRA,SRL]_PARTS
llvm-svn: 211936
Justin Holewinski [Fri, 27 Jun 2014 18:35:37 +0000 (18:35 +0000)]
[NVPTX] Implement fma and imad contraction as target DAGCombiner patterns
This also introduces DAGCombiner patterns for mul.wide to multiply two smaller integers and produce a larger integer
llvm-svn: 211935
Justin Holewinski [Fri, 27 Jun 2014 18:35:33 +0000 (18:35 +0000)]
[NVPTX] Add support for efficient rotate instructions on SM 3.2+
llvm-svn: 211934
Justin Holewinski [Fri, 27 Jun 2014 18:35:30 +0000 (18:35 +0000)]
[NVPTX] Add missing isel patterns for 64-bit atomics
llvm-svn: 211933
Justin Holewinski [Fri, 27 Jun 2014 18:35:27 +0000 (18:35 +0000)]
[NVPTX] Add isel patterns for bit-field extract (bfe)
llvm-svn: 211932
Justin Holewinski [Fri, 27 Jun 2014 18:35:24 +0000 (18:35 +0000)]
[NVPTX] Add support for isspacep instruction
llvm-svn: 211931
Justin Holewinski [Fri, 27 Jun 2014 18:35:21 +0000 (18:35 +0000)]
[NVPTX] Add support for envreg reads
llvm-svn: 211930
Justin Holewinski [Fri, 27 Jun 2014 18:35:18 +0000 (18:35 +0000)]
[NVPTX] Add target options for PTX 3.2/4.0 and SM 5.0 (Maxwell)
Default PTX version is set to PTX 3.2
llvm-svn: 211929
Justin Holewinski [Fri, 27 Jun 2014 18:35:16 +0000 (18:35 +0000)]
[NVPTX] Update sub-target feature detection
llvm-svn: 211928
Justin Holewinski [Fri, 27 Jun 2014 18:35:14 +0000 (18:35 +0000)]
[NVPTX] Directly control the Machine SSA passes that are invoked for NVPTX.
NVPTX is a bit special in the optimizations it requires, so this gives
us better control over the backend optimization pipeline.
llvm-svn: 211927
Justin Holewinski [Fri, 27 Jun 2014 18:35:10 +0000 (18:35 +0000)]
[NVPTX] Emit .weak when linkage is not external, internal, or private
llvm-svn: 211926
Justin Holewinski [Fri, 27 Jun 2014 18:35:08 +0000 (18:35 +0000)]
[NVPTX] Just use getTypeAllocSize() when computing return value size for structures and vectors
llvm-svn: 211925
Tyler Nowicki [Fri, 27 Jun 2014 18:30:08 +0000 (18:30 +0000)]
Vectorization documentation for loop hint pragmas and Rpass diagnostics.
llvm-svn: 211924
Aaron Ballman [Fri, 27 Jun 2014 18:25:49 +0000 (18:25 +0000)]
Silencing some -Wcast-qual warnings. No functional changes intended.
llvm-svn: 211923
Chandler Carruth [Fri, 27 Jun 2014 18:25:23 +0000 (18:25 +0000)]
[x86] Fix a miscompile in the new shuffle lowering uncovered by
a bootstrap.
I managed to mis-remember how PACKUS worked on x86, and was using undef
for the high bytes instead of zero. The fix is fairly obvious.
llvm-svn: 211922
Nick Kledzik [Fri, 27 Jun 2014 18:25:01 +0000 (18:25 +0000)]
[mach-o] refactor x86_64 relocation handling.
This is first step in reworking how mach-o relocations are processed.
The existing KindHandler is going to become a delgate/helper object for
processing architecture specific references. The KindHandler knows how
to convert mach-o relocations into References and back, as well, as fixing
up the content the relocation is on.
One of the messy things about mach-o relocations is that they sometime
come in pairs, but the pairs still convert to one lld::Reference. So, the
conversion has to detect pairs (arch specific) and change the stride.
llvm-svn: 211921
David Majnemer [Fri, 27 Jun 2014 18:19:56 +0000 (18:19 +0000)]
IR: Add COMDATs to the IR
This new IR facility allows us to represent the object-file semantic of
a COMDAT group.
COMDATs allow us to tie together sections and make the inclusion of one
dependent on another. This is required to implement features like MS
ABI VFTables and optimizing away certain kinds of initialization in C++.
This functionality is only representable in COFF and ELF, Mach-O has no
similar mechanism.
Differential Revision: http://reviews.llvm.org/D4178
llvm-svn: 211920
Reid Kleckner [Fri, 27 Jun 2014 18:17:30 +0000 (18:17 +0000)]
cmake: Don't do anything for LLVM_ENABLE_ASSERTIONS=OFF
By default, CMake will set NDEBUG in Rel* builds and leave it off in
debug builds, so we shouldn't need to do anything ourselves.
Before this change, it was possible to a Debug build without assertions
(aka Debug-Asserts in the autoconf system) by configuring with
-DLLVM_ENABLE_ASSERTIONS=OFF, but this configuration isn't very useful.
You can still get the same effect by explicitly adding -DNDEBUG to
CFLAGS.
Differential Revision: http://reviews.llvm.org/D4257
Patch by Janusz Sobczak!
llvm-svn: 211919
Julien Lerouge [Fri, 27 Jun 2014 18:02:54 +0000 (18:02 +0000)]
lldb can interrupt waitpid, so EINTR shouldn't be an error. This fixes the case
where there is no timeout. In the case where there is a timeout though, the
code is still wrong since it doesn't check that the alarm really went off.
Without this patch, I cannot debug a program that forks itself using
sys::ExecuteAndWait with lldb.
llvm-svn: 211918
Matt Arsenault [Fri, 27 Jun 2014 17:57:00 +0000 (17:57 +0000)]
R600: Move trivial getters into header, use initializer list
llvm-svn: 211917
David Blaikie [Fri, 27 Jun 2014 17:45:43 +0000 (17:45 +0000)]
Fix test so it doesn't try to write out temporary files into the test tree.
llvm-svn: 211916
David Blaikie [Fri, 27 Jun 2014 17:40:03 +0000 (17:40 +0000)]
Remove 'const' from MemoryBuffers used through the SourceManager
This removes a const_cast added in r211884 that occurred due to an
inconsistency in how MemoryBuffers are handled between some parts of
clang and LLVM.
MemoryBuffers are immutable and the general convention in the LLVM
project is to omit const from immutable types as it's simply
redundant/verbose (see llvm::Type, for example). While this change
doesn't remove "const" from /every/ MemoryBuffer, it at least makes this
chain of ownership/usage consistent.
llvm-svn: 211915
Logan Chien [Fri, 27 Jun 2014 17:25:54 +0000 (17:25 +0000)]
Avoid non-ascii character in the source code.
llvm-svn: 211914
David Majnemer [Fri, 27 Jun 2014 17:19:44 +0000 (17:19 +0000)]
MC: Fix associative sections on COFF
COFF sections in MC were represented by a tuple of section-name and
COMDAT-name. This is not sufficient to represent a .text section
associated with another .text section; we need a way to distinguish
between the key section and the one marked associative.
llvm-svn: 211913
Logan Chien [Fri, 27 Jun 2014 17:17:44 +0000 (17:17 +0000)]
Silence the implicit signed/unsigned conversion warning.
llvm-svn: 211912
Juergen Ributzka [Fri, 27 Jun 2014 17:16:34 +0000 (17:16 +0000)]
[FastISel][X86] Fix typos.
llvm-svn: 211911
Ben Langmuir [Fri, 27 Jun 2014 17:04:26 +0000 (17:04 +0000)]
Add reparse test for libclang
Adapted from a reproducer by Dan Schmidt, thanks!
llvm-svn: 211910
Reid Kleckner [Fri, 27 Jun 2014 17:02:02 +0000 (17:02 +0000)]
clang-cl: Map /EHs- to -fno-exceptions
This isn't 100% compatible with MSVC, but it's close enough. MSVC's /EH
flag doesn't really control exceptions so much as how to clean up after
an exception is thrown. The upshot is that cl.exe /EHs- will compile
try, throw, and catch statements with a warning, but clang-cl will
reject such constructs with a hard error. We can't compile such EH
constructs anyway, but this may matter to consumers of the AST.
Reviewers: hans
Differential Revision: http://reviews.llvm.org/D4317
llvm-svn: 211909
David Majnemer [Fri, 27 Jun 2014 16:56:27 +0000 (16:56 +0000)]
CodeGen: Fix a typo in getThreadLocalWrapperLinkage
The description had a misspelling. No functionality change.
llvm-svn: 211908
Todd Fiala [Fri, 27 Jun 2014 16:52:49 +0000 (16:52 +0000)]
Fix ObjectFileELF to determine architectures independent of host.
Previously ObjectFileELF was simplifying and assuming the object file it was
looking at was the same as the host architecture/triple. This would break
attempts to run, say, lldb on MacOSX against lldb-gdbserver on Linux since
the MacOSX lldb would say that the linux elf file was really an Apple MacOSX
architecture. Chaos would ensue.
This change allows the elf file to parse ELF notes for Linux, FreeBSD and
NetBSD, and determine the OS appropriately from them. It also initializes
the OS type from the ELF header OSABI if it is set (which it is for FreeBSD
but not for Linux).
Added a test with freebsd and linux images that verify that
'(lldb) image list -t -A' prints out the expected architecture for each.
llvm-svn: 211907
Matt Arsenault [Fri, 27 Jun 2014 16:52:49 +0000 (16:52 +0000)]
R600: Don't crash on unhandled instruction in promote alloca
llvm-svn: 211906
Chandler Carruth [Fri, 27 Jun 2014 16:37:27 +0000 (16:37 +0000)]
Fix a bug in my previous patch by restoring the behavior that the fatal
error handler is only registered once.
To avoid the use of std::call_once (the obvious way to do this) I've
wrapped everything up into a managed static and done the work in
a constructor. Silly, but it should be effective.
Some out-of-tree libclang users reported this to me, and I've asked them
to put together a test case which exhibits this behavior, but I wanted
to fix things ASAP since the nature of the fix is straight forward.
llvm-svn: 211905
Ed Maste [Fri, 27 Jun 2014 16:37:20 +0000 (16:37 +0000)]
llvm-objdump: don't assert if ELF file has no sections
FreeBSD core files, for example, have no sections (only program headers).
llvm.org/pr20139
Differential Revision: http://reviews.llvm.org/D4323
llvm-svn: 211904
Jim Ingham [Fri, 27 Jun 2014 16:02:55 +0000 (16:02 +0000)]
Revert the debugserver part of r211868. While formally a fine change, debugserver
doesn't depend on llvm (it really doesn't even depend on anything in lldb) and this
nicety isn't worth adding that dependence.
llvm-svn: 211903
Alexander Kornienko [Fri, 27 Jun 2014 15:30:55 +0000 (15:30 +0000)]
Clean up unused variable warning in release build.
llvm-svn: 211902
Chandler Carruth [Fri, 27 Jun 2014 15:14:39 +0000 (15:14 +0000)]
This fixes libclang to cope with the now compile-time multithreaded
selection re-enabled in r211900 in LLVM.
The approach (unlike r211121) doesn't rely on std::mutex or
std::call_once to avoid breaknig cygwin bots.
llvm-svn: 211901
Chandler Carruth [Fri, 27 Jun 2014 15:13:01 +0000 (15:13 +0000)]
Re-apply r211287: Remove support for LLVM runtime multi-threading.
I'll fix the problems in libclang and other projects in ways that don't
require <mutex> until we sort out the cygwin situation.
llvm-svn: 211900
Chandler Carruth [Fri, 27 Jun 2014 15:04:42 +0000 (15:04 +0000)]
[cmake] When Python is disabled for LLDB, don't try to install the
python bindings.
For example, this prevents errors on systems that disable python because
the system python isn't available. Without this, we still try to install
things and get install errors when that doesn't work.
llvm-svn: 211899
Oliver Stannard [Fri, 27 Jun 2014 13:59:27 +0000 (13:59 +0000)]
[ARM] Fix AAPCS non-compliance caused by very large structs
This is a fix to the code in clang which inserts padding arguments to
ensure that the ARM backend can emit AAPCS-VFP compliant code. This code
needs to track the number of registers which have been allocated in order
to do this. When passing a very large struct (>64 bytes) by value, clang
emits IR which takes a pointer to the struct, but the backend converts this
back to passing the struct in registers and on the stack. The bug was that
this was being considered by clang to only use one register, meaning that
there were situations in which padding arguments were incorrectly emitted
by clang.
llvm-svn: 211898
Ulrich Weigand [Fri, 27 Jun 2014 13:04:12 +0000 (13:04 +0000)]
[PowerPC] Constrain base register in PPCRegisterInfo::resolveFrameIndex
I've run into a bug where current LLVM at -O0 (with fast-isel)
generated invalid code like:
ld 0, 20936(1) # 8-byte Folded Reload
stw 12, 10348(0)
stw 12, 10344(0)
The underlying vreg had been introduced as base register by the
Local Stack Slot Allocation pass. That register was constrained
to G8RC by PPCRegisterInfo::materializeFrameBaseRegister to match
the ADDI instruction used to set it, but it was *not* constrained
to G8RC_NOX0 to fit the *use* of the register in an address.
That should have happened in PPCRegisterInfo::resolveFrameIndex.
This patch adds an appropriate constrainRegClass call.
Reviewed by Hal Finkel.
llvm-svn: 211897
Evgeniy Stepanov [Fri, 27 Jun 2014 12:48:01 +0000 (12:48 +0000)]
[msan] Add store_context_size= flag.
A new flag to control stack trace size for store event (in
track-origins=2 mode) independently of malloc_context_size.
llvm-svn: 211896
Logan Chien [Fri, 27 Jun 2014 12:37:36 +0000 (12:37 +0000)]
Replace GetProgramPath("ld") with GetLinkerPath().
llvm-svn: 211895
Chandler Carruth [Fri, 27 Jun 2014 12:04:18 +0000 (12:04 +0000)]
[x86] Clean up some unused variables, especially in release builds.
llvm-svn: 211894
James Molloy [Fri, 27 Jun 2014 11:53:35 +0000 (11:53 +0000)]
[ARM-BE] Generate correct NEON intrinsics for big endian systems.
The NEON intrinsics in arm_neon.h are designed to work on vectors
"as-if" loaded by (V)LDR. We load vectors "as-if" (V)LD1, so the
intrinsics are currently incorrect.
This patch adds big-endian versions of the intrinsics that does the
"obvious but dumb" thing of reversing all vector inputs and all
vector outputs. This will produce extra REVs, but we trust the
optimizer to remove them.
llvm-svn: 211893
Chandler Carruth [Fri, 27 Jun 2014 11:40:13 +0000 (11:40 +0000)]
[x86] Teach the target combine step to aggressively fold pshufd insturcions.
Summary:
This allows it to fold pshufd instructions across intervening
half-shuffles and other noise. This pattern actually shows up in the
generic lowering tests, but I've also added direct tests using
intrinsics to make sure that the specific desired functionality is
working even if the lowering stuff changes in the future.
Differential Revision: http://reviews.llvm.org/D4292
llvm-svn: 211892
Simon Atanasyan [Fri, 27 Jun 2014 11:36:45 +0000 (11:36 +0000)]
[ELF][Mips] Fix recognition of MIPS 64-bit arch in the ELFObjectFile:getArch() method.
llvm-svn: 211891
Chandler Carruth [Fri, 27 Jun 2014 11:34:40 +0000 (11:34 +0000)]
[x86] Teach the target-specific combining how to aggressively fold
half-shuffles, even looking through intervening instructions in a chain.
Summary:
This doesn't happen to show up with any test cases I've found for the current
shuffle lowering, but previous attempts would benefit from this and it seems
generally useful. I've tested it directly using intrinsics, which also shows
that it will work with hand vectorized code as well.
Note that even though pshufd isn't directly used in these tests, it gets
exercised because we combine some of the half shuffles into a pshufd
first, and then merge them.
Differential Revision: http://reviews.llvm.org/D4291
llvm-svn: 211890
Chandler Carruth [Fri, 27 Jun 2014 11:27:52 +0000 (11:27 +0000)]
[x86] Teach the X86 backend to DAG-combine SSE2 shuffles that are
trivially redundant.
This fixes several cases in the new vector shuffle lowering algorithm
which would generate redundant shuffle instructions for the sake of
simplicity.
I'm also deleting a testcase which was somewhat ridiculous. It was
checking for a bug in 2007 about incorrectly transforming shuffles by
looking for the string "-86" in the output of a pretty substantial
function. This test case doesn't seem to have any value at this point.
Differential Revision: http://reviews.llvm.org/D4240
llvm-svn: 211889
Chandler Carruth [Fri, 27 Jun 2014 11:23:44 +0000 (11:23 +0000)]
[x86] Begin a significant overhaul of how vector lowering is done in the
x86 backend.
This sketches out a new code path for vector lowering, hidden behind an
off-by-default flag while it is under development. The fundamental idea
behind the new code path is to aggressively break down the problem space
in ways that ease selecting the odd set of instructions available on
x86, and carefully avoid scalarizing code even when forced to use older
ISAs. Notably, this starts off restricting itself to SSE2 and implements
the complete vector shuffle and blend space for 128-bit vectors in SSE2
without scalarizing. The plan is to layer on top of this ISA extensions
where we can bail out of the complex SSE2 lowering and opt for
a cheaper, specialized instruction (or set of instructions). It also
needs to be generalized to AVX and AVX512 vector widths.
Currently, this does a decent but not perfect job for SSE2. There are
some specific shortcomings that I plan to address:
- We need a peephole combine to fold together shuffles where possible.
There are cases where a previous shuffle could be modified slightly to
arrange for elements to be in the correct position and a later shuffle
eliminated. Doing this eagerly added quite a bit of complexity, and
so my plan is to combine away these redundancies afterward.
- There are a lot more clever ways to use unpck and pack that need to be
added. This is essential for real world shuffles as it turns out...
Once SSE2 is polished a bit I should be able to get interesting numbers
on performance improvements on benchmarks conducive to vectorization.
All of this will be off by default until it is functionally equivalent
of course.
Differential Revision: http://reviews.llvm.org/D4225
llvm-svn: 211888
Alexander Kornienko [Fri, 27 Jun 2014 11:18:13 +0000 (11:18 +0000)]
Don't check clang binary name, as it can be different in some test setups.
Summary: This unbreaks our internal build after these tests were turned on in r211738.
Reviewers: chandlerc
Reviewed By: chandlerc
Subscribers: benlangmuir, cfe-commits
Differential Revision: http://reviews.llvm.org/D4311
llvm-svn: 211887
Alexey Bataev [Fri, 27 Jun 2014 10:37:06 +0000 (10:37 +0000)]
[OPENMP] Parsing and sema analysis for 'copyprivate' clause.
llvm-svn: 211886
Ulrich Weigand [Fri, 27 Jun 2014 10:32:14 +0000 (10:32 +0000)]
[RuntimeDyld, PowerPC] Fix/improve handling of TOC relocations
Current PPC64 RuntimeDyld code to handle TOC relocations has two
problems:
- With recent linkers, in addition to the relocations that implicitly
refer to the TOC base (R_PPC64_TOC*), you can now also use the .TOC.
magic symbol with any other relocation to refer to the TOC base
explicitly. This isn't currently used much in ELFv1 code (although
it could be), but it is essential in ELFv2 code.
- In a complex JIT environment with multiple modules, each module may
have its own .toc section, and TOC relocations in one module must
refer to *its own* TOC section. The current findPPC64TOC implementation
does not correctly implement this; in fact, it will always return the
address of the first TOC section it finds anywhere. (Note that at the
time findPPC64TOC is called, we don't even *know* which module the
relocation originally resided in, so it is not even possible to fix
this routine as-is.)
This commit fixes both problems by handling TOC relocations earlier, in
processRelocationRef. To do this, I've removed the findPPC64TOC routine
and replaced it by a new routine findPPC64TOCSection, which works
analogously to findOPDEntrySection in scanning the sections of the
ObjImage provided by its caller, processRelocationRef. This solves the
issue of finding the correct TOC section associated with the current
module.
This makes it straightforward to implement both R_PPC64_TOC relocations,
and relocations explicitly refering to the .TOC. symbol, directly in
processRelocationRef. There is now a new problem in implementing the
R_PPC64_TOC16* relocations, because those can now in theory involve
*three* different sections: the relocation may be applied in section A,
refer explicitly to a symbol in section B, and refer implicitly to the
TOC section C. The final processing of the relocation thus may only
happen after all three of these sections have been assigned final
addresses. There is currently no obvious means to implement this in
its general form with the common-code RuntimeDyld infrastructure.
Fortunately, ppc64 code usually makes no use of this most general form;
in fact, TOC16 relocations are only ever generated by LLVM for symbols
residing themselves in the TOC, which means "section B" == "section C"
in the above terminology. This special case can easily be handled with
the current infrastructure, and that is what this patch does.
[ Unhandled cases result in an explicit error, unlike the current code
which silently returns the wrong TOC base address ... ]
This patch makes the JIT work on both BE and LE (ELFv2 requires
additional patches, of course), and allowed me to successfully run
complex JIT scenarios (via mesa/llvmpipe).
Reviewed by Hal Finkel.
llvm-svn: 211885
Alp Toker [Fri, 27 Jun 2014 09:24:27 +0000 (09:24 +0000)]
const_cast the memory MemoryBuffer following LLVM r211883
llvm-svn: 211884
Alp Toker [Fri, 27 Jun 2014 09:19:14 +0000 (09:19 +0000)]
IRReader: don't mark MemoryBuffers const
llvm-svn: 211883
Evgeniy Stepanov [Fri, 27 Jun 2014 08:10:27 +0000 (08:10 +0000)]
[tsan] Disable a failing test.
java_finalizer is failing on all sanitizer bots since it was added in r211829.
llvm-svn: 211882
Dinesh Dwivedi [Fri, 27 Jun 2014 07:47:35 +0000 (07:47 +0000)]
Added instruction combine to transform few more negative values addition to subtraction (Part 3)
This patch enables transforms for
(x + (~(y | c) + 1) --> x - (y | c) if c is odd
Differential Revision: http://reviews.llvm.org/D4210
llvm-svn: 211881
Eric Christopher [Fri, 27 Jun 2014 07:38:01 +0000 (07:38 +0000)]
Remove the caching of the target machine from SystemZTargetLowering.
Update all callers and uses accordingly.
llvm-svn: 211880
David Majnemer [Fri, 27 Jun 2014 07:36:26 +0000 (07:36 +0000)]
GlobalOpt: Fix constantfold-initializers.ll test
The test added in r211762 was sloppy, the correct initializer wasn't
added to @llvm.global_ctors
Spotted by Pasi Parviainen!
llvm-svn: 211879
Evgeniy Stepanov [Fri, 27 Jun 2014 07:32:08 +0000 (07:32 +0000)]
[msan] Fix truncated stack trace in chained origin reports.
This is a leftover from the times when the next (chained) origin id
was stored as the last frame of a stack trace.
llvm-svn: 211878
Eric Christopher [Fri, 27 Jun 2014 07:01:17 +0000 (07:01 +0000)]
Remove target machine caching from SystemZInstrInfo and
SystemZRegisterInfo and replace it with the subtarget as that's
all they needed in the first place. Update all uses and calls
accordingly.
llvm-svn: 211877
Justin Bogner [Fri, 27 Jun 2014 06:35:05 +0000 (06:35 +0000)]
Driver: Pass -ivfsoverlay to module crashdumps
When we create a crashdump involving modules, we build a VFS to
reproduce the problem with. This updates the reproduction script to
use that VFS.
llvm-svn: 211876
Andreas Simbuerger [Fri, 27 Jun 2014 06:21:14 +0000 (06:21 +0000)]
Don't expand to invalid Scops with -polly-detect-keep-going
Enabling -keep-going in ScopDetection causes expansion to an invalid
Scop candidate.
Region A <- Valid candidate
|
Region B <- Invalid candidate
If -keep-going is enabled, ScopDetection would expand A to A+B because
the RejectLog is never checked for errors during expansion.
With this patch only A becomes a valid Scop.
llvm-svn: 211875
Alp Toker [Fri, 27 Jun 2014 06:02:00 +0000 (06:02 +0000)]
Add a FIXME for an unfortunate issue in ConvertBackendLocation()
This function is copying the entire file contents into memory repeatedly and
allocating new file IDs *each time* a source location is processed.
llvm-svn: 211874
David Blaikie [Fri, 27 Jun 2014 05:34:05 +0000 (05:34 +0000)]
Revert "Revert "Revert "PR20038: DebugInfo: Inlined call sites where the caller has debug info but the call itself has no debug location."""
Reverting this again, didn't mean to commit it - while r211872 fixes one
of the issues here, there are still others to figure out and address.
This reverts commit r211871.
llvm-svn: 211873
David Blaikie [Fri, 27 Jun 2014 05:32:09 +0000 (05:32 +0000)]
ArgumentPromotion: Propagate debug locations on calls for which arguments are promoted.
llvm-svn: 211872
David Blaikie [Fri, 27 Jun 2014 05:31:49 +0000 (05:31 +0000)]
Revert "Revert "PR20038: DebugInfo: Inlined call sites where the caller has debug info but the call itself has no debug location.""
This reverts commit r211724.
llvm-svn: 211871
Eric Christopher [Fri, 27 Jun 2014 05:26:28 +0000 (05:26 +0000)]
Have SystemZSelectionDAGInfo constructor take a DataLayout rather
than a target machine since it doesn't need anything past the
DataLayout.
llvm-svn: 211870
Craig Topper [Fri, 27 Jun 2014 05:18:21 +0000 (05:18 +0000)]
Rename getX86ConditonCode -> getX86ConditionCode
llvm-svn: 211869
Saleem Abdulrasool [Fri, 27 Jun 2014 05:17:41 +0000 (05:17 +0000)]
lldb: remove adhoc implementation of array_sizeof
Replace adhoc inline implementation of llvm::array_lengthof in favour of the
implementation in LLVM. This is simply a cleanup change, no functional change
intended.
llvm-svn: 211868
Andrew Trick [Fri, 27 Jun 2014 05:09:36 +0000 (05:09 +0000)]
Left out the NDEBUG in the previous checkin.
llvm-svn: 211867
Saleem Abdulrasool [Fri, 27 Jun 2014 05:06:41 +0000 (05:06 +0000)]
Driver: use GNU::Link for the Generic_GCC toolchain
This changes the behaviour of the driver for linking to match that of the
Generic_GCC::Assemble. The default link should use "ld" rather than "gcc" for
the linker as gcc does. This avoids the unnecessary round-tripping through gcc.
It also is much more reasonable behaviour from the user's perspective. This
should have been updated with SVN r195554 which changed the behaviour of
Generic_GCC::Assemble.
The gcc_forward test needs to be updated to mark the fact that -march is a flag
for GCC not ld. This was updated as a typo fix, but added a check for a flag
that is not a link flag.
The bindings test covers the change for testing, and thus no new test was added.
llvm-svn: 211866
Andrew Trick [Fri, 27 Jun 2014 04:57:05 +0000 (04:57 +0000)]
MachineScheduler: add some book-keeping to fix an assert.
Fixe for Bug 20057 - Assertion failied in llvm::SUnit* llvm::SchedBoundary::pickOnlyChoice(): Assertion `i <= (HazardRec->getMaxLookAhead() + MaxObservedStall) && "permanent hazard"'
Thanks to Chad for the test case.
llvm-svn: 211865
Alp Toker [Fri, 27 Jun 2014 04:48:32 +0000 (04:48 +0000)]
Propagate const-correctness into parseBitcodeFile()
llvm-svn: 211864
Eric Christopher [Fri, 27 Jun 2014 04:38:30 +0000 (04:38 +0000)]
Have MipsSelectionDAGInfo constructor take a DataLayout rather
than a target machine since it doesn't need anything past the
DataLayout.
llvm-svn: 211863
Alp Toker [Fri, 27 Jun 2014 04:34:44 +0000 (04:34 +0000)]
CodeGenAction: don't duplicate entire .ll/.bc files into memory
Requires supporting changes from LLVM r211861.
llvm-svn: 211862
Alp Toker [Fri, 27 Jun 2014 04:33:58 +0000 (04:33 +0000)]
ParseIR: don't take ownership of the MemoryBuffer
clang was needlessly duplicating whole memory buffer contents in an attempt to
satisfy unclear ownership semantics. Let's just hide internal LLVM quirks and
present a simple non-owning interface.
The public C API preserves previous behaviour for stability.
llvm-svn: 211861
Eric Christopher [Fri, 27 Jun 2014 04:33:14 +0000 (04:33 +0000)]
Move NVPTX subtarget dependent variables from the target machine
to the subtarget.
llvm-svn: 211860
Matt Arsenault [Fri, 27 Jun 2014 03:55:55 +0000 (03:55 +0000)]
R600: Add some testcases for promote alloca pass.
More complicated GEPs are skipped. Add some tests to
actually stress this skipping.
llvm-svn: 211859
Eric Christopher [Fri, 27 Jun 2014 03:45:49 +0000 (03:45 +0000)]
Use the target lowering we can get off of the DAG rather than off
of the cached target machine.
llvm-svn: 211858
Alexey Bataev [Fri, 27 Jun 2014 03:33:10 +0000 (03:33 +0000)]
[OPENMP] Added several test cases in nesting of OpenMP regions test after review from Samuel F Antao.
llvm-svn: 211857
Alp Toker [Fri, 27 Jun 2014 03:11:38 +0000 (03:11 +0000)]
Account for differences in grep implementations
llvm-svn: 211856
Saleem Abdulrasool [Fri, 27 Jun 2014 03:11:18 +0000 (03:11 +0000)]
Support: update DLLCharacteristics enumeration
Add the new AppContainer characteristic which is import for Windows Store
(Metro) compatible applications. Add the new Control Flow Guard flag to bring
the enumeration up to date with the current values as of Windows 8.1.
llvm-svn: 211855
Saleem Abdulrasool [Fri, 27 Jun 2014 03:11:14 +0000 (03:11 +0000)]
Support: tweak comment layout
Make the comment layout more uniform. NFC.
llvm-svn: 211854
Alp Toker [Fri, 27 Jun 2014 02:59:39 +0000 (02:59 +0000)]
Restore test from r211844 skipping '.file' directives
At least this answers the question of whether .bc/.ll input processed by the
frontend produces identical output to the original compilation.
llvm-svn: 211853