platform/upstream/llvm.git
9 years agoUse CGLoopInfo to emit metadata for loop hint pragmas.
Tyler Nowicki [Mon, 27 Jul 2015 20:10:20 +0000 (20:10 +0000)]
Use CGLoopInfo to emit metadata for loop hint pragmas.

When ‘#pragma clang loop vectorize(assume_safety)’ was specified on a loop other loop hints were lost. The problem is that CGLoopInfo attaches metadata differently than EmitCondBrHints in CGStmt. For do-loops CGLoopInfo attaches metadata to the br in the body block and for while and for loops, the inc block. EmitCondBrHints on the other hand always attaches data to the br in the cond block. When specifying assume_safety CGLoopInfo emits an empty llvm.loop metadata shadowing the metadata in the cond block. Loop transformations like rotate and unswitch would then eliminate the cond block and its non-empty metadata.

This patch unifies both approaches for adding metadata and modifies the existing safety tests to include non-assume_safety loop hints.

llvm-svn: 243315

9 years agoFixed test in rL243305
Simon Pilgrim [Mon, 27 Jul 2015 19:49:54 +0000 (19:49 +0000)]
Fixed test in rL243305

llvm-svn: 243314

9 years ago[LAA] Upper-case variable names, NFC
Adam Nemet [Mon, 27 Jul 2015 19:38:50 +0000 (19:38 +0000)]
[LAA] Upper-case variable names, NFC

llvm-svn: 243313

9 years ago[LAA] Split out a helper from addRuntimeCheck to generate the check, NFC
Adam Nemet [Mon, 27 Jul 2015 19:38:48 +0000 (19:38 +0000)]
[LAA] Split out a helper from addRuntimeCheck to generate the check, NFC

llvm-svn: 243312

9 years agoRemoving unused function declaration with no definition; NFC.
Aaron Ballman [Mon, 27 Jul 2015 19:34:46 +0000 (19:34 +0000)]
Removing unused function declaration with no definition; NFC.

llvm-svn: 243311

9 years ago[AArch64] Unconditionally pass subtarget feature reserve-x18 on Darwin.
Akira Hatanaka [Mon, 27 Jul 2015 19:29:04 +0000 (19:29 +0000)]
[AArch64] Unconditionally pass subtarget feature reserve-x18 on Darwin.

After r243308, the front-end is responsible for checking the target OS and
passing reserve-x18 if the target is Darwin.

llvm-svn: 243310

9 years agoXFAIL test_with_dwarf_formatters_api on FreeBSD
Ed Maste [Mon, 27 Jul 2015 19:20:42 +0000 (19:20 +0000)]
XFAIL test_with_dwarf_formatters_api on FreeBSD

llvm.org/pr24282

llvm-svn: 243309

9 years ago[AArch64] Remove check for Darwin that was needed to decide if x18 should
Akira Hatanaka [Mon, 27 Jul 2015 19:18:47 +0000 (19:18 +0000)]
[AArch64] Remove check for Darwin that was needed to decide if x18 should
be reserved.

The decision to reserve x18 is going to be made solely by the front-end,
so it isn't necessary to check if the OS is Darwin in the backend.

llvm-svn: 243308

9 years agoXFAIL TestExprOptions on FreeBSD.
Ed Maste [Mon, 27 Jul 2015 19:10:16 +0000 (19:10 +0000)]
XFAIL TestExprOptions on FreeBSD.

r243230 XFAILed it for Linux; it also fails on FreeBSD.

llvm-svn: 243307

9 years agoFixed signed/unsigned comparison warning.
Simon Pilgrim [Mon, 27 Jul 2015 19:07:15 +0000 (19:07 +0000)]
Fixed signed/unsigned comparison warning.

llvm-svn: 243306

9 years ago[X86] Add missing _m_prefetch intrinsic
Simon Pilgrim [Mon, 27 Jul 2015 19:01:52 +0000 (19:01 +0000)]
[X86] Add missing _m_prefetch intrinsic

The 3DNOW/PRFCHW cpu targets define both the PREFETCHW (set cache line modified) and PREFETCH (set cache line exclusive) instructions but only the _m_prefetchw (PREFETCHW) intrinsic is included in the header. This patch adds the missing _m_prefetch intrinsic.

I'm basing this off AMD documentation - the intel docs on the support for PREFETCHW isn't clear whether Silvermont/Broadwell properly support PREFETCH but given that the intrinsic implementation is a default __builtin_prefetch call, it is safe whatever.

Fix for PR23648

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

llvm-svn: 243305

9 years ago[AArch64][FastISel] Add more truncation tests.
Juergen Ributzka [Mon, 27 Jul 2015 19:00:23 +0000 (19:00 +0000)]
[AArch64][FastISel] Add more truncation tests.

This is a follow-up to r243198 and adds more truncation tests.

llvm-svn: 243304

9 years ago[InstCombine][X86][SSE] Replace sign/zero extension intrinsics with native IR
Simon Pilgrim [Mon, 27 Jul 2015 18:52:15 +0000 (18:52 +0000)]
[InstCombine][X86][SSE] Replace sign/zero extension intrinsics with native IR

