platform/upstream/llvm.git
10 years ago[MS-ABI] Silence warning from r209523
Warren Hunt [Fri, 23 May 2014 16:26:32 +0000 (16:26 +0000)]
[MS-ABI] Silence warning from r209523
no functional change.

llvm-svn: 209525

10 years agoReplace system() by native perl calls
Sylvestre Ledru [Fri, 23 May 2014 16:10:00 +0000 (16:10 +0000)]
Replace system() by native perl calls

llvm-svn: 209524

10 years ago[MS-ABI] Implements MS-compatible RTTI
Warren Hunt [Fri, 23 May 2014 16:07:43 +0000 (16:07 +0000)]
[MS-ABI] Implements MS-compatible RTTI
Enables the emission of MS-compatible RTTI data structures for use with
typeid, dynamic_cast and exceptions.  Does not implement dynamic_cast
or exceptions.  As an artiface, typeid works in some cases but proper
support an testing will coming in a subsequent patch.

majnemer has fuzzed the results.  Test cases included.

Differential Revision: http://reviews.llvm.org/D3833

llvm-svn: 209523

10 years ago[sanitizer] Make stack traces from dlclose()'d modules more meaningful.
Sergey Matveev [Fri, 23 May 2014 16:04:41 +0000 (16:04 +0000)]
[sanitizer] Make stack traces from dlclose()'d modules more meaningful.

Previously, they silently omitted PCs belonging to unknown modules. Now we print
(<unknown module>) instead.

llvm-svn: 209522

10 years agoTeach the table generated emitPseudoExpansionLowering function to not emit a switch...
Aaron Ballman [Fri, 23 May 2014 15:33:39 +0000 (15:33 +0000)]
Teach the table generated emitPseudoExpansionLowering function to not emit a switch statement containing only a default statement (and no cases). Updated some of the code to use range-based for loops as well. No functional changes.

llvm-svn: 209521

10 years agoFix bug 19840, where some tests were not testing what we wanted. Thanks to Eric for...
Marshall Clow [Fri, 23 May 2014 15:30:23 +0000 (15:30 +0000)]
Fix bug 19840, where some tests were not testing what we wanted. Thanks to Eric for the bug report

llvm-svn: 209520

10 years agoAliases are always definition, delete dead code.
Rafael Espindola [Fri, 23 May 2014 15:18:06 +0000 (15:18 +0000)]
Aliases are always definition, delete dead code.

While at it, use a range loop.

llvm-svn: 209519

10 years agoDelete dead code.
Rafael Espindola [Fri, 23 May 2014 15:07:51 +0000 (15:07 +0000)]
Delete dead code.

GV is never used past this point. This was probably a copy and paste error.

llvm-svn: 209518

10 years ago[ubsan] temporary disable testing with -m32 as there are bots that don't support it
Kostya Serebryany [Fri, 23 May 2014 15:02:06 +0000 (15:02 +0000)]
[ubsan] temporary disable testing with -m32 as there are bots that don't support it

llvm-svn: 209517

10 years ago[ubsan] handle long double in 32-bit mode; part of the patch by Marek Polacek
Kostya Serebryany [Fri, 23 May 2014 14:45:13 +0000 (14:45 +0000)]
[ubsan] handle long double in 32-bit mode; part of the patch by Marek Polacek

llvm-svn: 209516

10 years ago[test] Force a triple in the pragma optimize test due to expected mangled names.
Dario Domizioli [Fri, 23 May 2014 13:53:12 +0000 (13:53 +0000)]
[test] Force a triple in the pragma optimize test due to expected mangled names.

No functional change to the compiler.
This should just make the test pass on all buildbots.

llvm-svn: 209515

10 years ago[mips] Work around inconsistency in llvm-mc's placement of fixup markers
Daniel Sanders [Fri, 23 May 2014 13:35:24 +0000 (13:35 +0000)]
[mips] Work around inconsistency in llvm-mc's placement of fixup markers

Summary:
Add a second fixup table to MipsAsmBackend::getFixupKindInfo() to correctly
position llvm-mc's fixup placeholders for big-endian.

See PR19836 for full details of the issue. To summarize, the fixup placeholders
do not account for endianness properly and the implementations of
getFixupKindInfo() for each target are measuring MCFixupKindInfo.TargetOffset
from different ends of the instruction encoding to compensate.

Reviewers: jkolek, zoran.jovanovic, vmedic

Reviewed By: vmedic

Differential Revision: http://reviews.llvm.org/D3889

llvm-svn: 209514

10 years ago[mips][mips64r6] t(eq|ge|lt|ne)i and t(ge|lt)iu are not available in MIPS32r6/MIPS64r6
Daniel Sanders [Fri, 23 May 2014 13:24:08 +0000 (13:24 +0000)]
[mips][mips64r6] t(eq|ge|lt|ne)i and t(ge|lt)iu are not available in MIPS32r6/MIPS64r6

Summary: Depends on D3872

Reviewers: jkolek, zoran.jovanovic, vmedic

Reviewed By: vmedic

Differential Revision: http://reviews.llvm.org/D3891

