platform/upstream/llvm.git
10 years agoFix build error caused by r201186 (GCC's "declaration of X changes meaning of Y").
Alexander Kornienko [Tue, 11 Feb 2014 22:14:03 +0000 (22:14 +0000)]
Fix build error caused by r201186 (GCC's "declaration of X changes meaning of Y").

llvm-svn: 201189

10 years agoRevert "Debug info: Emit values in subregisters that do not have a separate"
Adrian Prantl [Tue, 11 Feb 2014 22:03:30 +0000 (22:03 +0000)]
Revert "Debug info: Emit values in subregisters that do not have a separate"

This reverts commit r201179 for buildbot breakage.

llvm-svn: 201188

10 years agoDebugInfo: Don't include the name of the CU file in the line table file list when...
David Blaikie [Tue, 11 Feb 2014 21:49:46 +0000 (21:49 +0000)]
DebugInfo: Don't include the name of the CU file in the line table file list when it's unneeded

This comes up in empty files or files containing #file directives that
never reference the actual source file name. Came up in a small test of
line tables I was playing with.

llvm-svn: 201187

10 years agoExpose the name of the checker producing each diagnostic message.
Alexander Kornienko [Tue, 11 Feb 2014 21:49:21 +0000 (21:49 +0000)]
Expose the name of the checker producing each diagnostic message.

Summary:
In clang-tidy we'd like to know the name of the checker producing each
diagnostic message. PathDiagnostic has BugType and Category fields, which are
both arbitrary human-readable strings, but we need to know the exact name of the
checker in the form that can be used in the CheckersControlList option to
enable/disable the specific checker.

This patch adds the CheckName field to the CheckerBase class, and sets it in
the CheckerManager::registerChecker() method, which gets them from the
CheckerRegistry.

Checkers that implement multiple checks have to store the names of each check
in the respective registerXXXChecker method.

Reviewers: jordan_rose, krememek

Reviewed By: jordan_rose

CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D2557

llvm-svn: 201186

10 years agoDebugInfo: Remove dependence on file numbering in the line table.
David Blaikie [Tue, 11 Feb 2014 21:46:46 +0000 (21:46 +0000)]
DebugInfo: Remove dependence on file numbering in the line table.

These tests were unnecessarily sensitive to the presence and ordering of
elements in the line table file_names list which will break on a future
change I'm working on.

llvm-svn: 201185

10 years agoRequire CMake 2.8.12.1 or later on Windows
Hans Wennborg [Tue, 11 Feb 2014 21:46:19 +0000 (21:46 +0000)]
Require CMake 2.8.12.1 or later on Windows

That version knows to use the /FS flag, which is needed for building
lib/interception with VS2013.

llvm-svn: 201184

10 years agoRemove bad debug info test.
David Blaikie [Tue, 11 Feb 2014 21:37:47 +0000 (21:37 +0000)]
Remove bad debug info test.

Another test that's testing through assembly from Clang which is
problematic. An attempt to upgrade this to just be an IR-generation test
was unsuccessful (I was unable to get this test to fail) but it looks
like there's other, better, test coverage in this area
(test/CodeGenObjC/debuginfo-properties.m) anyway.

llvm-svn: 201183

10 years agoupdate of the clang version (should probably managed in the configure)
Sylvestre Ledru [Tue, 11 Feb 2014 21:37:27 +0000 (21:37 +0000)]
update of the clang version (should probably managed in the configure)

llvm-svn: 201182

10 years agowhitespace
Adrian Prantl [Tue, 11 Feb 2014 21:23:02 +0000 (21:23 +0000)]
whitespace

llvm-svn: 201181

10 years agoDebug info: Emit values in subregisters that do not have a separate
Adrian Prantl [Tue, 11 Feb 2014 21:22:59 +0000 (21:22 +0000)]
Debug info: Emit values in subregisters that do not have a separate
DWARF register number by emitting a super-register + DW_OP_bit_piece.
This is necessary because on x86_64, there are no DWARF register numbers
for i386-style subregisters.
Fixes a bunch of FIXMEs.

rdar://problem/16015314

llvm-svn: 201180

10 years agomake llvm-dwarfdump a little more resilient when parsing .debug_loc
Adrian Prantl [Tue, 11 Feb 2014 21:22:53 +0000 (21:22 +0000)]
make llvm-dwarfdump a little more resilient when parsing .debug_loc
sections. The call to data.getUnsigned(&Offset, AddressSize) only
increments Offset if the read succeeds, which will result in an infinite
loop.

llvm-svn: 201179

10 years agoRemove bad debug info test.
David Blaikie [Tue, 11 Feb 2014 21:16:44 +0000 (21:16 +0000)]
Remove bad debug info test.

This test case doesn't belong in Clang (it's testing IndVarSimplify) but
in an effort to reproduce the test case this was intended to cover (by
essentially reverting r134441) I wasn't able to reproduce the failure
this test case should've produced. So I haven't ported this down to
LLVM, instead I'm just deleting it.

I suspect the test is just underconstrained, but I've no great interest
in trying hard to fix it right now - if anyone else wants to, I'd be
more than welcome to that.

llvm-svn: 201178

10 years agoR600/SI: Fix assertion on infinite loops.
Matt Arsenault [Tue, 11 Feb 2014 21:12:38 +0000 (21:12 +0000)]
R600/SI: Fix assertion on infinite loops.

This isn't the most useful case to fix in the real world,
but bugpoint runs into this.

llvm-svn: 201177

10 years agoInstCombine: Teach icmp merging about the equivalence of bit tests and UGE/ULT with...
Benjamin Kramer [Tue, 11 Feb 2014 21:09:03 +0000 (21:09 +0000)]
InstCombine: Teach icmp merging about the equivalence of bit tests and UGE/ULT with a power of 2.

This happens in bitfield code. While there reorganize the existing code
a bit.

llvm-svn: 201176

10 years agoMS ABI: Add support for the -vm{b,g,s,m,v} flags
David Majnemer [Tue, 11 Feb 2014 21:05:00 +0000 (21:05 +0000)]
MS ABI: Add support for the -vm{b,g,s,m,v} flags

These flags control the inheritance model initially used by the
translation unit.

Differential Revision: http://llvm-reviews.chandlerc.com/D2741

llvm-svn: 201175

10 years agoTidy up a bit. Formatting only.
Jim Grosbach [Tue, 11 Feb 2014 20:48:41 +0000 (20:48 +0000)]
Tidy up a bit. Formatting only.

llvm-svn: 201174

10 years agoARM: Thumb2 LDR(literal) can target SP.
Jim Grosbach [Tue, 11 Feb 2014 20:48:39 +0000 (20:48 +0000)]
ARM: Thumb2 LDR(literal) can target SP.

Fix a slightly overzealous destination register restriction for the
'without .w' alias. Add some explicit testcases.

rdar://16033140

llvm-svn: 201173

10 years agoTest commit -- Remove an extra newline from Toolchains.cpp
Jonathan Roelofs [Tue, 11 Feb 2014 20:02:34 +0000 (20:02 +0000)]
Test commit -- Remove an extra newline from Toolchains.cpp

llvm-svn: 201172

10 years agoWhen a multiline expression produces output, the multi-line help message is printed...
Greg Clayton [Tue, 11 Feb 2014 19:11:11 +0000 (19:11 +0000)]
When a multiline expression produces output, the multi-line help message is printed twice.

<rdar://problem/16031890>

llvm-svn: 201171

10 years agoSCEV: Cast switched values to make -Wswitch more useful.
Benjamin Kramer [Tue, 11 Feb 2014 19:02:55 +0000 (19:02 +0000)]
SCEV: Cast switched values to make -Wswitch more useful.

llvm-svn: 201170

10 years agoRemove decorator for llvm.org/pr17233
Ed Maste [Tue, 11 Feb 2014 18:55:19 +0000 (18:55 +0000)]
Remove decorator for llvm.org/pr17233

This test was skipped as it used to segfault on FreeBSD.  It seems
the original issue has since been fixed, so have the test run again.

llvm-svn: 201169

10 years agoRemove FreeBSD decorator for llvm.org/pr17499 (no longer fails)
Ed Maste [Tue, 11 Feb 2014 18:36:26 +0000 (18:36 +0000)]
Remove FreeBSD decorator for llvm.org/pr17499 (no longer fails)

llvm-svn: 201168

10 years agoRemove decorators for llvm.org/pr17920 fixed by r200646
Ed Maste [Tue, 11 Feb 2014 18:34:26 +0000 (18:34 +0000)]
Remove decorators for llvm.org/pr17920 fixed by r200646

llvm-svn: 201167

10 years agoUpdate decorator for FreeBSD failure pr18066
Ed Maste [Tue, 11 Feb 2014 18:28:18 +0000 (18:28 +0000)]
Update decorator for FreeBSD failure pr18066

The test expects the inferior to have exited, but it is still stopped.

llvm.org/pr18066

llvm-svn: 201166

10 years ago[Sema] Revert the change in r200622 that allowed integer casts to silence -Wnon-liter...
Argyrios Kyrtzidis [Tue, 11 Feb 2014 17:53:22 +0000 (17:53 +0000)]
[Sema] Revert the change in r200622 that allowed integer casts to silence -Wnon-literal-null-conversion in C code.

It is actually useful to warn in such cases, thanks to Dmitri for pushing on this and making us see the light!

Related to rdar://15925483 and rdar://15922612. The latter radar is where the usefulness of the warning is most clear.

llvm-svn: 201165

10 years agoDon’t leak memory when reading memory and we do an early return for error conditions.
Greg Clayton [Tue, 11 Feb 2014 17:49:50 +0000 (17:49 +0000)]
Don’t leak memory when reading memory and we do an early return for error conditions.

llvm-svn: 201164

10 years agoImprove the declaration when LDPO_PIE is not available.
Sylvestre Ledru [Tue, 11 Feb 2014 17:30:18 +0000 (17:30 +0000)]
Improve the declaration when LDPO_PIE is not available.
Thanks to İsmail Dönmez for the better declaration.

llvm-svn: 201163

10 years ago'nonnull(1)' on a block parameter should apply to the block's argument.
Jordan Rose [Tue, 11 Feb 2014 17:27:59 +0000 (17:27 +0000)]
'nonnull(1)' on a block parameter should apply to the block's argument.

Thanks to r199467, __attribute__((nonnull)) (without arguments) can apply
directly to parameters, instead of being applied to the whole function.
However, the old form of nonnull (with an argument index) could also apply
to the arguments of function and block pointers, and both of these can be
passed as parameters.

Now, if 'nonnull' with an argument is found on a parameter, /and/ the
parameter is a function or block pointer, it is handled the old way.

PR18795

llvm-svn: 201162

10 years agoIf LDPO_PIE is not defined (before binutils 2.23 version),
Sylvestre Ledru [Tue, 11 Feb 2014 17:11:32 +0000 (17:11 +0000)]
If LDPO_PIE is not defined (before binutils 2.23 version),
use the hardcoded declaration 3
See r201110 for the initial change

llvm-svn: 201161

10 years agoAdd a note about using "Differential Revision:" in commit messages
Mark Seaborn [Tue, 11 Feb 2014 16:58:03 +0000 (16:58 +0000)]
Add a note about using "Differential Revision:" in commit messages

I noticed this convention from the commit logs.  It seems like it
would be useful to document it, to encourage other committers to link
back to code reviews in their commits.

Differential Revision: http://llvm-reviews.chandlerc.com/D2678

llvm-svn: 201160

10 years agoScalarEvolution: Analyze trip count of loops with a switch guarding the exit.
Benjamin Kramer [Tue, 11 Feb 2014 15:44:32 +0000 (15:44 +0000)]
ScalarEvolution: Analyze trip count of loops with a switch guarding the exit.

llvm-svn: 201159

10 years agoTeach the DAGCombiner how to fold concat_vector nodes when the input is two
Robert Lougher [Tue, 11 Feb 2014 15:42:46 +0000 (15:42 +0000)]
Teach the DAGCombiner how to fold concat_vector nodes when the input is two
BUILD_VECTOR nodes, e.g.:

(concat_vectors (BUILD_VECTOR a1, a2, a3, a4), (BUILD_VECTOR b1, b2, b3, b4))
->
(BUILD_VECTOR a1, a2, a3, a4, b1, b2, b3, b4)

This fixes an issue with AVX, where a sequence was not recognized as a 256-bit
vbroadcast due to the concat_vectors.

llvm-svn: 201158

10 years agoRename some PCH-related errors to have 'err_' as their prefix
Dmitri Gribenko [Tue, 11 Feb 2014 15:40:09 +0000 (15:40 +0000)]
Rename some PCH-related errors to have 'err_' as their prefix

llvm-svn: 201157

10 years agoFix a typo in the function name that I just introduced (r201155)
Dmitri Gribenko [Tue, 11 Feb 2014 15:02:48 +0000 (15:02 +0000)]
Fix a typo in the function name that I just introduced (r201155)

llvm-svn: 201156

10 years agolibclang: audit all APIs that accept a CXTranslationUnit to make sure that
Dmitri Gribenko [Tue, 11 Feb 2014 14:34:14 +0000 (14:34 +0000)]
libclang: audit all APIs that accept a CXTranslationUnit to make sure that
checks for invalid translation unit are in place.  Also, while there, add log
output for this case.

llvm-svn: 201155

10 years ago[asan] Fix Windows build.
Evgeniy Stepanov [Tue, 11 Feb 2014 13:57:17 +0000 (13:57 +0000)]
[asan] Fix Windows build.

llvm-svn: 201154

10 years agoAdd decorator for llvm.org/pr18805 until root cause is identified
Ed Maste [Tue, 11 Feb 2014 13:50:45 +0000 (13:50 +0000)]
Add decorator for llvm.org/pr18805 until root cause is identified

llvm-svn: 201153

10 years ago[sanitizer] Fix build.
Evgeniy Stepanov [Tue, 11 Feb 2014 13:45:01 +0000 (13:45 +0000)]
[sanitizer] Fix build.

llvm-svn: 201152

10 years ago[sanitizer] Use system unwinder in signal handlers on Android.
Evgeniy Stepanov [Tue, 11 Feb 2014 13:38:57 +0000 (13:38 +0000)]
[sanitizer] Use system unwinder in signal handlers on Android.

Because of the way Bionic sets up signal stack frames, libc unwinder is unable
to step through it, resulting in broken SEGV stack traces.

Luckily, libcorkscrew.so on Android implements an unwinder that can start with
a signal context, thus sidestepping the issue.

llvm-svn: 201151

10 years ago[Sanitizer] External symbolizer refactoring: split protocol for communicating with
Alexey Samsonov [Tue, 11 Feb 2014 13:03:09 +0000 (13:03 +0000)]
[Sanitizer] External symbolizer refactoring: split protocol for communicating with
llvm-symbolizer binary and external process handling into separate classes.

No functionality change.

llvm-svn: 201150

10 years ago[AArch64] Add missing PCRel relocations for AArch64 in RuntimeDyldELF
Bradley Smith [Tue, 11 Feb 2014 12:59:09 +0000 (12:59 +0000)]
[AArch64] Add missing PCRel relocations for AArch64 in RuntimeDyldELF

llvm-svn: 201149

10 years ago[LPM] Switch LICM to actively use LCSSA in addition to preserving it.
Chandler Carruth [Tue, 11 Feb 2014 12:52:27 +0000 (12:52 +0000)]
[LPM] Switch LICM to actively use LCSSA in addition to preserving it.

Fixes PR18753 and PR18782.

This is necessary for LICM to preserve LCSSA correctly and efficiently.
There is still some active discussion about whether we should be using
LCSSA, but we can't just immediately stop using it and we *need* LICM to
preserve it while we are using it. We can restore the old SSAUpdater
driven code if and when there is a serious effort to remove the reliance
on LCSSA from all of the loop passes.

However, this also serves as a great example of why LCSSA is very nice
to have. This change significantly simplifies the process of sinking
instructions for LICM, and makes it quite a bit less expensive.

It wouldn't even be as complex as it is except that I had to start the
process of removing the big recursive LCSSA formation hammer in order to
switch even this much of the re-forming code to asserting that LCSSA was
preserved. I'll fully remove that next just to tidy things up until the
LCSSA debate settles one way or the other.

llvm-svn: 201148

10 years agoRemove unused config.llvm_symbolizer_path
Alexey Samsonov [Tue, 11 Feb 2014 12:52:26 +0000 (12:52 +0000)]
Remove unused config.llvm_symbolizer_path

llvm-svn: 201147

10 years agolibclang: use namespace qualifiers in the macro, so that it does not require
Dmitri Gribenko [Tue, 11 Feb 2014 12:25:31 +0000 (12:25 +0000)]
libclang: use namespace qualifiers in the macro, so that it does not require
'using namespace clang::cxindex'.

llvm-svn: 201146

10 years agoAArch64: share slgihtly more NEON implementation with ARM.
Tim Northover [Tue, 11 Feb 2014 11:27:44 +0000 (11:27 +0000)]
AArch64: share slgihtly more NEON implementation with ARM.

The s64/u64 vcvt conversion operations are actually pretty much identical to
the s32/u32 ones in implementation, and can be shared with just one extra
variable.

llvm-svn: 201145

10 years agoXCore target: fix const section handling
Robert Lytton [Tue, 11 Feb 2014 10:36:26 +0000 (10:36 +0000)]
XCore target: fix const section handling

Xcore target ABI requires const data that is externally visible
to be handled differently if it has C-language linkage rather than
C++ language linkage.

Clang now emits ".cp.rodata" section information.

All other externally visible constant data will be placed in the DP section.

llvm-svn: 201144

10 years ago XCore target: Lower ATOMIC_LOAD & ATOMIC_STORE
Robert Lytton [Tue, 11 Feb 2014 10:36:18 +0000 (10:36 +0000)]
 XCore target: Lower ATOMIC_LOAD & ATOMIC_STORE

llvm-svn: 201143

10 years agoXCore target: add section information.
Robert Lytton [Tue, 11 Feb 2014 10:34:51 +0000 (10:34 +0000)]
XCore target: add section information.

Xcore target ABI requires const data that is externally visible
to be handled differently if it has C-language linkage rather than
C++ language linkage.

llvm-svn: 201142

10 years agoXCore target: Pass through "-fverbose-asm" flag to xcc assembler.
Robert Lytton [Tue, 11 Feb 2014 10:34:45 +0000 (10:34 +0000)]
XCore target: Pass through "-fverbose-asm" flag to xcc assembler.

llvm-svn: 201141

10 years agoAVX: fixed a bug in LowerVECTOR_SHUFFLE
Elena Demikhovsky [Tue, 11 Feb 2014 10:21:53 +0000 (10:21 +0000)]
AVX: fixed a bug in LowerVECTOR_SHUFFLE

llvm-svn: 201140

10 years agoclang-format: Support lambdas with namespace-qualified return types.
Daniel Jasper [Tue, 11 Feb 2014 10:16:55 +0000 (10:16 +0000)]
clang-format: Support lambdas with namespace-qualified return types.

E.g.:
  Foo([]()->std::vector<int> { return { 2 }; }());

llvm-svn: 201139

10 years agoclang-format: Fix alignment of comments inside statements.
Daniel Jasper [Tue, 11 Feb 2014 10:08:11 +0000 (10:08 +0000)]
clang-format: Fix alignment of comments inside statements.

Before:
  auto result = SomeObject
                // Calling someFunction on SomeObject
                    .someFunction();

After:
  auto result = SomeObject
                    // Calling someFunction on SomeObject
                    .someFunction();

llvm-svn: 201138

10 years agoAAPCS: Do not split structs after CPRC allocated on stack
Oliver Stannard [Tue, 11 Feb 2014 09:25:50 +0000 (09:25 +0000)]
AAPCS: Do not split structs after CPRC allocated on stack

According to the AAPCS, we can split structs between GPRs and the stack,
except for when an argument has already been allocated on the stack. This
can occur when a large number of floating-point arguments fill up the VFP
registers, and are alllocated on the stack before the general-purpose argument
registers are full.

llvm-svn: 201137

10 years agoRemove TimeValue::toPosixTime() -- it is buggy, semantics are unclear, and its
Dmitri Gribenko [Tue, 11 Feb 2014 09:11:18 +0000 (09:11 +0000)]
Remove TimeValue::toPosixTime() -- it is buggy, semantics are unclear, and its
only current user should be using toEpochTime() instead.

llvm-svn: 201136

10 years agoFix self-hosted -Werror build: delete comma at the end of enumerator list
Alexey Samsonov [Tue, 11 Feb 2014 08:07:54 +0000 (08:07 +0000)]
Fix self-hosted -Werror build: delete comma at the end of enumerator list

llvm-svn: 201135

10 years agoAVX-512: Optimized BUILD_VECTOR pattern;
Elena Demikhovsky [Tue, 11 Feb 2014 07:25:59 +0000 (07:25 +0000)]
AVX-512: Optimized BUILD_VECTOR pattern;
fixed encoding of VEXTRACTPS instruction.

llvm-svn: 201134

10 years ago[Mips] Use the 'CHECK-NEXT' where we need to check a test output exactly
Simon Atanasyan [Tue, 11 Feb 2014 07:17:09 +0000 (07:17 +0000)]
[Mips] Use the 'CHECK-NEXT' where we need to check a test output exactly
line by line.

llvm-svn: 201133

10 years ago[CodeGenPrepare] Test case for the promotions that bypass the
Quentin Colombet [Tue, 11 Feb 2014 06:55:43 +0000 (06:55 +0000)]
[CodeGenPrepare] Test case for the promotions that bypass the
profitability check due to some other checks in the addressing
mode matcher. I.e., test case for commit r201121.

<rdar://problem/16020230>

llvm-svn: 201132

10 years ago[Mips] Simplify the code. Replace redundant 'switch' operator by the single 'if'...
Simon Atanasyan [Tue, 11 Feb 2014 06:36:16 +0000 (06:36 +0000)]
[Mips] Simplify the code. Replace redundant 'switch' operator by the single 'if' one.

llvm-svn: 201131

10 years agoFix PCH deserialization bug with local static symbols being treated as local extern.
Ted Kremenek [Tue, 11 Feb 2014 06:29:29 +0000 (06:29 +0000)]
Fix PCH deserialization bug with local static symbols being treated as local extern.

This triggered a miscompilation of code using Boost's function_template.hpp
when it was included inside a PCH file.  A local static within
that header would be treated as local extern, resulting in the wrong
mangling.  This only occurred during PCH deserialization.

Fixes <rdar://problem/15975816> and <rdar://problem/15926311>.

llvm-svn: 201130

10 years ago[Mips] Handle R_MIPS_COPY relocation.
Simon Atanasyan [Tue, 11 Feb 2014 05:34:02 +0000 (05:34 +0000)]
[Mips] Handle R_MIPS_COPY relocation.

llvm-svn: 201129

10 years ago[Mips] Add "data" symbols to the test input file. No functional changes.
Simon Atanasyan [Tue, 11 Feb 2014 05:33:53 +0000 (05:33 +0000)]
[Mips] Add "data" symbols to the test input file. No functional changes.

llvm-svn: 201128

10 years agoIn RuntimeDyldImpl::emitSection, make Allocate (section size to be allocated) a
Lang Hames [Tue, 11 Feb 2014 05:28:24 +0000 (05:28 +0000)]
In RuntimeDyldImpl::emitSection, make Allocate (section size to be allocated) a
uintptr_t. An unsigned could overflow for large sections.

No test case - anything big enough to overflow an unsigned is going to take an
appreciable time to zero when the test passes.

The choice of uintptr_t was made to match the RTDyldMemoryManager APIs, but
these should probably be hardcoded to uint64_ts: It is legitimate to JIT for
64-bit targets from a 32-bit host/compiler.

llvm-svn: 201127

10 years agoChanged attributes of all gather intrinsics from IntrReadMem to IntrReadArgMem as...
Craig Topper [Tue, 11 Feb 2014 04:05:33 +0000 (04:05 +0000)]
Changed attributes of all gather intrinsics from IntrReadMem to IntrReadArgMem as they access only memory based on argument. Patch by Robert Khasanov.

llvm-svn: 201126

10 years agoUsing the helper API for random number generation.
Aaron Ballman [Tue, 11 Feb 2014 03:40:14 +0000 (03:40 +0000)]
Using the helper API for random number generation.

llvm-svn: 201125

10 years agoHopefully fixing the MinGW 32 build, which was broken by r200767. Not using rand_s...
Aaron Ballman [Tue, 11 Feb 2014 02:47:33 +0000 (02:47 +0000)]
Hopefully fixing the MinGW 32 build, which was broken by r200767. Not using rand_s() since MinGW does not have an implementation for it, but instead using the underlying CryptGenRandom APIs.

llvm-svn: 201124

10 years ago[analyzer] Inline C++ operator new when c++-inline-allocators is turned on.
Jordan Rose [Tue, 11 Feb 2014 02:21:06 +0000 (02:21 +0000)]
[analyzer] Inline C++ operator new when c++-inline-allocators is turned on.

This will let us stage in the modeling of operator new. The -analyzer-config
opton 'c++-inline-allocators' is currently off by default.

Patch by Karthik Bhat!

llvm-svn: 201122

10 years ago[CodeGenPrepare] Undo changes that happened for the profitability check.
Quentin Colombet [Tue, 11 Feb 2014 01:59:02 +0000 (01:59 +0000)]
[CodeGenPrepare] Undo changes that happened for the profitability check.

The addressing mode matcher checks at some point the profitability of folding an
instruction into the addressing mode. When the instruction to be folded has
several uses, it checks that the instruction can be folded in each use.
To do so, it creates a new matcher for each use and check if the instruction is
in the list of the matched instructions of this new matcher.

The new matchers may promote some instructions and this has to be undone to keep
the state of the original matcher consistent.

A test case will follow.

<rdar://problem/16020230>

llvm-svn: 201121

10 years ago[stackprotector] Add command line option -fstack-protector-strong
Josh Magee [Tue, 11 Feb 2014 01:35:14 +0000 (01:35 +0000)]
[stackprotector] Add command line option -fstack-protector-strong

This option has the following effects:
 * It adds the sspstrong IR attribute to each function within the CU.
 * It defines the macro __SSP_STRONG__ with the value of 2.

Differential Revision: http://llvm-reviews.chandlerc.com/D2717

llvm-svn: 201120

10 years agoDebugInfo: Use existing symbol rather than creating it again.
David Blaikie [Tue, 11 Feb 2014 01:23:52 +0000 (01:23 +0000)]
DebugInfo: Use existing symbol rather than creating it again.

llvm-svn: 201119

10 years agoChange RNBRemote::HandlePacket_m() to store the packet on the heap
Jason Molenda [Tue, 11 Feb 2014 00:48:29 +0000 (00:48 +0000)]
Change RNBRemote::HandlePacket_m() to store the packet on the heap
instead of on the stack.  Handles larger packet read requests better.

llvm-svn: 201118

10 years agoAdjust the calls to __introspection_dispatch_thread_get_item_info to
Jason Molenda [Tue, 11 Feb 2014 00:36:18 +0000 (00:36 +0000)]
Adjust the calls to __introspection_dispatch_thread_get_item_info to
use a system-wide unique thread ID instead of a pthread_t to identify
the thread we want debug info for.  Also, free some more memory regions
that needed to be freed.

llvm-svn: 201117

10 years agoMove the *PassPrinter into their own module.
Eli Bendersky [Mon, 10 Feb 2014 23:34:23 +0000 (23:34 +0000)]
Move the *PassPrinter into their own module.

These are self-contained in functionality so it makes sense to separate them,
as opt.cpp has grown quite big already.

Following Eric's suggestions, if this code is ever deemed useful outside of
tools/opt, it will make sense to move it to one of the LLVM libraries like IR.

llvm-svn: 201116

10 years ago[Stackmaps] Cleanup code. No functional change intended.
Juergen Ributzka [Mon, 10 Feb 2014 23:30:26 +0000 (23:30 +0000)]
[Stackmaps] Cleanup code. No functional change intended.

llvm-svn: 201115

10 years agoLTO API: add lto_module_create_from_memory_with_path.
Manman Ren [Mon, 10 Feb 2014 23:26:14 +0000 (23:26 +0000)]
LTO API: add lto_module_create_from_memory_with_path.

This function adds an extra path argument to lto_module_create_from_memory.
The path argument will be passed to makeBuffer to make sure the MemoryBuffer
has a name and the created module has a module identifier.

This is mainly for emitting warning messages from the linker. When we emit
warning message on a module, we can use the module identifier.

rdar://15985737

llvm-svn: 201114

10 years agoMark the methods in the Mangler const.
Rafael Espindola [Mon, 10 Feb 2014 21:25:13 +0000 (21:25 +0000)]
Mark the methods in the Mangler const.

A const ObjectFile needs to be able to provide its name. For an IRObjectFile,
that means being able to call the mangler. Since each IRObjectFile can have
a different mangling, it is natural for them to contain a Mangler which is
therefore also const.

llvm-svn: 201113

10 years ago[AArch64] Fixed vget/vset_lane_f16 implementation
Ana Pazos [Mon, 10 Feb 2014 21:20:53 +0000 (21:20 +0000)]
[AArch64] Fixed vget/vset_lane_f16 implementation

Replaced cast and vreinterepret operations with
code to reinterpret bitwise the types float16_t and
int16_t.

llvm-svn: 201112

10 years agocmake: Do not export targets when installing toolchain only
Reid Kleckner [Mon, 10 Feb 2014 20:44:57 +0000 (20:44 +0000)]
cmake: Do not export targets when installing toolchain only

Patch by Brad King!

llvm-svn: 201111

10 years agoFix an old FIXME. LDPO_PIE is available since 2.23, realeased 2012-10-22.
Rafael Espindola [Mon, 10 Feb 2014 20:38:38 +0000 (20:38 +0000)]
Fix an old FIXME. LDPO_PIE is available since 2.23, realeased 2012-10-22.

llvm-svn: 201110

10 years agoUpdate for llvm api change.
Rafael Espindola [Mon, 10 Feb 2014 20:24:27 +0000 (20:24 +0000)]
Update for llvm api change.

llvm-svn: 201109

10 years agoChange the begin and end methods in ObjectFile to match the style guide.
Rafael Espindola [Mon, 10 Feb 2014 20:24:04 +0000 (20:24 +0000)]
Change the begin and end methods in ObjectFile to match the style guide.

llvm-svn: 201108

10 years agoR600: Implement isTruncateFree
Matt Arsenault [Mon, 10 Feb 2014 19:57:42 +0000 (19:57 +0000)]
R600: Implement isTruncateFree

Truncation is just accessing a subregister for any multiple of
the register size, so it's free.

llvm-svn: 201107

10 years agoTests for DR351-370, plus update DR status page to match the latest core issue list.
Richard Smith [Mon, 10 Feb 2014 19:53:17 +0000 (19:53 +0000)]
Tests for DR351-370, plus update DR status page to match the latest core issue list.

llvm-svn: 201106

10 years agoMS ABI: Add support for #pragma pointers_to_members
David Majnemer [Mon, 10 Feb 2014 19:50:15 +0000 (19:50 +0000)]
MS ABI: Add support for #pragma pointers_to_members

Introduce a notion of a 'current representation method' for
pointers-to-members.

When starting out, this is set to 'best case' (representation method is
chosen by examining the class, selecting the smallest representation
that would work given the class definition or lack thereof).

This pragma allows the translation unit to dictate exactly what
representation to use, similar to how the inheritance model keywords
operate.

N.B.  PCH support is forthcoming.

Differential Revision: http://llvm-reviews.chandlerc.com/D2723

llvm-svn: 201105

10 years ago[LPM] A terribly simple fix to a terribly complex bug: PR18773.
Chandler Carruth [Mon, 10 Feb 2014 19:39:35 +0000 (19:39 +0000)]
[LPM] A terribly simple fix to a terribly complex bug: PR18773.

The crux of the issue is that LCSSA doesn't preserve stateful alias
analyses. Before r200067, LICM didn't cause LCSSA to run in the LTO pass
manager, where LICM runs essentially without any of the other loop
passes. As a consequence the globalmodref-aa pass run before that loop
pass manager was able to survive the loop pass manager and be used by
DSE to eliminate stores in the function called from the loop body in
Adobe-C++/loop_unroll (and similar patterns in other benchmarks).

When LICM was taught to preserve LCSSA it had to require it as well.
This caused it to be run in the loop pass manager and because it did not
preserve AA, the stateful AA was lost. Most of LLVM's AA isn't stateful
and so this didn't manifest in most cases. Also, in most cases LCSSA was
already running, and so there was no interesting change.

The real kicker is that LCSSA by its definition (injecting PHI nodes
only) trivially preserves AA! All we need to do is mark it, and then
everything goes back to working as intended. It probably was blocking
some other weird cases of stateful AA but the only one I have is
a 1000-line IR test case from loop_unroll, so I don't really have a good
test case here.

Hopefully this fixes the regressions on performance that have been seen
since that revision.

llvm-svn: 201104

10 years ago<rdar://problem/15996848>
Han Ming Ong [Mon, 10 Feb 2014 19:23:28 +0000 (19:23 +0000)]
<rdar://problem/15996848>

Made sure we pass along the file action paths for stdin/stdout/stderr to the XPC service.
[Reviewed by Greg Clayton]

llvm-svn: 201103

10 years agoBasic: Clean up malformed pragma diagnostics
David Majnemer [Mon, 10 Feb 2014 19:06:37 +0000 (19:06 +0000)]
Basic: Clean up malformed pragma diagnostics

Create a new diagnostic, -Wignored-pragmas and use it to handle any
case where a pragma would have a side effect but is ignored.

llvm-svn: 201102

10 years agoFix for PR17606 - result_of (and INVOKE) works incorrectly for member function pointe...
Marshall Clow [Mon, 10 Feb 2014 17:40:28 +0000 (17:40 +0000)]
Fix for PR17606 - result_of (and INVOKE) works incorrectly for member function pointers with ref qualifiers. Also a drive-by fix for common_type in C++03 mode. Thanks to Michel Morin for the bug report and the proposed fix.

llvm-svn: 201101

10 years agoPR18777: This PR is already fixed; add regtest.
Richard Smith [Mon, 10 Feb 2014 17:21:40 +0000 (17:21 +0000)]
PR18777: This PR is already fixed; add regtest.

llvm-svn: 201100

10 years agoSema: Remove useless MSStructPragmaOn update in Sema::~Sema
David Majnemer [Mon, 10 Feb 2014 17:17:03 +0000 (17:17 +0000)]
Sema: Remove useless MSStructPragmaOn update in Sema::~Sema

No functional change, this code was just superfluous.

llvm-svn: 201099

10 years agoCopy the ThreadLocalMode in GlobalVariable::copyAttributesFrom
Hans Wennborg [Mon, 10 Feb 2014 17:13:56 +0000 (17:13 +0000)]
Copy the ThreadLocalMode in GlobalVariable::copyAttributesFrom

This fixes the oversight from r159077.

llvm-svn: 201098

10 years agoR600/SI: Initialize M0 and emit S_WQM_B64 whenever DS instructions are used
Tom Stellard [Mon, 10 Feb 2014 16:58:30 +0000 (16:58 +0000)]
R600/SI: Initialize M0 and emit S_WQM_B64 whenever DS instructions are used

DS instructions that access local memory can only uses addresses that
are less than or equal to the value of M0.  When M0 is uninitialized,
then we experience undefined behavior.

This patch also changes the behavior to emit S_WQM_B64 on pixel shaders
no matter what kind of DS instruction is used.

llvm-svn: 201097

10 years agoR600/SI: Only use S_WQM_B64 in pixel shaders
Tom Stellard [Mon, 10 Feb 2014 16:58:27 +0000 (16:58 +0000)]
R600/SI: Only use S_WQM_B64 in pixel shaders

This doesn't change any functionality, since we only have two shader
types (compute and pixel) that use local memory.  We're just changing
the logic to match the documentation.

llvm-svn: 201096

10 years agoRemove some prototype code accidentally committed in r201043
David Blaikie [Mon, 10 Feb 2014 16:49:07 +0000 (16:49 +0000)]
Remove some prototype code accidentally committed in r201043

Thanks to Chandler for the catch.

llvm-svn: 201095

10 years agoARM: move vshll NEON implementation to common code
Tim Northover [Mon, 10 Feb 2014 16:20:36 +0000 (16:20 +0000)]
ARM: move vshll NEON implementation to common code

Now that both ARM backends use the same implementation for vshll operations,
the code can be shared. This is also a necessary LLVM/Clang interface update.

llvm-svn: 201094

10 years agoARM: use natural LLVM IR for vshll instructions
Tim Northover [Mon, 10 Feb 2014 16:20:29 +0000 (16:20 +0000)]
ARM: use natural LLVM IR for vshll instructions

Similarly to the vshrn instructions, these are simple zext/sext + trunc
operations. Using normal LLVM IR should allow for better code, and more sharing
with the AArch64 backend.

llvm-svn: 201093

10 years agoHost: unconstify editline paramters
Saleem Abdulrasool [Mon, 10 Feb 2014 16:10:42 +0000 (16:10 +0000)]
Host: unconstify editline paramters

Although the interface to el_push should be a constant parameter (as it is on
Darwin), certain Linux distributions currently ship a header which does not
provide proper const correctness.  This causes compilation failures on Linux.
Strip the constness on the parameter, which whilst incorrect, is mostly
harmless.  The parameter will not be changed by the interface and so it is
acceptable to do this.  When distributions have updated to a more correct
declaration, it would be nice to revert this change.

Addresses PR18784.

llvm-svn: 201092

10 years ago[AArch64] Handle aliases of conditional branches without b.pred form.
Chad Rosier [Mon, 10 Feb 2014 15:43:11 +0000 (15:43 +0000)]
[AArch64] Handle aliases of conditional branches without b.pred form.

llvm-svn: 201091

10 years agoARM: r12 is callee-saved for interrupt handlers
Oliver Stannard [Mon, 10 Feb 2014 14:24:23 +0000 (14:24 +0000)]
ARM: r12 is callee-saved for interrupt handlers

For A- and R-class processors, r12 is not normally callee-saved, but is for
interrupt handlers. See AAPCS, 5.3.1.1, "Use of IP by the linker".

llvm-svn: 201089

10 years agoMake succ_iterator a real random access iterator and clean up a couple of users.
Benjamin Kramer [Mon, 10 Feb 2014 14:17:42 +0000 (14:17 +0000)]
Make succ_iterator a real random access iterator and clean up a couple of users.

llvm-svn: 201088