Now that we are generating sane codegen for vector sext/zext nodes on SSE targets, this patch uses instcombine to replace the SSE41/AVX2 pmovsx and pmovzx intrinsics with the equivalent native IR code.

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

llvm-svn: 243303

9 years agoRevert "Remove unnecessary null check. NFC."
Pete Cooper [Mon, 27 Jul 2015 18:37:58 +0000 (18:37 +0000)]
Revert "Remove unnecessary null check.  NFC."

This reverts commit r243167.

Duncan pointed out that dyn_cast can return null in these cases, so this
was an unsafe commit to make.  Sorry for the noise.

Worryingly there were no tests which fail...

llvm-svn: 243302

9 years agoAdd a more tweakable way for ValueObjectPrinter to control pointer expansion. NFC.
Enrico Granata [Mon, 27 Jul 2015 18:34:14 +0000 (18:34 +0000)]
Add a more tweakable way for ValueObjectPrinter to control pointer expansion. NFC.

llvm-svn: 243301

9 years agoFix assert when inlining a constantexpr addrspacecast
Matt Arsenault [Mon, 27 Jul 2015 18:31:03 +0000 (18:31 +0000)]
Fix assert when inlining a constantexpr addrspacecast

The pointer size of the addrspacecasted pointer might not have matched,
so this would have hit an assert in accumulateConstantOffset.

I think this was here to allow constant folding of a load of an
addrspacecasted constant. Accumulating the offset through the
addrspacecast doesn't make much sense, so something else is necessary
to allow folding the load through this cast.

llvm-svn: 243300

9 years agoFix ODR violation. NFC.
Diego Novillo [Mon, 27 Jul 2015 18:27:23 +0000 (18:27 +0000)]
Fix ODR violation. NFC.

There is an ODR conflict between lib/ExecutionEngine/ExecutionEngineBindings.cpp
and lib/Target/TargetMachineC.cpp. The inline definitions should simply
be marked static (thanks dblaikie for the hint).

llvm-svn: 243298

9 years agoFix `llvm-config` to emit the linker flag for the combined shared object built by...
JF Bastien [Mon, 27 Jul 2015 18:26:30 +0000 (18:26 +0000)]
Fix `llvm-config` to emit the linker flag for the combined shared object built by autoconfig/make instead of the individual components.

Summary:
When LLVM is configured to build shared libraries, CMake builds each component as it's own shared object, while autoconfig/make builds them statically and then links them all together to create a single shared object. This change adds compile time config flags to `llvm-config` so it can know whether LLVM's components are separated or not and act accordingly.

This fixes `llvm-config` instead of fixing the makefiles to behave like CMake because, AIUI, LLVM's autoconfig/make build system is on the way out anyway.

This change only affects `llvm-config` from builds that use autoconfig/make.

Reviewers: jfb

Subscribers: echristo, dschuff, llvm-commits

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

llvm-svn: 243297

9 years ago[libcxxabi] Add -funwind-tables to the test compilation options.
Daniel Sanders [Mon, 27 Jul 2015 18:20:17 +0000 (18:20 +0000)]
[libcxxabi] Add -funwind-tables to the test compilation options.

Summary:
backtrace_test.pass.cpp depends on unwind tables. These are generated by
-funwind-tables which is the default for x86 but not for other targets.

Thanks to Nitesh Jain for helping to narrow this down.

Fixes PR24148

Reviewers: jroelofs

Subscribers: cfe-commits, jroelofs, llvm-commits, hans

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

llvm-svn: 243296

9 years agoAMDGPU: don't match vgpr loads for constant loads
Marek Olsak [Mon, 27 Jul 2015 18:16:08 +0000 (18:16 +0000)]
AMDGPU: don't match vgpr loads for constant loads

Author: Dave Airlie <airlied@redhat.com>

In order to implement indirect sampler loads, we don't
want to match on a VGPR load but an SGPR one for constants,
as we cannot feed VGPRs to the sampler only SGPRs.

this should be applicable for llvm 3.7 as well.

llvm-svn: 243294

9 years agomove combineRepeatedFPDivisors logic into a helper function; NFCI
Sanjay Patel [Mon, 27 Jul 2015 17:58:49 +0000 (17:58 +0000)]
move combineRepeatedFPDivisors logic into a helper function; NFCI

llvm-svn: 243293

9 years agoCorrecting a typo in a comment; NFC.
Aaron Ballman [Mon, 27 Jul 2015 17:58:32 +0000 (17:58 +0000)]
Correcting a typo in a comment; NFC.

llvm-svn: 243292

9 years agoSimplify code in BlockGenerator::generateScalarLoads [NFC]
Tobias Grosser [Mon, 27 Jul 2015 17:57:58 +0000 (17:57 +0000)]
Simplify code in BlockGenerator::generateScalarLoads [NFC]

We hoist statements that are used on both branches of an if-condition, shorten
and unify some variable names and fold some variable declarations into their
only uses. We also drop a comment which just describes the elements the loop
iterates over.

