Tim Northover [Wed, 25 Jun 2014 11:21:51 +0000 (11:21 +0000)]
[mach-o]: atomize zero-terminated literals correctly.
When looking through sections with zero-terminated string-literals (__cstring
or __ustring) we were constantly rechecking the first few bytes of the string
for '\0' rather than advancing along. This obviously failed unless all strings
within the section had the same length as that first one.
llvm-svn: 211682
Tim Northover [Wed, 25 Jun 2014 10:59:37 +0000 (10:59 +0000)]
[mach-o] don't assume all sections have symbols
We were trying to examine the first symbol in a section that we wanted to
atomize by symbols, even when there wasn't one. Instead, we should make the
initial anonymous symbol cover the entire section in that situation.
llvm-svn: 211681
Jeroen Ketema [Wed, 25 Jun 2014 10:06:35 +0000 (10:06 +0000)]
Add exp10
Reviewed-by: Tom Stellard <tom@stellard.net>
llvm-svn: 211680
Andrea Di Biagio [Wed, 25 Jun 2014 10:02:21 +0000 (10:02 +0000)]
[X86] Add target combine rule to select ADDSUB instructions from a build_vector
This patch teaches the backend how to combine a build_vector that implements
an 'addsub' between packed float vectors into a sequence of vector add
and vector sub followed by a VSELECT.
The new VSELECT is expected to be lowered into a BLENDI.
At ISel stage, the sequence 'vector add + vector sub + BLENDI' is
pattern-matched against ISel patterns added at r211427 to select
'addsub' instructions.
Added three more ISel patterns for ADDSUB.
Added test sse3-avx-addsub-2.ll to verify that we correctly emit 'addsub'
instructions.
llvm-svn: 211679
Evgeniy Stepanov [Wed, 25 Jun 2014 09:17:21 +0000 (09:17 +0000)]
Factor out part of LICM::sink into a helper function.
llvm-svn: 211678
David Majnemer [Wed, 25 Jun 2014 08:15:07 +0000 (08:15 +0000)]
AST: Initialization with dllimport functions in C
The C++ language requires that the address of a function be the same
across all translation units. To make __declspec(dllimport) useful,
this means that a dllimported function must also obey this rule. MSVC
implements this by dynamically querying the import address table located
in the linked executable. This means that the address of such a
function in C++ is not constant (which violates other rules).
However, the C language has no notion of ODR nor does it permit dynamic
initialization whatsoever. This requires implementations to _not_
dynamically query the import address table and instead utilize a wrapper
function that will be synthesized by the linker which will eventually
query the import address table. The effect this has is, to say the
least, perplexing.
Consider the following C program:
__declspec(dllimport) void f(void);
typedef void (*fp)(void);
static const fp var = &f;
const fp fun() { return &f; }
int main() { return fun() == var; }
MSVC will statically initialize "var" with the address of the wrapper
function and "fun" returns the address of the actual imported function.
This means that "main" will return false!
Note that LLVM's optimizers are strong enough to figure out that "main"
should return true. However, this result is dependent on having
optimizations enabled!
N.B. This change also permits the usage of dllimport declarators inside
of template arguments; they are sufficiently constant for such a
purpose. Add tests to make sure we don't regress here.
llvm-svn: 211677
Alexander Kornienko [Wed, 25 Jun 2014 08:09:35 +0000 (08:09 +0000)]
Added a test to ensure -Wimplicit-fallthrough works with -fblocks correctly.
llvm-svn: 211676
Alexey Volkov [Wed, 25 Jun 2014 08:04:58 +0000 (08:04 +0000)]
Fix unresolved symbols when loading gold plugin
Differential Revision: http://reviews.llvm.org/D4275
llvm-svn: 211675
Simon Atanasyan [Wed, 25 Jun 2014 07:55:55 +0000 (07:55 +0000)]
[ELF] Add two new virtual functions to the `OutputELFWriter` class to control
dynamic symbol table populating and DT_NEEDED tag creation.
The `isDynSymEntryRequired` function returns true if the specified shared
library atom requires a dynamic symbol table entry. The `isNeededTagRequired`
function returns true if we need to create DT_NEEDED tag for the shared
library defined specified shared atom.
By default the both functions return true. So there is no functional changes
for all targets except MIPS. Probably we need to spread the same modifications
on other ELF targets but I want to implement and fully tested complete set of
changes for MIPS target first.
For MIPS we create a dynamic symbol table entry for a shared library atom iif
this atom is referenced by a regular defined atom. For example, if library L1
defines symbol T1, library L2 defines symbol T2 and uses symbol T1
and executable file E1 uses symbol T2 but does not use symbol T1 we create
an entry in the E1 dynamic symbol table for symbol T2 and do not create
an entry for T1.
The patch creates DT_NEEDED tags for shared libraries contain shared library
atoms which a) referenced by regular defined atoms; b) have corresponding
copy dynamic relocations (R_MIPS_COPY).
Now the patch does not take in account --as-needed / --no-as-needed command
line options. So it is too restrictive and create DT_NEEDED tags for really
needed shared libraries only. I plan to fix that by subsequent patches.
llvm-svn: 211674
Evgeniy Stepanov [Wed, 25 Jun 2014 07:54:58 +0000 (07:54 +0000)]
[LICM] Don't create more than one copy of an instruction per loop exit block when sinking.
Fixes exponential compilation complexity in PR19835, caused by
LICM::sink not handling the following pattern well:
f = op g
e = op f, g
d = op e
c = op d, e
b = op c
a = op b, c
When an instruction with N uses is sunk, each of its operands gets N
new uses (all of them - phi nodes). In the example above, if a had 1
use, c would have 2, e would have 4, and g would have 8.
llvm-svn: 211673
Alexey Bataev [Wed, 25 Jun 2014 06:52:00 +0000 (06:52 +0000)]
[OPENMP] OMPSimdDirective and OMPForDirective: added initialization for CollapsedNum member.
llvm-svn: 211672
Tobias Grosser [Wed, 25 Jun 2014 06:38:18 +0000 (06:38 +0000)]
test/ScopInfo: Remove %defaultOpts and list passes explicitly
Due to bad habit we sometimes used a variable %defaultOpts that listed
a set of passes commonly run to prepare for Polly. None of these test cases
actually needs special preparation and only two of them need the 'basicaa' to
be scheduled. Scheduling the required alias analysis explicitly makes the test
cases clearer.
llvm-svn: 211671
Tobias Grosser [Wed, 25 Jun 2014 06:31:19 +0000 (06:31 +0000)]
Clean up XFAILed test cases
We had a set of test cases that have been incomplete and XFAILED. This patch
completes a couple of the interesting ones and removes the ones which seem
redundant or not sufficiently reduced to be useful.
llvm-svn: 211670
Zachary Turner [Wed, 25 Jun 2014 05:42:32 +0000 (05:42 +0000)]
Replace GCC-specific intrinsic with portable alternative.
Not all supported compilers have GCC intrinsics, so this patch
uses the correct portable alternative.
Additionally, this patch fixes an off-by-one error. __builtin_ffs
returns the 1-based index of the least-significant 1-bit, but the
function expects the base 2 logarithm of the number, which is
equivalent to the 0-based index of the least-significant 1-bit.
Reviewed by: Keno Fischer
Differential Revision: http://reviews.llvm.org/D4284
llvm-svn: 211669
Rafael Espindola [Wed, 25 Jun 2014 05:37:58 +0000 (05:37 +0000)]
Fix another asserting method in the null streamer.
llvm-svn: 211668
Zachary Turner [Wed, 25 Jun 2014 05:37:25 +0000 (05:37 +0000)]
Don't go through the TypeSourceInfo when getting the SourceRange.
VarDecl provides a method getSourceRange(), which provides a more
robust way of getting the SourceRange since the TypeSourceInfo can
be null in certain cases.
Reviewed by: majnemer
Differential Revision: http://reviews.llvm.org/D4281
llvm-svn: 211667
Rafael Espindola [Wed, 25 Jun 2014 05:31:22 +0000 (05:31 +0000)]
Fix a regression from r211653.
The method was empty in the null streamer but I mistakenly replaced it with
the aborting one in MCStreamer.
llvm-svn: 211666
Simon Atanasyan [Wed, 25 Jun 2014 05:00:59 +0000 (05:00 +0000)]
[Driver] Follow-up to r211598, r211663. Do not build a dynamic linker
path using sub-strings concatenation. Return the whole string explicitly.
llvm-svn: 211665
NAKAMURA Takumi [Wed, 25 Jun 2014 04:34:36 +0000 (04:34 +0000)]
MCNullStreamer.cpp: Roll back a few empty methods that have been marked as unreachable in MCStreamer.cpp.
void EmitCOFFSecRel32(MCSymbol const *Symbol) override {}
void EmitGPRel32Value(const MCExpr *Value) override {}
It should fix crash like "llc -mtriple=i686-cygwin -filetype=null".
llvm-svn: 211664
NAKAMURA Takumi [Wed, 25 Jun 2014 04:34:20 +0000 (04:34 +0000)]
Tools.cpp: Update getLinuxDynamicLinker() to return Twine instead of StringRef, since r211598 has introduced manipulation of return string.
llvm-svn: 211663
NAKAMURA Takumi [Wed, 25 Jun 2014 04:34:10 +0000 (04:34 +0000)]
VirtualFileSystemTest.cpp: Get rid of initializer list on std::vector, to appease msc17.
llvm-svn: 211662
NAKAMURA Takumi [Wed, 25 Jun 2014 04:34:00 +0000 (04:34 +0000)]
Reformat.
llvm-svn: 211661
Alexey Bataev [Wed, 25 Jun 2014 04:09:13 +0000 (04:09 +0000)]
[OPENMP] Improved code and replaced struct by lambda.
llvm-svn: 211660
NAKAMURA Takumi [Wed, 25 Jun 2014 03:05:47 +0000 (03:05 +0000)]
CodeGen/X86/pr20088.ll: Add -march=x86-64, or llc fails due to non-x86 default target.
llvm-svn: 211659
Jim Ingham [Wed, 25 Jun 2014 02:32:56 +0000 (02:32 +0000)]
Added an option to turn OFF the "detach on error" behavior that was added
to debugserver when launching processes.
<rdar://problem/
16216199>
llvm-svn: 211658
JF Bastien [Wed, 25 Jun 2014 01:31:33 +0000 (01:31 +0000)]
Implement predefined stdint macros
Add predefined stdint macros that match the given patterns:
U?INT{_,_FAST,_LEAST}{8,16,32,64}_{MAX,TYPE}
U?INT{PTR,MAX}_{MAX,TYPE}
http://reviews.llvm.org/D4141
Author: binji
llvm-svn: 211657
Alp Toker [Wed, 25 Jun 2014 00:41:15 +0000 (00:41 +0000)]
Use SourceMgr::getMemoryBuffer() in a couple of places
Cleanup only.
llvm-svn: 211656
Ed Maste [Wed, 25 Jun 2014 00:38:35 +0000 (00:38 +0000)]
Remove extra newline from log Printf
Clean up this one specifically, as it has the effect of double-spacing
the list of thread stop reasons, and substantially bloats the log file
when opening a core with hundreds of threads.
There are other cases of extra newlines. Some of them do increase
readability, so avoid a general sweep for now.
llvm-svn: 211655
Reid Kleckner [Wed, 25 Jun 2014 00:28:35 +0000 (00:28 +0000)]
Fix parsing nested __if_exists blocks
Rather than having kw___if_exists be a special case of
ParseCompoundStatementBody, we can look for kw___if_exists in the big
switch over for valid statement tokens in ParseStatementOrDeclaration.
Nested __if_exists blocks are used in the DECLARE_REGISTRY_RESOURCEID
macro from atlcom.h.
llvm-svn: 211654
Rafael Espindola [Wed, 25 Jun 2014 00:27:53 +0000 (00:27 +0000)]
Move some trivial methods up to MCStreamer.
This saves some duplicated boilerplate in RecordStreamer and NullStreamer.
llvm-svn: 211653
Lang Hames [Wed, 25 Jun 2014 00:20:53 +0000 (00:20 +0000)]
[RuntimeDyld] Adds the necessary hooks to MCJIT to be able to debug generated
MachO files using the GDB JIT debugging interface.
Patch by Keno Fischer. Thanks Keno!
llvm-svn: 211652
Rafael Espindola [Wed, 25 Jun 2014 00:13:59 +0000 (00:13 +0000)]
Simplify the handling of .cfi_endproc.
No functionality change.
llvm-svn: 211651
Reid Kleckner [Wed, 25 Jun 2014 00:10:50 +0000 (00:10 +0000)]
Add a missing test for the __if_exists extension
MSVC does not create a new scope for the body of an __if_exists compound
statement. Clang already gets this right today, but it was untested.
llvm-svn: 211650
Reid Kleckner [Wed, 25 Jun 2014 00:08:10 +0000 (00:08 +0000)]
Split tests for __if_exists out into their own file
llvm-svn: 211649
Hans Wennborg [Tue, 24 Jun 2014 23:57:13 +0000 (23:57 +0000)]
MS ABI: Ignore dll attributes on partial template specializations
llvm-svn: 211648
Hans Wennborg [Tue, 24 Jun 2014 23:57:05 +0000 (23:57 +0000)]
Merge handleDLLImportAttr and handleDLLExportAttr into one function.
llvm-svn: 211647
Rafael Espindola [Tue, 24 Jun 2014 23:54:40 +0000 (23:54 +0000)]
Simplify EmitLabel.
All the "real" streamers were already calling to MCStreamer::EmitLabel
to do part of the work.
llvm-svn: 211646
Juergen Ributzka [Tue, 24 Jun 2014 23:51:21 +0000 (23:51 +0000)]
[FastISel][X86] Fold XALU condition into branch and compare.
Optimize the codegen of select and branch instructions to directly use the
EFLAGS from the {s|u}{add|sub|mul}.with.overflow intrinsics.
llvm-svn: 211645
Tom Stellard [Tue, 24 Jun 2014 23:33:07 +0000 (23:33 +0000)]
R600/SI: Use a ComplexPattern for MUBUF stores
Now that non-leaf ComplexPatterns are allowed we can fold all the MUBUF
store patterns into the instruction definition. We will also be able to
reuse this new ComplexPattern for MUBUF loads and atomic operations.
llvm-svn: 211644
Tom Stellard [Tue, 24 Jun 2014 23:33:04 +0000 (23:33 +0000)]
R600: Promote i64 stores to v2i32
Now we need only one 64-bit pattern for stores.
llvm-svn: 211643
NAKAMURA Takumi [Tue, 24 Jun 2014 23:18:07 +0000 (23:18 +0000)]
ldr-pseudo-obj-errors.s: Fix silly copypasto.
llvm-svn: 211642
Richard Trieu [Tue, 24 Jun 2014 23:14:24 +0000 (23:14 +0000)]
Provide a better diagnostic when braces are put before the identifier.
When a user types:
int [4] foo;
assume that the user means:
int foo[4];
Update the information for 'foo' to prevent additional errors, and provide
a fix-it hint to move the brackets to the correct location.
Additionally, suggest parens for types that require it, such as:
int [4] *foo;
to:
int (*foo)[4];
llvm-svn: 211641
NAKAMURA Takumi [Tue, 24 Jun 2014 23:11:42 +0000 (23:11 +0000)]
llvm/test/MC/AArch64/ldr-pseudo-obj-errors.s: Add -triple=aarch64-linux. AArch64 is unaware of PECOFF for now.
FIXME: This should pass for also targeting aarch64-darwin.
llvm-svn: 211640
Rafael Espindola [Tue, 24 Jun 2014 22:45:16 +0000 (22:45 +0000)]
Print a=b as an assignment.
In assembly the expression a=b is parsed as an assignment, so it should be
printed as one.
This remove a truly horrible hack for producing a label with "a=.". It would
be used by codegen but would never be reached by the asm parser. Sorry I
missed this when it was first committed.
llvm-svn: 211639
Greg Clayton [Tue, 24 Jun 2014 22:22:43 +0000 (22:22 +0000)]
Patch from Keno Fischer to enable JITLoaderGDB with mach-o file support.
The patch is as is with the functionality left disabled for apple vendors because of performance regressions. If this is enabled it ends up searching for symbols in all shared libraries that are loadeded.
llvm-svn: 211638
Matt Arsenault [Tue, 24 Jun 2014 22:13:39 +0000 (22:13 +0000)]
R600: Fix inconsistency in rsq instructions.
R600 was using a clamped version of rsq, but SI was not. Add a
new rsq_clamped intrinsic and use them consistently.
It's unclear to me from the documentation what behavior
the R600 instructions have, so I assume they have the legacy behavior
described by the SI documents. For R600, use RECIPSQRT_IEEE
for both llvm.AMDGPU.rsq.legacy and llvm.AMDGPU.rsq. R600 also
has RECIPSQRT_FF, which I'm not sure how it fits in here.
llvm-svn: 211637
Jim Ingham [Tue, 24 Jun 2014 21:51:42 +0000 (21:51 +0000)]
Rework fix in r201744. You really DO need to waitpid twice to get the
process fully reaped. The race & bad behavior was because we were letting
the reaping thread in LLDB to also set the Process exit status, so debugserver
would sometimes be shut down before it got a chance to report the exit status,
and then we got confused.
<rdar://problem/
16555850>
llvm-svn: 211636
Todd Fiala [Tue, 24 Jun 2014 21:38:31 +0000 (21:38 +0000)]
Fix up Windows build for the SBUnixSignals addition.
Change by Zachary Turner.
llvm-svn: 211635
Sanjay Patel [Tue, 24 Jun 2014 21:11:51 +0000 (21:11 +0000)]
fixed a few typos in comments
llvm-svn: 211634
Ben Langmuir [Tue, 24 Jun 2014 21:08:13 +0000 (21:08 +0000)]
Fix test issues from r211623 and remove test-only API
1) missing iterator bits needed by libstdc++4.7
Using find_if was convenient, but since operator++ wasn't a good
interface anyway, I just replaced with a range-based for loop and
removed operator++ from the directory_iterator class.
2) stop relying on order of iterating real files
llvm-svn: 211633
Matt Arsenault [Tue, 24 Jun 2014 20:58:46 +0000 (20:58 +0000)]
Forgot to add file in r211631
llvm-svn: 211632
Matt Arsenault [Tue, 24 Jun 2014 20:45:01 +0000 (20:45 +0000)]
Add R600 builtin codegen.
llvm-svn: 211631
Matt Arsenault [Tue, 24 Jun 2014 20:32:13 +0000 (20:32 +0000)]
Fix missing C++ mode comment
llvm-svn: 211630
David Fang [Tue, 24 Jun 2014 20:32:11 +0000 (20:32 +0000)]
eliminate install of duplicate headers (take 2)
Patch by Ryuta Suzuki
llvm-svn: 211629
David Blaikie [Tue, 24 Jun 2014 20:10:27 +0000 (20:10 +0000)]
Fix up scoping in a few tests (and delete one that validates unnecessary behavior).
Most of this is just tests that were silently succeeding in spite of
schema changes I made over a year ago. Cleaning them up as they lead to
failures in a change I'm working on/will come soon.
test/DebugInfo/2010-01-19-DbgScope.ll was removed as it tested miscoping
where a DebugLoc described a location not in the current function. The
test case doesn't describe why this is a valid situation and should be
supported, so I'm removing it and shortly going to commit changes that
make this firmly unsupported/assert-fail.
llvm-svn: 211628
Bill Schmidt [Tue, 24 Jun 2014 20:05:18 +0000 (20:05 +0000)]
[PPC64] Fix PR20071 (fctiduz generated for targets lacking that instruction)
PR20071 identifies a problem in PowerPC's fast-isel implementation for
floating-point conversion to integer. The fctiduz instruction was added in
Power ISA 2.06 (i.e., Power7 and later). However, this instruction is being
generated regardless of which 64-bit PowerPC target is selected.
The intent is for fast-isel to punt to DAG selection when this instruction is
not available. This patch implements that change. For testing purposes, the
existing fast-isel-conversion.ll test adds a RUN line for -mcpu=970 and tests
for the expected code generation. Additionally, the existing test
fast-isel-conversion-p5.ll was found to be incorrectly expecting the
unavailable instruction to be generated. I've removed these test variants
since we have adequate coverage in fast-isel-conversion.ll.
llvm-svn: 211627
Rafael Espindola [Tue, 24 Jun 2014 20:01:50 +0000 (20:01 +0000)]
Correctly Load Mixed FP-GP Variadic Arguments for x86-64.
According to the x86-64 ABI, structures with both floating point and
integer members are split between floating-point and general purpose
registers, and consecutive 32-bit floats can be packed into a single
floating point register.
In the case of variadic functions these are stored to memory and the position
recorded in the va_list. This was already correctly implemented in
llvm.va_start.
The problem is that the code in clang for implementing va_arg was reading
floating point registers from the wrong location.
Patch by Thomas Jablin.
Fixes PR20018.
llvm-svn: 211626
Ben Langmuir [Tue, 24 Jun 2014 20:00:30 +0000 (20:00 +0000)]
Disable the bits of r211623 that broke the bots
Part of my test seems to rely on iterator bits that I didn't implement,
at least in the gcc bots. Disabling while I investigate.
llvm-svn: 211625
Brad Smith [Tue, 24 Jun 2014 19:51:29 +0000 (19:51 +0000)]
Use appropriate default PIE settings for OpenBSD.
llvm-svn: 211624
Ben Langmuir [Tue, 24 Jun 2014 19:37:16 +0000 (19:37 +0000)]
Add directory_iterator for (non-recursive) iteration of VFS directories
The API is based on sys::fs::directory_iterator, but it allows iterating
over overlays and the yaml-based VFS. For now, it isn't used by
anything (except its tests).
llvm-svn: 211623
Alp Toker [Tue, 24 Jun 2014 19:23:10 +0000 (19:23 +0000)]
Simplify optimization-remark.c test following r211610
With LocTrackingOnly there's no longer a user-facing distinction so the NDEBUG
checks can go away. (Except maybe column info, but -verify only checks line
numbers anyway.)
Also add a RUN line to validate the traditional !LocTrackingOnly case.
llvm-svn: 211622
Ed Maste [Tue, 24 Jun 2014 19:18:28 +0000 (19:18 +0000)]
Restore r211547: Add newline on last line of a few files.
llvm-svn: 211621
Ed Maste [Tue, 24 Jun 2014 19:16:18 +0000 (19:16 +0000)]
Restore fixes reverted by r211607:
r209631: Use MIUtilSystemLinux on FreeBSD as well
We should later rename this file (probably MIUtilSystemPOSIX), but
more clean-up is still needed here, and we can wait until we better
understand how this code may be shared between FreeBSD, Linux, and OS X.
r209632: Add stdlib.h for malloc and friends
r209633: Remove include of obsolete stropts.h header
The header is for POSIX streams functionality, and does not exist on
FreeBSD, OS X, or contemporary Linux distributions.
Issue reported by John Wolfe.
llvm-svn: 211620
Simon Atanasyan [Tue, 24 Jun 2014 19:00:12 +0000 (19:00 +0000)]
[Driver][Mips] Support mips64-linux-gnuabi64 / mips64el-linux-gnuabi64 target triples.
The patch fixes the bug #19869.
http://llvm.org/bugs/show_bug.cgi?id=19869
llvm-svn: 211619
Deepak Panickal [Tue, 24 Jun 2014 18:20:51 +0000 (18:20 +0000)]
Remove unused files, causing CMake build error.
llvm-svn: 211618
Robert Khasanov [Tue, 24 Jun 2014 18:08:04 +0000 (18:08 +0000)]
vpblend intrinsics combines as shifts intrinsics due to absence return stmt between them
Fix PR20088
Differential Revision: http://reviews.llvm.org/D4277
llvm-svn: 211617
Matt Arsenault [Tue, 24 Jun 2014 17:42:16 +0000 (17:42 +0000)]
R600: Remove DIV_INF
This corresponded to an amdil instruction which there is
a 2 instruction equivalent for.
llvm-svn: 211616
David Blaikie [Tue, 24 Jun 2014 17:31:05 +0000 (17:31 +0000)]
Fix test added in r211610 so it doesn't race on output file creation.
llvm-svn: 211615
Matt Arsenault [Tue, 24 Jun 2014 17:17:06 +0000 (17:17 +0000)]
R600/SI: Move pattern to instruction definition
llvm-svn: 211614
Weiming Zhao [Tue, 24 Jun 2014 17:05:43 +0000 (17:05 +0000)]
Fix test case in r211605/r211533
The test case in
"Fix PR20056: Implement pseudo LDR <reg>, =<literal/label> for AArch64" should
only work with Linux.
llvm-svn: 211613
Johannes Doerfert [Tue, 24 Jun 2014 17:02:53 +0000 (17:02 +0000)]
[Refactor] Create nicer test cases from C/C++
Insert a header into the new testcase containing a sample RUN line a FIXME and
an XFAIL. Then insert the formated C code and finally the LLVM-IR without
attributes, the module ID or the target triple.
llvm-svn: 211612
Fariborz Jahanian [Tue, 24 Jun 2014 17:02:19 +0000 (17:02 +0000)]
Objective-C. When we use @selector(save:), etc. there may be more
than one method with mismatched type of same selector name.
clang issues a warning to point this out since it may cause
undefined behavior. There are cases though that some APIs
don't care about user methods and such warnings are perceived as
noise. This patch allows users to add paren delimiters around
selector name to turn off such warnings. So, @selector((save:)) will
turn off the warning. It also provides 'fixit' so user knows
what to do. // rdar://
16458579
llvm-svn: 211611
Diego Novillo [Tue, 24 Jun 2014 17:02:17 +0000 (17:02 +0000)]
Add new debug kind LocTrackingOnly.
Summary:
This new debug emission kind supports emitting line location
information in all instructions, but stops code generation
from emitting debug info to the final output.
This mode is useful when the backend wants to track source
locations during code generation, but it does not want to
produce debug info. This is currently used by optimization
remarks (-Rpass, -Rpass-missed and -Rpass-analysis).
When one of the -Rpass flags is used, the front end will enable
location tracking, only if no other debug option is enabled.
To prevent debug information from being generated, a new debug
info kind LocTrackingOnly causes DIBuilder::createCompileUnit() to
not emit the llvm.dbg.cu annotation. This blocks final code generation
from generating debug info in the back end.
Depends on D4234.
Reviewers: echristo, dblaikie
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D4235
llvm-svn: 211610
Diego Novillo [Tue, 24 Jun 2014 17:02:03 +0000 (17:02 +0000)]
Add new debug kind LocTrackingOnly.
Summary:
This new debug emission kind supports emitting line location
information in all instructions, but stops code generation
from emitting debug info to the final output.
This mode is useful when the backend wants to track source
locations during code generation, but it does not want to
produce debug info. This is currently used by optimization
remarks (-pass-remarks, -pass-remarks-missed and
-pass-remarks-analysis).
To prevent debug info emission, DIBuilder never inserts the
annotation 'llvm.dbg.cu' when LocTrackingOnly is enabled.
Reviewers: echristo, dblaikie
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D4234
llvm-svn: 211609
Greg Fitzgerald [Tue, 24 Jun 2014 16:58:59 +0000 (16:58 +0000)]
Remove ARM XFAIL from passing test
llvm-svn: 211608
Deepak Panickal [Tue, 24 Jun 2014 16:35:50 +0000 (16:35 +0000)]
Added support for new MI commands and bug fixes. More details in MIReadme.txt.
llvm-svn: 211607
Aaron Ballman [Tue, 24 Jun 2014 16:22:41 +0000 (16:22 +0000)]
Allow static_assert inside an anonymous union; fixes PR20021 as well as implements C++ Issue 1940.
llvm-svn: 211606
Weiming Zhao [Tue, 24 Jun 2014 16:21:38 +0000 (16:21 +0000)]
Resubmit commit r211533
"Fix PR20056: Implement pseudo LDR <reg>, =<literal/label> for AArch64"
Missed files are added in this commit.
llvm-svn: 211605
Logan Chien [Tue, 24 Jun 2014 16:18:10 +0000 (16:18 +0000)]
Use lowercase windows.h for mingw cross compilation.
llvm-svn: 211604
David Majnemer [Tue, 24 Jun 2014 16:01:53 +0000 (16:01 +0000)]
CodeGen: Avoid multiple strlen calls
Use a StringRef to hold our section prefix. This avoids multiple calls
to strlen.
llvm-svn: 211602
Christian Pirker [Tue, 24 Jun 2014 15:45:59 +0000 (15:45 +0000)]
ARM: Fix TPsoft for Thumb mode
Reviewed at http://reviews.llvm.org/D4230
llvm-svn: 211601
Alexander Kornienko [Tue, 24 Jun 2014 15:38:38 +0000 (15:38 +0000)]
Remove an empty directory left after r211508.
llvm-svn: 211600
Alexander Kornienko [Tue, 24 Jun 2014 15:28:21 +0000 (15:28 +0000)]
Fix "warning: fallthrough annotation does not directly precede switch label" in lambdas.
Summary: This patch fixes http://llvm.org/PR17864 - "warning: fallthrough annotation does not directly precede switch label" in lambdas.
Reviewers: rsmith
Reviewed By: rsmith
Subscribers: rnk, cfe-commits
Differential Revision: http://reviews.llvm.org/D4258
llvm-svn: 211599
Daniel Sanders [Tue, 24 Jun 2014 15:04:16 +0000 (15:04 +0000)]
[mips] Correct linux dynamic linker for -mnan=2008
Summary:
The dynamic linker is named ld-linux-mipsn8.so.1 when -mnan=2008 is given (or
is the default). It remains ld.so.1 for other cases.
This is necessary for MIPS32r6/MIPS64r6 since these ISA's default to -mnan=2008.
Differential Revision: http://reviews.llvm.org/D4273
llvm-svn: 211598
Rafael Espindola [Tue, 24 Jun 2014 14:25:17 +0000 (14:25 +0000)]
Replace two release calls with std::move. I missed this on the previous commit.
llvm-svn: 211597
Rafael Espindola [Tue, 24 Jun 2014 13:57:13 +0000 (13:57 +0000)]
Update for llvm api change.
llvm-svn: 211596
Rafael Espindola [Tue, 24 Jun 2014 13:56:32 +0000 (13:56 +0000)]
Pass a unique_ptr<MemoryBuffer> to the constructors in the Binary hierarchy.
Once the objects are constructed, they own the buffer. Passing a unique_ptr
makes that clear.
llvm-svn: 211595
Daniel Sanders [Tue, 24 Jun 2014 13:53:56 +0000 (13:53 +0000)]
Revert: r211588 - [mips] Use __clear_cache builtin instead of cacheflush() in Unix Memory::InvalidateInstructionCache()
Buildbot reports a test failure on the llvm-mips-linux builder and blames r211588.
Although it doesn't appear in the blamelist, it seems it could also be r211587
(because it's committed to compiler-rt?) since they were tested together.
Reverting the most likely suspect (r211588) to confirm one way or the other.
llvm-svn: 211594
NAKAMURA Takumi [Tue, 24 Jun 2014 13:50:01 +0000 (13:50 +0000)]
Revert r211121 (and r211285), "Change libclang initialization to use std::call_once instead of"
It broke mingw builder and cygwin-clang stage2, possibly lack of tls in <mutex>.
llvm-svn: 211593
NAKAMURA Takumi [Tue, 24 Jun 2014 13:36:31 +0000 (13:36 +0000)]
Revert r211287, "Remove support for LLVM runtime multi-threading."
libclang still requires it on cygming, lack of incomplete <mutex>.
llvm-svn: 211592
Tobias Grosser [Tue, 24 Jun 2014 13:31:42 +0000 (13:31 +0000)]
cmake: Fix reference to Pluto file
llvm-svn: 211591
Daniel Sanders [Tue, 24 Jun 2014 13:00:32 +0000 (13:00 +0000)]
[mips] Added support for assembling sdbbp.
Summary:
This instruction is re-encoded in MIPS32r6/MIPS64r6 without changing the
restrictions. We hadn't implemented it for earlier ISA's so it has been added to those too.
Differential Revision: http://reviews.llvm.org/D4265
llvm-svn: 211590
Alexey Bataev [Tue, 24 Jun 2014 12:55:56 +0000 (12:55 +0000)]
[OPENMP] Additional checking for 'collapse' clause.
llvm-svn: 211589
Daniel Sanders [Tue, 24 Jun 2014 12:26:49 +0000 (12:26 +0000)]
[mips] Use __clear_cache builtin instead of cacheflush() in Unix Memory::InvalidateInstructionCache()
MIPS64 Android bionic has removed cacheflush(). Use __clear_cache() instead for 32-bit and 64-bit MIPS
Patch by Duane Sand <Duane.Sand@imgtec.com>
llvm-svn: 211588
Daniel Sanders [Tue, 24 Jun 2014 12:08:18 +0000 (12:08 +0000)]
[asan] adding support of 32-bit address sanitizer for MIPS
Summary: The patch supports both the clang cross-compiler and native compiler
Patch by Kumar Sukhani <Kumar.Sukhani@imgtec.com>
Test Plan:
Kumar had the following asan test results when compiled on a MIPS board:
Expected Passes : 96
Expected Failures : 2
Unsupported Tests : 84
Unexpected Passes : 4
Unexpected Failures: 19
The list of unexpected failures can be found in the review.
Reviewers: kcc, petarj, dsanders
Reviewed By: kcc
Subscribers: farazs, kcc, llvm-commits
Differential Revision: http://reviews.llvm.org/D4208
llvm-svn: 211587
Tim Northover [Tue, 24 Jun 2014 12:07:44 +0000 (12:07 +0000)]
ARM: remove dead CodeGen functions.
These two are no longer being used by NEON codegen.
llvm-svn: 211586
Evgeniy Stepanov [Tue, 24 Jun 2014 11:50:26 +0000 (11:50 +0000)]
[msan] Fix origin copying.
Conditions for the first and the last origin value in range were wrong.
llvm-svn: 211585
Benjamin Kramer [Tue, 24 Jun 2014 10:47:52 +0000 (10:47 +0000)]
InstCombine: Disable umul.with.overflow recognition for vectors.
It doesn't make a lot on most targets and the code isn't ready for it. PR20113.
llvm-svn: 211583
Benjamin Kramer [Tue, 24 Jun 2014 10:38:10 +0000 (10:38 +0000)]
InstCombine: Don't try to reorder shuffles where the mask is a ConstantExpr.
We can't analyze the individual values of a vector expression. PR20114.
llvm-svn: 211581
Jeroen Ketema [Tue, 24 Jun 2014 09:51:01 +0000 (09:51 +0000)]
Add half limits
These are apparently only defined in OpenCL 1.2.
HALF_MAX, HALF_MIN and HALF_EPSILON are currently omitted. Clang does
not seem to support the ‘h’ suffix for half float constants even with
the cl_khr_fp16 extension enabled.
Reviewed-by: Tom Sellard <tom@stellard.net>
llvm-svn: 211579