llvm-svn: 209513

10 years ago[mips][mips64r6] [ls][dw][lr] are not available in MIPS32r6/MIPS64r6
Daniel Sanders [Fri, 23 May 2014 13:18:02 +0000 (13:18 +0000)]
[mips][mips64r6] [ls][dw][lr] are not available in MIPS32r6/MIPS64r6

Summary:
Instead the system is required to provide some means of handling unaligned
load/store without special instructions. Options include full hardware
support, full trap-and-emulate, and hybrids such as hardware support within
a cache line and trap-and-emulate for multi-line accesses.

MipsSETargetLowering::allowsUnalignedMemoryAccesses() has been configured to
assume that unaligned accesses are 'fast' on the basis that I expect few
hardware implementations will opt for pure-software handling of unaligned
accesses. The ones that do handle it purely in software can override this.

mips64-load-store-left-right.ll has been merged into load-store-left-right.ll

The stricter testing revealed a Bits!=Bytes bug in passByValArg(). This has
been fixed and the variables renamed to clarify the units they hold.

Reviewers: zoran.jovanovic, jkolek, vmedic

Reviewed By: vmedic

Differential Revision: http://reviews.llvm.org/D3872

llvm-svn: 209512

10 years agoPR19352 - getLocation() points to the wrong position for FriendDecls
Nikola Smiljanic [Fri, 23 May 2014 12:48:27 +0000 (12:48 +0000)]
PR19352 - getLocation() points to the wrong position for FriendDecls

llvm-svn: 209511

10 years agoImplemented support for "pragma clang optimize on/off", based on attribute 'optnone'.
Dario Domizioli [Fri, 23 May 2014 12:13:25 +0000 (12:13 +0000)]
Implemented support for "pragma clang optimize on/off", based on attribute 'optnone'.

This patch implements support for selectively disabling optimizations on a
range of function definitions through a pragma. The implementation is that
all function definitions in the range are decorated with attribute
'optnone'.

    #pragma clang optimize off
    // All function definitions in here are decorated with 'optnone'.
    #pragma clang optimize on
    // Compilation resumes as normal.

llvm-svn: 209510

10 years ago[asan] fix a test following r209508
Kostya Serebryany [Fri, 23 May 2014 11:52:38 +0000 (11:52 +0000)]
[asan] fix a test following r209508

llvm-svn: 209509