No functional change intended.

llvm-svn: 243291

9 years agoReset the virtual registers in liveins when clearing the virtual registers.
Alex Lorenz [Mon, 27 Jul 2015 17:51:59 +0000 (17:51 +0000)]
Reset the virtual registers in liveins when clearing the virtual registers.

This commit zeroes out the virtual register references in the machine
function's liveins in the class 'MachineRegisterInfo' when the virtual
register definitions are cleared.

Reviewers: Matthias Braun
llvm-svn: 243290

9 years ago[OpenMP] Fix copyin codegen test regression in order used in compare
Samuel Antao [Mon, 27 Jul 2015 17:49:18 +0000 (17:49 +0000)]
[OpenMP] Fix copyin codegen test regression in order used in compare
instruction.

llvm-svn: 243289

9 years agoMIR Serialization: Serialize the machine function's liveins.
Alex Lorenz [Mon, 27 Jul 2015 17:42:45 +0000 (17:42 +0000)]
MIR Serialization: Serialize the machine function's liveins.

Reviewers: Duncan P. N. Exon Smith
llvm-svn: 243288

9 years agofix typo and spacing; NFC
Sanjay Patel [Mon, 27 Jul 2015 17:39:20 +0000 (17:39 +0000)]
fix typo and spacing; NFC

llvm-svn: 243287

9 years ago[OpenMP] Fix copyin clause codegen regression caused by r243277.
Samuel Antao [Mon, 27 Jul 2015 17:30:41 +0000 (17:30 +0000)]
[OpenMP] Fix copyin clause codegen regression caused by r243277.

llvm-svn: 243285

9 years ago[TableGen] Emit the correct error message.
Davide Italiano [Mon, 27 Jul 2015 17:22:19 +0000 (17:22 +0000)]
[TableGen] Emit the correct error message.

llvm-svn: 243284

9 years agoRevert "Add const to a bunch of Type* in DataLayout. NFC."
Pete Cooper [Mon, 27 Jul 2015 17:15:28 +0000 (17:15 +0000)]
Revert "Add const to a bunch of Type* in DataLayout.  NFC."

This reverts commit r243135.

Feedback from Craig Topper and David Blaikie was that we don't put const on Type as it has no mutable state.

llvm-svn: 243283

9 years agoRevert "Add const to some Type* parameters which didn't need to be mutable. NFC."
Pete Cooper [Mon, 27 Jul 2015 17:15:24 +0000 (17:15 +0000)]
Revert "Add const to some Type* parameters which didn't need to be mutable.  NFC."

This reverts commit r243146.

Feedback from Craig Topper and David Blaikie was that we don't put const on Type as it has no mutable state.

llvm-svn: 243282

9 years ago[lldb-mi] Fix breakpoints on functions when C++ namespaces are used.
Dawn Perchik [Mon, 27 Jul 2015 17:03:34 +0000 (17:03 +0000)]
[lldb-mi] Fix breakpoints on functions when C++ namespaces are used.

The command "-break-insert ns::foo" for function 'foo' in namespace 'ns'
was being parsed as file:function.  This patch fixes these cases by adding
checks for '::'. (Note: '::func' is not parsed correctly by lldb due to
llvm.org/pr24271).

Reviewed by: ki.stfu
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D11396

llvm-svn: 243281

9 years ago[OpenMP] Add TLS requirement for the copyin clause codegen test. This is an
Samuel Antao [Mon, 27 Jul 2015 16:59:45 +0000 (16:59 +0000)]
[OpenMP] Add TLS requirement for the copyin clause codegen test. This is an
attempt to fix regressions triggered by r243277.

llvm-svn: 243280

9 years agoRename {Hexagon,NaCl}_TC to {Hexagon,NaCl}ToolChain respectively. NFC
Douglas Katzman [Mon, 27 Jul 2015 16:53:08 +0000 (16:53 +0000)]
Rename {Hexagon,NaCl}_TC to {Hexagon,NaCl}ToolChain respectively. NFC

Also rename XCore (the toolchain) to XCoreToolChain since XCore is
also a namespace for its tools.

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

llvm-svn: 243279

9 years ago[OpenMP] Add capture for threadprivate variables used in copyin clause
Samuel Antao [Mon, 27 Jul 2015 16:38:06 +0000 (16:38 +0000)]
[OpenMP] Add capture for threadprivate variables used in copyin clause
if TLS is enabled in OpenMP code generation.

llvm-svn: 243277

9 years agoUpdate Build_With_CMake.txt to reflect changes in CMake refactor
Jonathan Peyton [Mon, 27 Jul 2015 16:23:42 +0000 (16:23 +0000)]
Update Build_With_CMake.txt to reflect changes in CMake refactor

This just updates the documentation regarding how to build libomp with CMake.

llvm-svn: 243276

9 years agoAnalysis: Fix example usage comment in CFG.cpp. NFC
Jonathan Roelofs [Mon, 27 Jul 2015 16:05:36 +0000 (16:05 +0000)]
Analysis: Fix example usage comment in CFG.cpp. NFC

Patch by Vedant Kumar!

llvm-svn: 243275

9 years agoThe tests added in r243270 require asserts to be enabled
Silviu Baranga [Mon, 27 Jul 2015 15:22:49 +0000 (15:22 +0000)]
The tests added in r243270 require asserts to be enabled

llvm-svn: 243274

9 years agoFix the tests added in r243270. Use 2>&1 instead of |&
Silviu Baranga [Mon, 27 Jul 2015 15:08:55 +0000 (15:08 +0000)]
Fix the tests added in r243270. Use 2>&1 instead of |&

llvm-svn: 243273

9 years ago[clang-tidy] Set current main file name in tests.
Alexander Kornienko [Mon, 27 Jul 2015 14:54:31 +0000 (14:54 +0000)]
[clang-tidy] Set current main file name in tests.

llvm-svn: 243272

9 years ago[PeepholeOptimizer] Look through PHIs to find additional register sources
Bruno Cardoso Lopes [Mon, 27 Jul 2015 14:39:46 +0000 (14:39 +0000)]
[PeepholeOptimizer] Look through PHIs to find additional register sources

Reapply r242295 with fixes in the implementation.

- Teaches the ValueTracker in the PeepholeOptimizer to look through PHI
instructions.
- Add findNextSourceAndRewritePHI method to lookup into multiple sources
returnted by the ValueTracker and rewrite PHIs with new sources.

With these changes we can find more register sources and rewrite more
copies to allow coaslescing of bitcast instructions. Hence, we eliminate
unnecessary VR64 <-> GR64 copies in x86, but it could be extended to
other archs by marking "isBitcast" on target specific instructions. The
x86 example follows:

A:
  psllq %mm1, %mm0
  movd  %mm0, %r9
  jmp C

B:
  por %mm1, %mm0
  movd  %mm0, %r9
  jmp C

C:
  movd  %r9, %mm0
  pshufw  $238, %mm0, %mm0

Becomes:

A:
  psllq %mm1, %mm0
  jmp C

B:
  por %mm1, %mm0
  jmp C

C:
  pshufw  $238, %mm0, %mm0

Differential Revision: http://reviews.llvm.org/D11197
rdar://problem/20404526

llvm-svn: 243271

9 years ago[ARM/AArch64] Fix cost model for interleaved accesses
Silviu Baranga [Mon, 27 Jul 2015 14:39:34 +0000 (14:39 +0000)]
[ARM/AArch64] Fix cost model for interleaved accesses

Summary:
Fix the cost of interleaved accesses for ARM/AArch64.
We were calling getTypeAllocSize and using it to check
the number of bits, when we should have called
getTypeAllocSizeInBits instead.

This would pottentially cause the vectorizer to
generate loads/stores and shuffles which cannot
be matched with an interleaved access instruction.

No performance changes are expected for now since
matching/generating interleaved accesses is still
disabled by default.

Reviewers: rengolin

Subscribers: aemerson, llvm-commits, rengolin

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

llvm-svn: 243270

9 years agoTrying again to a failing test the bots found with r243266.
Aaron Ballman [Mon, 27 Jul 2015 13:59:24 +0000 (13:59 +0000)]
Trying again to a failing test the bots found with r243266.

llvm-svn: 243269

9 years agoFixing a failing test the bots found with r243266.
Aaron Ballman [Mon, 27 Jul 2015 13:47:35 +0000 (13:47 +0000)]
Fixing a failing test the bots found with r243266.

llvm-svn: 243268

9 years agomisc-unused-parameters: Don't warn on ParmVarDecls in the return type.
Daniel Jasper [Mon, 27 Jul 2015 13:46:37 +0000 (13:46 +0000)]
misc-unused-parameters: Don't warn on ParmVarDecls in the return type.

As there don't seem to be a good way of formulating a matcher that
finds all pairs of functions and their ParmVarDecls, just match on
functionDecls and iterate over their parameters. This should also be
more efficient as some checks are only performed once per function.

llvm-svn: 243267

9 years agoUpdating the documentation for clang-tidy. Removes some non-ASCII characters from...
Aaron Ballman [Mon, 27 Jul 2015 13:41:30 +0000 (13:41 +0000)]
Updating the documentation for clang-tidy. Removes some non-ASCII characters from the documentation, and removes shell-specific single quote characters as they cause issues for some shells (such as on Windows).

llvm-svn: 243266

9 years ago[clang-tidy] Don't duplicate the leading slash.
Alexander Kornienko [Mon, 27 Jul 2015 13:07:50 +0000 (13:07 +0000)]
[clang-tidy] Don't duplicate the leading slash.

llvm-svn: 243265

9 years ago[X86] Reordered lowerVectorShuffleAsBitMask before lowerVectorShuffleAsBlend. NFCI.
Simon Pilgrim [Mon, 27 Jul 2015 12:37:19 +0000 (12:37 +0000)]
[X86] Reordered lowerVectorShuffleAsBitMask before lowerVectorShuffleAsBlend. NFCI.