10 years ago[asan] properly instrument memory accesses that have small alignment (smaller than...
Kostya Serebryany [Fri, 23 May 2014 11:52:07 +0000 (11:52 +0000)]
[asan] properly instrument memory accesses that have small alignment (smaller than min(8,size)) by making two checks instead of one. This may slowdown some cases, e.g. long long on 32-bit or wide loads produced after loop unrolling. The benefit is higher sencitivity.

llvm-svn: 209508

10 years agoUpdated the llvm.mem.parallel_loop_access semantics to include the possibility
Pekka Jaaskelainen [Fri, 23 May 2014 11:35:46 +0000 (11:35 +0000)]
Updated the llvm.mem.parallel_loop_access semantics to include the possibility
to have only some of the loop's memory instructions be annotated and still _help_
the loop carried dependence analysis.

This was discussed in the llvmdev ML (topic: "parallel loop metadata question").

llvm-svn: 209507

10 years agoFixup sys::getHostCPUFeatures crypto names so it doesn't clash with kernel headers
Bradley Smith [Fri, 23 May 2014 10:14:13 +0000 (10:14 +0000)]
Fixup sys::getHostCPUFeatures crypto names so it doesn't clash with kernel headers

llvm-svn: 209506

10 years agoclang-tidy: Only add 'override' before inlined bodies.
Daniel Jasper [Fri, 23 May 2014 08:52:10 +0000 (08:52 +0000)]
clang-tidy: Only add 'override' before inlined bodies.

llvm-svn: 209505

10 years ago[YAML] Add an optional argument `EnumMask` to the `yaml::IO::bitSetCase()`.
Simon Atanasyan [Fri, 23 May 2014 08:07:09 +0000 (08:07 +0000)]
[YAML] Add an optional argument `EnumMask` to the `yaml::IO::bitSetCase()`.

Some bit-set fields used in ELF file headers in fact contain two parts.
The first one is a regular bit-field. The second one is an enumeraion.
For example ELF header `e_flags` for MIPS target might contain the
following values:

Bit-set values:

  EF_MIPS_NOREORDER = 0x00000001
  EF_MIPS_PIC       = 0x00000002
  EF_MIPS_CPIC      = 0x00000004
  EF_MIPS_ABI2      = 0x00000020

Enumeration:

  EF_MIPS_ARCH_32   = 0x50000000
  EF_MIPS_ARCH_64   = 0x60000000
  EF_MIPS_ARCH_32R2 = 0x70000000
  EF_MIPS_ARCH_64R2 = 0x80000000

For printing bit-sets we use the `yaml::IO::bitSetCase()`. It does not
support bit-set/enumeration combinations and prints too many flags from
an enumeration part. This patch fixes this problem. New method
`yaml::IO::maskedBitSetCase()` handle "enumeration" part of bitset
defined by provided mask.

Patch reviewed by Nick Kledzik and Sean Silva.

llvm-svn: 209504

10 years agoFix '-main-file-name <name>' so that it is used for the ModuleID.
Robert Lytton [Fri, 23 May 2014 07:34:08 +0000 (07:34 +0000)]
Fix '-main-file-name <name>' so that it is used for the ModuleID.

Summary:
Previously, you could not specify the original file name when passing a preprocessed file into the compiler
Now you can use 'clang -Xclang -main-file-name -Xclang <original file name> ...'
Or 'clang -cc1 -main-file-name <original file name> ...'

llvm-svn: 209503

10 years agoTypedef NumeredTypesMapTy is not used anywhere.
Yaron Keren [Fri, 23 May 2014 07:31:25 +0000 (07:31 +0000)]
Typedef NumeredTypesMapTy is not used anywhere.

llvm-svn: 209502

10 years agoTest commit.
Jingyue Wu [Fri, 23 May 2014 06:30:12 +0000 (06:30 +0000)]
Test commit.

The keyword "virtual" is not necessary.

llvm-svn: 209501

10 years agollvm-ar: Output the file we errored on.
Filipe Cabecinhas [Fri, 23 May 2014 05:52:12 +0000 (05:52 +0000)]
llvm-ar: Output the file we errored on.

llvm-svn: 209500

10 years agoRename a couple of variables to be more accurate.
David Blaikie [Fri, 23 May 2014 05:03:23 +0000 (05:03 +0000)]
Rename a couple of variables to be more accurate.

It's not really a "ScopeDIE", as such - it's the abstract function
definition's DIE. And we usually use "SP" for subprograms, rather than
"Sub".

llvm-svn: 209499

10 years agoDebugInfo: Fix cross-CU references for scopes (and variables within those scopes...
David Blaikie [Fri, 23 May 2014 04:23:06 +0000 (04:23 +0000)]
DebugInfo: Fix cross-CU references for scopes (and variables within those scopes) in abstract definitions of cross-CU inlined functions

Found by Adrian Prantl during post-commit review of r209335.

llvm-svn: 209498

10 years agoUse short identifier.
Rui Ueyama [Fri, 23 May 2014 03:08:05 +0000 (03:08 +0000)]
Use short identifier.

llvm-svn: 209497

10 years agoMC: remove unnecessary restriction on tests
Saleem Abdulrasool [Fri, 23 May 2014 02:56:51 +0000 (02:56 +0000)]
MC: remove unnecessary restriction on tests

Rafael correctly pointed out that the restriction is unnecessary.  Although the
tests are intended to ensure that we dont abort due to an assertion, running the
tests in all modes is better since it also ensures that we dont crash without
assertions.  Always run these tests to ensure that we can handle invalid input
correctly.

llvm-svn: 209496

10 years ago[ARM64] Fix a bug in shuffle vector lowering to generate corect vext ISD with swapped...
Jiangning Liu [Fri, 23 May 2014 02:54:50 +0000 (02:54 +0000)]
[ARM64] Fix a bug in shuffle vector lowering to generate corect vext ISD with swapped input vectors.

llvm-svn: 209495

10 years agoFixed the Symbol code to resolve the callable address
Sean Callanan [Fri, 23 May 2014 02:30:48 +0000 (02:30 +0000)]
Fixed the Symbol code to resolve the callable address
of the symbol itself rather than forcing clients to do
it.  This simplifies the logic for the expression
parser a great deal.

<rdar://problem/16935324>

llvm-svn: 209494

10 years agoInstead of having an UnwindTable own a single assembly profiler,
Jason Molenda [Fri, 23 May 2014 01:48:10 +0000 (01:48 +0000)]
Instead of having an UnwindTable own a single assembly profiler,
and sharing it with all of its FuncUnwinders, have each FuncUnwinder
create an AssemblyProfiler on demand as needed.  I was worried that
the cost of creating the llvm disassemblers would be high for this
approach but it's not supposed to be an expensive operation, and it
means we don't need to add locks around this section of code.
<rdar://problem/16992332>

llvm-svn: 209493

10 years agoRevert r209488; Greg suggests a different approach.
Jason Molenda [Fri, 23 May 2014 01:42:56 +0000 (01:42 +0000)]
Revert r209488; Greg suggests a different approach.

llvm-svn: 209492

10 years agoClean DiagRanges. Fix a possible problem introduced in r209468.
Alexander Kornienko [Fri, 23 May 2014 01:37:30 +0000 (01:37 +0000)]
Clean DiagRanges. Fix a possible problem introduced in r209468.

llvm-svn: 209491

10 years agoAttempt to placate compilers that warn on casts between pointer-to-object and
Richard Smith [Fri, 23 May 2014 01:22:46 +0000 (01:22 +0000)]
Attempt to placate compilers that warn on casts between pointer-to-object and
pointer-to-function types.

llvm-svn: 209490

10 years agoFix a bug in xmmintrin.h.
Akira Hatanaka [Fri, 23 May 2014 00:38:07 +0000 (00:38 +0000)]
Fix a bug in xmmintrin.h.

The last step of _mm_cvtps_pi16 should use _mm_packs_pi32, which is a function
that reads two __m64 values and packs four 32-bit values into four 16-bit
values.

<rdar://problem/16873717>

llvm-svn: 209489

10 years agoThe UnwindTable (one per module) used to hand out shared pointers
Jason Molenda [Fri, 23 May 2014 00:08:09 +0000 (00:08 +0000)]
The UnwindTable (one per module) used to hand out shared pointers
to its unwind assembly profiler to all of the FuncUnwinders (one
per symbol) under it.  If lldb is running multiple targets, you
could get two different FuncUnwinders in the same Module trying
to use the same llvm disassembler simultaneously and that may be
a re-entrancy problem.

Instead, the UnwindTable has the unwind assembly profiler and when
the FuncUnwinders want to use it, they get exclusive access to
the assembly profiler until they're done using it.
<rdar://problem/16992332>

llvm-svn: 209488

10 years agoScalarEvolution: Fix handling of AddRecs in isKnownPredicate
Justin Bogner [Fri, 23 May 2014 00:06:56 +0000 (00:06 +0000)]
ScalarEvolution: Fix handling of AddRecs in isKnownPredicate

ScalarEvolution::isKnownPredicate() can wrongly reduce a comparison
when both the LHS and RHS are SCEVAddRecExprs. This checks that both
LHS and RHS are guarded in the case when both are SCEVAddRecExprs.

The test case is against indvars because I could not find a way to
directly test SCEV.

Patch by Sanjay Patel!

llvm-svn: 209487

10 years ago[PECOFF] Make a separate pass for /alternatename symbols.
Rui Ueyama [Fri, 23 May 2014 00:02:42 +0000 (00:02 +0000)]
[PECOFF] Make a separate pass for /alternatename symbols.

/alternatename is a command line option to define a weak alias. You
can use it as /alternatename:foo=bar to define "foo" as a weak alias
for "bar".

Because it's a command line option, the weak alias mapping is in the
LinkingContext object, and not in a object file being read.

Previously, we looked up the mapping each time we read a new symbol
from a file, to check if there is a weak alias defined for the symbol.
That's not wrong, but had made function signature's a bit complicated --
we had to pass the mapping object to many functions. Now their
parameter lists are much cleaner.

This also has another (unrealized) benefit. parseFile() now read a
file and then add alias symbols to the file. In the first pass a
LinkingContext object is not used at all. That should make it easy
to read files from archive files speculatively, as the first pass
is free from side effect.

llvm-svn: 209486

10 years agoMake sure SectionLoadHistory::GetCurrentSectionLoadList () is thread safe.
Greg Clayton [Thu, 22 May 2014 23:54:17 +0000 (23:54 +0000)]
Make sure SectionLoadHistory::GetCurrentSectionLoadList () is thread safe.

<rdar://problem/15818525>

llvm-svn: 209485

10 years agoDon't set unnamed_addr in CreateRuntimeVariable.
Rafael Espindola [Thu, 22 May 2014 23:33:27 +0000 (23:33 +0000)]
Don't set unnamed_addr in CreateRuntimeVariable.

This was fairly broken. For example,

@__dso_handle would or would not get an unnamed_addr depending on how many
global destructors were used in a translation unit.

The consensus was that not every runtime variable is unnamed_addr and that
__dso_handle handle should not be, so just don't add unnamed_addr in
CreateRuntimeVariable.

llvm-svn: 209484

10 years ago[Graph Writer] Limit the length of the graph name because Windows can't handle it.
Michael J. Spencer [Thu, 22 May 2014 23:32:18 +0000 (23:32 +0000)]
[Graph Writer] Limit the length of the graph name because Windows can't handle it.

Windows can't handle paths longer than 260 code points without \\?\. Even
with \\?\ it can't handle path components longer than 255 code points. So
limit graph names to the arbitrary length of 140. Random characters are still
added to the end, so it's ok if graph names collide.

Differential Revision: http://reviews.llvm.org/D3883

llvm-svn: 209483

10 years agoAvoid allocating extra memory to handle the lazy definition data pointer for
Richard Smith [Thu, 22 May 2014 23:19:02 +0000 (23:19 +0000)]
Avoid allocating extra memory to handle the lazy definition data pointer for
CXXRecordDecls when modules is enabled.

llvm-svn: 209482

10 years agoMake these bool bitfields.
Eric Christopher [Thu, 22 May 2014 23:09:57 +0000 (23:09 +0000)]
Make these bool bitfields.

llvm-svn: 209481

10 years agoDon't reduce the stack protector level given -fstack-protector.
Rafael Espindola [Thu, 22 May 2014 22:57:39 +0000 (22:57 +0000)]
Don't reduce the stack protector level given -fstack-protector.

Before -fstack-protector would always force a level of 1, even if the default
was 2.

Patch by Brad Smith.

llvm-svn: 209479

10 years ago[RuntimeDyld] Teach RuntimeDyldMachO how to handle scattered VANILLA relocs on
Lang Hames [Thu, 22 May 2014 22:30:13 +0000 (22:30 +0000)]
[RuntimeDyld] Teach RuntimeDyldMachO how to handle scattered VANILLA relocs on
i386.

This fixes two more MCJIT regression tests on i386:

  ExecutionEngine/MCJIT/2003-05-06-LivenessClobber.ll
  ExecutionEngine/MCJIT/2013-04-04-RelocAddend.ll

The implementation of processScatteredVANILLA is tasteless (*ba-dum-ching*),
but I'm working on a substantial tidy-up of RuntimeDyldMachO that should
improve things.

This patch also fixes a type-o in RuntimeDyldMachO::processSECTDIFFRelocation,
and teaches that method to skip over the PAIR reloc following the SECTDIFF.

<rdar://problem/16961886>

llvm-svn: 209478

10 years agoUse error_code::success() instead of make_error_code(llvm::errc::success).
Alexander Kornienko [Thu, 22 May 2014 22:06:08 +0000 (22:06 +0000)]
Use error_code::success() instead of make_error_code(llvm::errc::success).

llvm-svn: 209477

10 years ago[TSan] ifdef out certain functions if 128-bit ints are not supported.
Alexey Samsonov [Thu, 22 May 2014 22:02:38 +0000 (22:02 +0000)]
[TSan] ifdef out certain functions if 128-bit ints are not supported.

llvm-svn: 209476

10 years agoMove alias symbols from ELFLinkingContext to LinkingContext.
Rui Ueyama [Thu, 22 May 2014 21:37:56 +0000 (21:37 +0000)]
Move alias symbols from ELFLinkingContext to LinkingContext.

Alias symbols are SimpleDefinedAtoms and are platform neutral. They
don't have to belong ELF. This patch is to make it available to all
platforms. No functionality change intended.

Differential Revision: http://reviews.llvm.org/D3862

llvm-svn: 209475

10 years agoUnify the name of compiler-rt builtins library on Linux.
Alexey Samsonov [Thu, 22 May 2014 21:13:30 +0000 (21:13 +0000)]
Unify the name of compiler-rt builtins library on Linux.

Call it "libclang_rt.builtins-<arch>.a" to be consistent
with sanitizers/profile libraries naming. Modify Makefile
and CMake build systems and Clang driver accordingly.

Fixes PR19822.

llvm-svn: 209474

10 years agoUnify the name of compiler-rt builtins library on Linux.
Alexey Samsonov [Thu, 22 May 2014 21:12:43 +0000 (21:12 +0000)]
Unify the name of compiler-rt builtins library on Linux.

Call it "libclang_rt.builtins-<arch>.a" to be consistent
with sanitizers/profile libraries naming. Modify Makefile
and CMake build systems and Clang driver accordingly.

Fixes PR19822.

llvm-svn: 209473

10 years agoIf a class template specialization from one module has its definition
Richard Smith [Thu, 22 May 2014 20:59:29 +0000 (20:59 +0000)]
If a class template specialization from one module has its definition
instantiated in another module, and the instantiation uses a partial
specialization, include the partial specialization and its template arguments
in the update record. We'll need them if someone imports the second module and
tries to instantiate a member of the template.

llvm-svn: 209472

10 years agoDon't warn about undefined inline functions if they're dllexport/import
Hans Wennborg [Thu, 22 May 2014 20:45:53 +0000 (20:45 +0000)]
Don't warn about undefined inline functions if they're dllexport/import

llvm-svn: 209471

10 years agoUpdate the code according to the changes in r209468.
Alexander Kornienko [Thu, 22 May 2014 20:19:46 +0000 (20:19 +0000)]
Update the code according to the changes in r209468.

llvm-svn: 209470

10 years ago[mach-o] Fix so that mach-o semantic errors return an error rather than assert
Nick Kledzik [Thu, 22 May 2014 20:05:43 +0000 (20:05 +0000)]
[mach-o] Fix so that mach-o semantic errors return an error rather than assert

llvm-svn: 209469

10 years agoRemove limits on the number of fix-it hints and ranges in the DiagnosticsEngine.
Alexander Kornienko [Thu, 22 May 2014 19:56:11 +0000 (19:56 +0000)]
Remove limits on the number of fix-it hints and ranges in the DiagnosticsEngine.

Summary:
The limits on the number of fix-it hints and ranges attached to a
diagnostic are arbitrary and don't apply universally to all users of the
DiagnosticsEngine. The way the limits are enforced may lead to diagnostics
generating invalid sets of fixes. I suggest removing the limits, which will also
simplify the implementation.

Reviewers: rsmith

Reviewed By: rsmith

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D3879

llvm-svn: 209468

10 years agoUpdate some AliasAnalysis pass docs for getAdjustedAnalysisPointer.
Eric Christopher [Thu, 22 May 2014 19:38:25 +0000 (19:38 +0000)]
Update some AliasAnalysis pass docs for getAdjustedAnalysisPointer.

Patch by George Burgess.

llvm-svn: 209467

10 years agoImproved location for non-constant initializers diagnostics.
Abramo Bagnara [Thu, 22 May 2014 19:20:46 +0000 (19:20 +0000)]
Improved location for non-constant initializers diagnostics.

llvm-svn: 209466

10 years agoForgot to add updated datalayout test
Matt Arsenault [Thu, 22 May 2014 18:57:49 +0000 (18:57 +0000)]
Forgot to add updated datalayout test

llvm-svn: 209465

10 years agoUpdate R600 datalayout
Matt Arsenault [Thu, 22 May 2014 18:33:55 +0000 (18:33 +0000)]
Update R600 datalayout

llvm-svn: 209464

10 years agoR600: Add definition for flat address space ID.
Matt Arsenault [Thu, 22 May 2014 18:27:07 +0000 (18:27 +0000)]
R600: Add definition for flat address space ID.

Use 4 since that's probably what it will be for spir.
Move ADDRESS_NONE to the end to keep the constant_buffer_* values
unchanged, since apparently a bunch of r600 tests use those directly.

llvm-svn: 209463

10 years agoR600: Try to convert BFE back to standard bit ops when possible.
Matt Arsenault [Thu, 22 May 2014 18:09:12 +0000 (18:09 +0000)]
R600: Try to convert BFE back to standard bit ops when possible.

This allows existing DAG combines to work on them, and then
we can re-match to BFE if necessary during instruction selection.

llvm-svn: 209462

10 years agoR600: Add dag combine for BFE
Matt Arsenault [Thu, 22 May 2014 18:09:07 +0000 (18:09 +0000)]
R600: Add dag combine for BFE

llvm-svn: 209461

10 years agoR600: Implement ComputeNumSignBitsForTargetNode for BFE
Matt Arsenault [Thu, 22 May 2014 18:09:03 +0000 (18:09 +0000)]
R600: Implement ComputeNumSignBitsForTargetNode for BFE

llvm-svn: 209460

10 years agoR600: Implement computeMaskedBitsForTargetNode for BFE
Matt Arsenault [Thu, 22 May 2014 18:09:00 +0000 (18:09 +0000)]
R600: Implement computeMaskedBitsForTargetNode for BFE

llvm-svn: 209459

10 years agoR600: Expand mul24 for GPUs without it
Matt Arsenault [Thu, 22 May 2014 18:00:24 +0000 (18:00 +0000)]
R600: Expand mul24 for GPUs without it

llvm-svn: 209458

10 years agoR600: Expand mad24 for GPUs without it
Matt Arsenault [Thu, 22 May 2014 18:00:20 +0000 (18:00 +0000)]
R600: Expand mad24 for GPUs without it

llvm-svn: 209457

10 years agoR600: Add intrinsics for mad24
Matt Arsenault [Thu, 22 May 2014 18:00:15 +0000 (18:00 +0000)]
R600: Add intrinsics for mad24

llvm-svn: 209456

10 years agoReturn false if we're not going to do anything.
Eric Christopher [Thu, 22 May 2014 17:49:33 +0000 (17:49 +0000)]
Return false if we're not going to do anything.

llvm-svn: 209455

10 years agoR600/SI: Move instruction pattern to instruction definition
Matt Arsenault [Thu, 22 May 2014 17:45:20 +0000 (17:45 +0000)]
R600/SI: Move instruction pattern to instruction definition

llvm-svn: 209454

10 years agoRemove LLVMContextImpl::optimizationRemarkEnabledFor.
Diego Novillo [Thu, 22 May 2014 17:19:01 +0000 (17:19 +0000)]
Remove LLVMContextImpl::optimizationRemarkEnabledFor.

Summary:
This patch moves the handling of -pass-remarks* over to
lib/DiagnosticInfo.cpp. This allows the removal of the
optimizationRemarkEnabledFor functions from LLVMContextImpl, as they're
not needed anymore.

Reviewers: qcolombet

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D3878

llvm-svn: 209453

10 years agoAdded gdbremote protocol test for $p and returned data size.
Todd Fiala [Thu, 22 May 2014 17:18:18 +0000 (17:18 +0000)]
Added gdbremote protocol test for $p and returned data size.

Each register returned by $qRegisterInfo is tested that it's
$p register read returns a representation that is the correct byte size
as indicated by $qRegisterInfo.

Currently enabled for debugserver, disabled for llgs.

The llgs branch will use this to verify $p implementation.

llvm-svn: 209452

10 years ago[X86] Improve the lowering of BITCAST from MVT::f64 to MVT::v4i16/MVT::v8i8.
Andrea Di Biagio [Thu, 22 May 2014 16:21:39 +0000 (16:21 +0000)]
[X86] Improve the lowering of BITCAST from MVT::f64 to MVT::v4i16/MVT::v8i8.

This patch teaches the x86 backend how to efficiently lower ISD::BITCAST dag
nodes from MVT::f64 to MVT::v4i16 (and vice versa), and from MVT::f64 to
MVT::v8i8 (and vice versa).

This patch extends the logic from revision 208107 to also handle MVT::v4i16
and MVT::v8i8. Also, this patch correctly propagates Undef values when
performing the widening of a vector (example: when widening from v2i32 to
v4i32, the upper 64bits of the resulting vector are 'undef').

llvm-svn: 209451

10 years agoAdd clang-tidy -line-filter option to filter findings by line ranges.
Alexander Kornienko [Thu, 22 May 2014 16:07:11 +0000 (16:07 +0000)]
Add clang-tidy -line-filter option to filter findings by line ranges.

Summary:
This is going to be used for a clang-tidy-diff script to display
warnings in changed lines only. The option uses JSON, as its value is not
intended to be entered manually.

Reviewers: klimek

Reviewed By: klimek

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D3873

llvm-svn: 209450

10 years agoAn inline function redeclaration does not drop the dllimport attribute
Hans Wennborg [Thu, 22 May 2014 15:46:15 +0000 (15:46 +0000)]
An inline function redeclaration does not drop the dllimport attribute

llvm-svn: 209449

10 years agoQuick-fix a copy-and-paste mistake in one of the ASan test
Timur Iskhodzhanov [Thu, 22 May 2014 15:14:05 +0000 (15:14 +0000)]
Quick-fix a copy-and-paste mistake in one of the ASan test

llvm-svn: 209448

10 years agoclang-format: Add basic test for -style=none.
Daniel Jasper [Thu, 22 May 2014 15:13:48 +0000 (15:13 +0000)]
clang-format: Add basic test for -style=none.

llvm-svn: 209447

10 years agoclang-format: Introduce DisableFormat that prevents formatting.
Daniel Jasper [Thu, 22 May 2014 15:12:22 +0000 (15:12 +0000)]
clang-format: Introduce DisableFormat that prevents formatting.

And "none" pseudo-style indicating that formatting should be not
applied.

(1) Using .clang-format with "DisableFormat: true" effectively prevents
formatting for all files within the folder containing such .clang-format
file.

(2) Using -fallback-style=none together with -style=file prevents
formatting when .clang-format is not found, which can be used in on-save
callback.

Patch by Adam Strzelecki. Thank you!

llvm-svn: 209446

10 years ago[asan] relax the test for long double
Kostya Serebryany [Thu, 22 May 2014 14:50:14 +0000 (14:50 +0000)]
[asan] relax the test for long double

llvm-svn: 209445

10 years ago[ASan/Win] Make sure the list of wrappers exported by the main module and imported...
Timur Iskhodzhanov [Thu, 22 May 2014 14:49:56 +0000 (14:49 +0000)]
[ASan/Win] Make sure the list of wrappers exported by the main module and imported by the DLL thunk always matches

llvm-svn: 209444

10 years agoARM64: remove '#' from annotation of add/sub immediate
Tim Northover [Thu, 22 May 2014 14:20:05 +0000 (14:20 +0000)]
ARM64: remove '#' from annotation of add/sub immediate

The full string used to be "// =#12" for example, which looks too
busy.

llvm-svn: 209443

10 years agoAdd support for missed and analysis optimization remarks.
Diego Novillo [Thu, 22 May 2014 14:19:46 +0000 (14:19 +0000)]
Add support for missed and analysis optimization remarks.

Summary:
This adds two new diagnostics: -pass-remarks-missed and
-pass-remarks-analysis. They take the same values as -pass-remarks but
are intended to be triggered in different contexts.

-pass-remarks-missed is used by LLVMContext::emitOptimizationRemarkMissed,
which passes call when they tried to apply a transformation but
couldn't.

-pass-remarks-analysis is used by LLVMContext::emitOptimizationRemarkAnalysis,
which passes call when they want to inform the user about analysis
results.

The patch also:

1- Adds support in the inliner for the two new remarks and a
   test case.

2- Moves emitOptimizationRemark* functions to the llvm namespace.

3- Adds an LLVMContext argument instead of making them member functions
   of LLVMContext.

Reviewers: qcolombet

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D3682

llvm-svn: 209442

10 years ago[ASan/Win] Thread more library functions from the DLL thunk to the main module
Timur Iskhodzhanov [Thu, 22 May 2014 13:57:22 +0000 (13:57 +0000)]
[ASan/Win] Thread more library functions from the DLL thunk to the main module

llvm-svn: 209441

10 years agoclang-format: Don't use Allman brace breaking for ObjC blocks.
Daniel Jasper [Thu, 22 May 2014 13:53:55 +0000 (13:53 +0000)]
clang-format: Don't use Allman brace breaking for ObjC blocks.

It just seems wrong. This fixes llvm.org/PR19736.

llvm-svn: 209440

10 years ago[ASan/Win] Add more tests for operator new[]
Timur Iskhodzhanov [Thu, 22 May 2014 13:28:27 +0000 (13:28 +0000)]
[ASan/Win] Add more tests for operator new[]

llvm-svn: 209439

10 years agoclang-format: Fix corner case in AllowShortBlocksOnASingleLine.
Daniel Jasper [Thu, 22 May 2014 13:25:26 +0000 (13:25 +0000)]
clang-format: Fix corner case in AllowShortBlocksOnASingleLine.

Before:
  template <int> struct A4 { A4() { }
  };

After:
  template <int i> struct A4 {
    A4() {}
  };

This fixes llvm.org/PR19813 (at least the part that isn't working as
intended).

llvm-svn: 209438

10 years agoMachO: look for nearby tools on all MachO platforms.
Tim Northover [Thu, 22 May 2014 13:12:14 +0000 (13:12 +0000)]
MachO: look for nearby tools on all MachO platforms.

This brings "-arch armv7m" (etc) behaviour more in line with what's expected
for developers on OS X, and allows Clang to find an "ld" (for example) in the
same directory instead of using the default /usr/bin/ld.

Unfortunately no test because it relies on the specific place Clang is running
from.

rdar://problem/16427320

llvm-svn: 209437

10 years agoSegmented stacks: omit __morestack call when there's no frame.
Tim Northover [Thu, 22 May 2014 13:03:43 +0000 (13:03 +0000)]
Segmented stacks: omit __morestack call when there's no frame.

Patch by Florian Zeitz

llvm-svn: 209436

10 years agoRevert "TMP"
Tim Northover [Thu, 22 May 2014 12:55:29 +0000 (12:55 +0000)]
Revert "TMP"

This reverts r209433. Sorry about that, it needs a test & better message.

llvm-svn: 209435

10 years agoMachO: perform ARM ABI detection even for non-Darwin triples.
Tim Northover [Thu, 22 May 2014 12:54:30 +0000 (12:54 +0000)]
MachO: perform ARM ABI detection even for non-Darwin triples.

When "-arch armv7m" is specified, we want "aapcs", for example.

rdar://problem/16581138

llvm-svn: 209434

10 years agoTMP
Tim Northover [Thu, 22 May 2014 12:54:24 +0000 (12:54 +0000)]
TMP

llvm-svn: 209433

10 years agoUse stack protector strong by default on OpenBSD.
Rafael Espindola [Thu, 22 May 2014 12:52:35 +0000 (12:52 +0000)]
Use stack protector strong by default on OpenBSD.

Use stack protector strong by default to match the base OS and ports/packages
compiler policy.

Patch by Brad Smith.

llvm-svn: 209432

10 years agoclang-format: Fix braced list detection.
Daniel Jasper [Thu, 22 May 2014 12:46:38 +0000 (12:46 +0000)]
clang-format: Fix braced list detection.

Before:
  static_assert(std::is_integral<int> {} + 0, "");
  int a = std::is_integral<int> {}
  + 0;

After:
  static_assert(std::is_integral<int>{} + 0, "");
  int a = std::is_integral<int>{} + 0;

llvm-svn: 209431

10 years agoARM64: these work too
Tim Northover [Thu, 22 May 2014 12:14:49 +0000 (12:14 +0000)]
ARM64: these work too

llvm-svn: 209430

10 years agoYes they do
Tim Northover [Thu, 22 May 2014 12:14:02 +0000 (12:14 +0000)]
Yes they do

llvm-svn: 209429

10 years agoclang-format: Fix incorrect braced init identification.
Daniel Jasper [Thu, 22 May 2014 12:11:13 +0000 (12:11 +0000)]
clang-format: Fix incorrect braced init identification.

Before:
  int foo(int i) {
    return fo1 {}
    (i);
  }
  int foo(int i) {
    return fo1 {}
    (i);
  }

After:
  int foo(int i) { return fo1{}(i); }
  int foo(int i) { return fo1{}(i); }

This fixes llvm.org/PR19812.

llvm-svn: 209428

10 years ago[ASan/Win] Use the new function interception approach to handle function wrappers...
Timur Iskhodzhanov [Thu, 22 May 2014 12:03:40 +0000 (12:03 +0000)]
[ASan/Win] Use the new function interception approach to handle function wrappers too; wrap strlen() in DLLs

Reviewed at http://reviews.llvm.org/D3871

llvm-svn: 209427

10 years agoARM64: model pre/post-indexed operations properly.
Tim Northover [Thu, 22 May 2014 11:56:20 +0000 (11:56 +0000)]
ARM64: model pre/post-indexed operations properly.

We should be keeping track of the writeback on these instructions,
otherwise we're relying on LLVM's stupidity for correct code.

Fortunately, the MC layer can now handle all required constraints,
which means we can get rid of the CodeGen only PseudoInsts too.

llvm-svn: 209426

10 years agoARM64: separate load/store operands to simplify assembler
Tim Northover [Thu, 22 May 2014 11:56:09 +0000 (11:56 +0000)]
ARM64: separate load/store operands to simplify assembler

This changes ARM64 to use separate operands for each component of an
address, and look for separate '[', '$Rn, ..., ']' tokens when
parsing.

This allows us to do away with quite a bit of special C++ code to
handle monolithic "addressing modes" in the MC components. The more
incremental matching of the assembler operands also allows for better
diagnostics when LLVM is presented with invalid input.

Most of the complexity here is with the register-offset instructions,
which were extremely dodgy beforehand: even when the instruction used
wM, LLVM's model had xM as an operand. We papered over this
discrepancy before, but that approach doesn't work now so I split them
into separate X and W variants.

llvm-svn: 209425