Allows us to show diffs for D11518 more clearly

llvm-svn: 243264

9 years agoAMDGPU/SI: Fix the V_FRACT_F64 SI bug workaround
Marek Olsak [Mon, 27 Jul 2015 11:37:42 +0000 (11:37 +0000)]
AMDGPU/SI: Fix the V_FRACT_F64 SI bug workaround

This is a candidate for 3.7.

llvm-svn: 243263

9 years agoSetting ARM dynamic linker name from commandline
Renato Golin [Mon, 27 Jul 2015 09:56:37 +0000 (09:56 +0000)]
Setting ARM dynamic linker name from commandline

Currently trigger to select hard-float linker is only based of -gnueabihf
appearing in target triplet, but we should also select it when hardfloat
is requested via cmdline.

Patch by Khem Raj.

llvm-svn: 243262

9 years ago[clang-cl] Handle -O correctly
David Majnemer [Mon, 27 Jul 2015 07:32:11 +0000 (07:32 +0000)]
[clang-cl] Handle -O correctly

We had multiple bugs here:
- We didn't support multiple optimization options in one argument.
  e.g. -O2y-
- We didn't correctly expand -O[12dx] to their respective options.
- We treated -O1 as clang -O1 instead of clang -Os.
- We treated -Ox as clang -O3 instead of clang -O2.  In fact, cl's -Ox
  option is *less* powerful than cl's -O2 option despite -Ox described
  as "Full Optimization".

This fixes PR24003.

llvm-svn: 243261

9 years agoRename highly-confusing isWhitespace that returns false on \n to
Yaron Keren [Mon, 27 Jul 2015 06:35:22 +0000 (06:35 +0000)]
Rename highly-confusing isWhitespace that returns false on \n to
isWhitespaceExceptNL. If that's wasn't bad enough, we have an identically
named function in Basic/CharInfo.h.

While at it, remove unnecessary includes, .str() calls and #ifdef.

llvm-svn: 243260

9 years ago[modules] Add an assert for redeclarations that we never added to their redecl
Richard Smith [Mon, 27 Jul 2015 05:40:23 +0000 (05:40 +0000)]
[modules] Add an assert for redeclarations that we never added to their redecl
chain and fix the cases where it fires.

 * Handle the __va_list_tag as a predefined decl. Previously we failed to merge
   sometimes it because it's not visible to name lookup. (In passing, remove
   redundant __va_list_tag typedefs that we were creating for some ABIs. These
   didn't affect the mangling or representation of the type.)

 * For Decls derived from Redeclarable that are not in fact redeclarable
   (implicit params, function params, ObjC type parameters), remove them from
   the list of expected redeclarable decls.

llvm-svn: 243259

9 years agoLoopAccessAnalysis.cpp: Tweak r243239 to avoid side effects. It caused different...
NAKAMURA Takumi [Mon, 27 Jul 2015 01:35:30 +0000 (01:35 +0000)]
LoopAccessAnalysis.cpp: Tweak r243239 to avoid side effects. It caused different emissions between gcc and clang.

llvm-svn: 243258

9 years agoFix jSignalsInfo packet handling.
Oleksiy Vyalov [Mon, 27 Jul 2015 01:32:58 +0000 (01:32 +0000)]
Fix jSignalsInfo packet handling.

llvm-svn: 243257

9 years agoAvoid using uncommon acronym "MSROM".
Sean Silva [Mon, 27 Jul 2015 00:46:59 +0000 (00:46 +0000)]
Avoid using uncommon acronym "MSROM".

llvm-svn: 243256

9 years ago[Targets] Define _M_AMD64 and _M_X64 to a more appropriate value
David Majnemer [Sun, 26 Jul 2015 23:17:29 +0000 (23:17 +0000)]
[Targets] Define _M_AMD64 and _M_X64 to a more appropriate value

We used to define them to 1, we should have defined them to 100.

llvm-svn: 243255

9 years agoSimplify some isl expression we use
Tobias Grosser [Sun, 26 Jul 2015 19:22:35 +0000 (19:22 +0000)]
Simplify some isl expression we use

Suggested-by: Sven Verdoolaege <skimo-polly@kotnet.org>
llvm-svn: 243254

9 years agoRoll forward r243250
Jingyue Wu [Sun, 26 Jul 2015 19:10:03 +0000 (19:10 +0000)]
Roll forward r243250

r243250 appeared to break clang/test/Analysis/dead-store.c on one of the build
slaves, but I couldn't reproduce this failure locally. Probably a false
positive as I saw this test was broken by r243246 or r243247 too but passed
later without people fixing anything.

llvm-svn: 243253

9 years ago[AST] It should be impossible to get Int128 or UInt128 into VisitIntegerLiteral
David Majnemer [Sun, 26 Jul 2015 18:33:32 +0000 (18:33 +0000)]
[AST] It should be impossible to get Int128 or UInt128 into VisitIntegerLiteral

These cases should now be impossible as of r243243.

llvm-svn: 243252

9 years agoRevert r243250
Jingyue Wu [Sun, 26 Jul 2015 18:30:13 +0000 (18:30 +0000)]
Revert r243250

breaks tests

llvm-svn: 243251

9 years ago[TTI/CostModel] improve TTI::getGEPCost and use it in CostModel::getInstructionCost
Jingyue Wu [Sun, 26 Jul 2015 17:28:13 +0000 (17:28 +0000)]
[TTI/CostModel] improve TTI::getGEPCost and use it in CostModel::getInstructionCost

Summary:
This patch updates TargetTransformInfoImplCRTPBase::getGEPCost to consider
addressing modes. It now returns TCC_Free when the GEP can be completely folded
to an addresing mode.

I started this patch as I refactored SLSR. Function isGEPFoldable looks common
and is indeed used by some WIP of mine. So I extracted that logic to getGEPCost.

Furthermore, I noticed getGEPCost wasn't directly tested anywhere. The best
testing bed seems CostModel, but its getInstructionCost method invokes
getAddressComputationCost for GEPs which provides very coarse estimation. So
this patch also makes getInstructionCost call the updated getGEPCost for GEPs.
This change inevitably breaks some tests because the cost model changes, but
nothing looks seriously wrong -- if we believe the new cost model is the right
way to go, these tests should be updated.

This patch is not perfect yet -- the comments in some tests need to be updated.
I want to know whether this is a right approach before fixing those details.

Reviewers: chandlerc, hfinkel

Subscribers: aschwaighofer, llvm-commits, aemerson

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

llvm-svn: 243250

9 years ago[X86][SSE] Refreshed vector bit count tests.
Simon Pilgrim [Sun, 26 Jul 2015 17:02:25 +0000 (17:02 +0000)]
[X86][SSE] Refreshed vector bit count tests.

llvm-svn: 243249

9 years ago[X86][AVX2] Refreshed avx2 conversion tests
Simon Pilgrim [Sun, 26 Jul 2015 17:01:16 +0000 (17:01 +0000)]
[X86][AVX2] Refreshed avx2 conversion tests

llvm-svn: 243248

9 years agobugpoint: make the number of trim iterations a compile-time constant
Tobias Grosser [Sun, 26 Jul 2015 15:18:45 +0000 (15:18 +0000)]
bugpoint: make the number of trim iterations a compile-time constant

Around 10 year ago Chris limited this code to a single iteration by just
dropping a break into the loop body. We now make the number of trim iterations
a compile time constant to be able to play with it and see if this can
improve the bugpoint results. We currently use with '3' still a small and
conservative value, but this can be adjusted in the future, if needed.

I tried to look for a trivial test case, but did not succeed yet.

llvm-svn: 243247

9 years agoImplemented encoding and intrinsics of the following instructions
Igor Breger [Sun, 26 Jul 2015 14:41:44 +0000 (14:41 +0000)]
Implemented encoding and intrinsics of the following instructions
  vunpckhps/pd, vunpcklps/pd,
  vpunpcklbw, vpunpckhbw, vpunpcklwd, vpunpckhwd, vpunpckldq, vpunpckhdq, vpunpcklqdq, vpunpckhqdq
Added tests for intrinsics and encoding.

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

llvm-svn: 243246

9 years agoRemove explicit heap allocation to fix and prevent memory leaks
Johannes Doerfert [Sun, 26 Jul 2015 13:14:38 +0000 (13:14 +0000)]
Remove explicit heap allocation to fix and prevent memory leaks

llvm-svn: 243245

9 years agoFix typo in comment
Tobias Grosser [Sun, 26 Jul 2015 11:37:05 +0000 (11:37 +0000)]
Fix typo in comment

llvm-svn: 243244

9 years ago[MS Extensions] Remove support for the i128 integer literal suffix
David Majnemer [Sun, 26 Jul 2015 09:02:26 +0000 (09:02 +0000)]
[MS Extensions] Remove support for the i128 integer literal suffix

There is currently no support in MSVC for using i128 as an integer
literal suffix.  In fact, there appears to be no evidence that they have
ever supported this feature in any of their compilers.  This was an over
generalization of their actual feature and is a nasty source of bugs.
Why is it a source of bugs?  Because most code in clang expects that
evaluation of an integer constant expression won't give them something
that 'long long' can't represent.  Instead of providing a meaningful
feature, i128 gives us cute ways of exploding the compiler.

llvm-svn: 243243

9 years ago[Sema] Refactor AddAlignedAttr to reduce indentation
David Majnemer [Sun, 26 Jul 2015 09:02:21 +0000 (09:02 +0000)]
[Sema] Refactor AddAlignedAttr to reduce indentation

No functionality change intended, just a tidy-up.

llvm-svn: 243242

9 years agotsan: fix shift overflow
Dmitry Vyukov [Sun, 26 Jul 2015 07:45:26 +0000 (07:45 +0000)]
tsan: fix shift overflow

3<<30 fits into 32-bit unsigned, but does not fit into int.
Found by ubsan.

llvm-svn: 243241

9 years ago[llvm-dwarfump] Don't rely on global state, part 3.
Davide Italiano [Sun, 26 Jul 2015 05:35:59 +0000 (05:35 +0000)]
[llvm-dwarfump] Don't rely on global state, part 3.

Some tools used to rely on a global static variable to keep track of the
return value for main(). I changed llvm-cxxdump to use exit(1)
and Rafael shortly after did the same with llvm-readobj. This is
(yet) another step towards the goal.

llvm-svn: 243240

9 years ago[LAA] Begin moving the logic of generating checks out of addRuntimeCheck
Adam Nemet [Sun, 26 Jul 2015 05:32:14 +0000 (05:32 +0000)]
[LAA] Begin moving the logic of generating checks out of addRuntimeCheck

Summary:
The goal is to start moving us closer to the model where
RuntimePointerChecking will compute and store the checks.  Then a client
can filter the check according to its requirements and then use the
filtered list of checks with addRuntimeCheck.

Before the patch, this is all done in addRuntimeCheck.  So the patch
starts to split up addRuntimeCheck while providing the old API under
what's more or less a wrapper now.

The new underlying addRuntimeCheck takes a collection of checks now,
expands the code for the bounds then generates the code for the checks.

I am not completely happy with making expandBounds static because now it
needs so many explicit arguments but I don't want to make the type
PointerBounds part of LAI.  This should get fixed when addRuntimeCheck
is moved to LoopVersioning where it really belongs, IMO.

Audited the assembly diff of the testsuite (including externals).  There
is a tiny bit of assembly churn that is due to the different order the
code for the bounds is expanded now
(MultiSource/Benchmarks/Prolangs-C/bison/conflicts.s and with LoopDist
on 456.hmmer/fast_algorithms.s).

Reviewers: hfinkel

Subscribers: klimek, llvm-commits

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

llvm-svn: 243239

9 years agoThis test failed on ninja-x64-msvc-RA-centos6.
Yaron Keren [Sun, 26 Jul 2015 05:15:24 +0000 (05:15 +0000)]
This test failed on ninja-x64-msvc-RA-centos6.
We could probably get this and the previous three disabled in r243237
working on these builders if MSYS was updated to current MSYS2.

llvm-svn: 243238

9 years agoRevert three tests enabled on r243236, they fail on clang-x86-win2008-selfhost.
Yaron Keren [Sun, 26 Jul 2015 04:59:52 +0000 (04:59 +0000)]
Revert three tests enabled on r243236, they fail on clang-x86-win2008-selfhost.

llvm-svn: 243237

9 years agoEnable passing clang tests on Windows/MSYS.
Yaron Keren [Sun, 26 Jul 2015 04:36:39 +0000 (04:36 +0000)]
Enable passing clang tests on Windows/MSYS.

llvm-svn: 243236

9 years agoFix test running under mingw.
Yaron Keren [Sun, 26 Jul 2015 04:09:41 +0000 (04:09 +0000)]
Fix test running under mingw.

llvm-svn: 243235

9 years agoTry to make the buildbots happy
David Majnemer [Sun, 26 Jul 2015 02:16:35 +0000 (02:16 +0000)]
Try to make the buildbots happy

This test was missing a triple causing it to error out on windows
targets.  They accept a much smaller alignment value.

llvm-svn: 243234

9 years ago[Sema] The alignment of an object has an upper bound from the object file format
David Majnemer [Sun, 26 Jul 2015 01:48:59 +0000 (01:48 +0000)]
[Sema] The alignment of an object has an upper bound from the object file format

Don't use the spelling of the alignment attribute to determine whether
or not an alignment amount makes sense.

llvm-svn: 243233

9 years agoELF2: Avoid calling std::sort to make output deterministic.
Rui Ueyama [Sun, 26 Jul 2015 00:50:15 +0000 (00:50 +0000)]
ELF2: Avoid calling std::sort to make output deterministic.

llvm-svn: 243232

9 years agoELF2: Remove dead code.
Rui Ueyama [Sun, 26 Jul 2015 00:50:13 +0000 (00:50 +0000)]
ELF2: Remove dead code.

llvm-svn: 243231

9 years agoXFAIL TestExprOptions on Linux.
Chaoren Lin [Sat, 25 Jul 2015 22:06:48 +0000 (22:06 +0000)]
XFAIL TestExprOptions on Linux.

llvm-svn: 243230

9 years agoCOFF: Use short identifiers. NFC.
Rui Ueyama [Sat, 25 Jul 2015 21:54:50 +0000 (21:54 +0000)]
COFF: Use short identifiers. NFC.

llvm-svn: 243229

9 years agoCOFF: Fix image base address for 32-bit.
Rui Ueyama [Sat, 25 Jul 2015 21:42:33 +0000 (21:42 +0000)]
COFF: Fix image base address for 32-bit.

0x140000000 or 0x180000000 are not correct image base addresses
for 32-bit. They are actually much smaller.

llvm-svn: 243228

9 years ago[libclang] Use lambdas instead of explicit structs when storing arguments.
Benjamin Kramer [Sat, 25 Jul 2015 20:55:44 +0000 (20:55 +0000)]
[libclang] Use lambdas instead of explicit structs when storing arguments.

This boilerplate code was necessary to move arguments between threads in
C++98, lambdas make this much easier. No functionality change intended.

llvm-svn: 243227

9 years ago[InstCombine][SSE4A] Standardized references to Length/Width and Index/Start to match...
Simon Pilgrim [Sat, 25 Jul 2015 20:41:00 +0000 (20:41 +0000)]
[InstCombine][SSE4A] Standardized references to Length/Width and Index/Start to match AMD docs. NFCI.

llvm-svn: 243226

9 years ago[AST] Rename RecordLayoutBuilder to ItaniumRecordLayoutBuilder
David Majnemer [Sat, 25 Jul 2015 20:18:14 +0000 (20:18 +0000)]
[AST] Rename RecordLayoutBuilder to ItaniumRecordLayoutBuilder

RecordLayoutBuilder is an inaccruate name because it does not build all
records.  It only builds layouts for targets using the Itanium C++ ABI.

llvm-svn: 243225

9 years agoEnable clang tests requiring "clang-driver" on mingw.
Yaron Keren [Sat, 25 Jul 2015 20:05:21 +0000 (20:05 +0000)]
Enable clang tests requiring "clang-driver" on mingw.
At least on my mingw system they do pass, let's see what the bots think.

llvm-svn: 243224

9 years ago[InstCombine] Split off SSE4a tests.
Simon Pilgrim [Sat, 25 Jul 2015 17:14:01 +0000 (17:14 +0000)]
[InstCombine] Split off SSE4a tests.

These aren't vector demanded bits tests. More tests to follow.

llvm-svn: 243223

9 years ago[VTableBuilder] Use range-based for loops. No functional change intended
Benjamin Kramer [Sat, 25 Jul 2015 17:10:49 +0000 (17:10 +0000)]
[VTableBuilder] Use range-based for loops. No functional change intended

llvm-svn: 243222

9 years ago[VTableBuilder] Turn functors into lambdas
Benjamin Kramer [Sat, 25 Jul 2015 16:31:30 +0000 (16:31 +0000)]
[VTableBuilder] Turn functors into lambdas

No functional change intended.

llvm-svn: 243221

9 years agoAdd missing namespace specifiers.
Benjamin Kramer [Sat, 25 Jul 2015 15:44:23 +0000 (15:44 +0000)]
Add missing namespace specifiers.

llvm-svn: 243220

9 years agoUpgrade for Clang API change.
Benjamin Kramer [Sat, 25 Jul 2015 15:33:17 +0000 (15:33 +0000)]
Upgrade for Clang API change.

llvm-svn: 243219

9 years agoCapture 'this' so GCC 4.7 can find a static members.
Benjamin Kramer [Sat, 25 Jul 2015 15:27:04 +0000 (15:27 +0000)]
Capture 'this' so GCC 4.7 can find a static members.

llvm-svn: 243218

9 years ago[AST] Turn the callbacks of lookupInBases and forallBases into a function_ref
Benjamin Kramer [Sat, 25 Jul 2015 15:07:25 +0000 (15:07 +0000)]
[AST] Turn the callbacks of lookupInBases and forallBases into a function_ref

This lets us pass functors (and lambdas) without void * tricks. On the
downside we can't pass CXXRecordDecl's Find* members (which are now type
safe) to lookupInBases directly, but a lambda trampoline is a small
price to pay. No functionality change intended.

llvm-svn: 243217

9 years ago[X86][SSE] Added additional vector sign/zero load extension tests.
Simon Pilgrim [Sat, 25 Jul 2015 14:07:20 +0000 (14:07 +0000)]
[X86][SSE] Added additional vector sign/zero load extension tests.

llvm-svn: 243216

9 years agoFix formatting of recent alias-analysis commit
Tobias Grosser [Sat, 25 Jul 2015 12:31:03 +0000 (12:31 +0000)]
Fix formatting of recent alias-analysis commit

llvm-svn: 243215

9 years agoPrevectorize the schedule of the band (or the point loop in case of tiling)
Tobias Grosser [Sat, 25 Jul 2015 12:28:56 +0000 (12:28 +0000)]
Prevectorize the schedule of the band (or the point loop in case of tiling)

Contributed-by: Roman Gareev <gareevroman@gmail.com>
llvm-svn: 243214

9 years ago[Modules] Wrap the main ModuleManager visitor in a function_ref.
Benjamin Kramer [Sat, 25 Jul 2015 12:14:04 +0000 (12:14 +0000)]
[Modules] Wrap the main ModuleManager visitor in a function_ref.

Avoids the awkward passing of an opaque void *UserData argument. No
functional change intended.

llvm-svn: 243213

9 years ago[X86][SSE] Added additional vector sign/zero extension tests.
Simon Pilgrim [Sat, 25 Jul 2015 11:17:35 +0000 (11:17 +0000)]
[X86][SSE] Added additional vector sign/zero extension tests.

llvm-svn: 243212