Quentin Colombet [Thu, 26 Mar 2015 01:01:48 +0000 (01:01 +0000)]
[RegisterCoalescer] Add a rule to consider more profitable copies first when
those are in the same basic block.
The previous approach was the topological order of the basic block.
By default this rule is disabled.
Related to PR22768.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233241
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 26 Mar 2015 00:57:33 +0000 (00:57 +0000)]
Testcase for r233239.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233240
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 26 Mar 2015 00:50:23 +0000 (00:50 +0000)]
Add computeFSAdditions to the function based subtarget creation
for PPC due to some unfortunate default setting via TargetMachine
creation. I've added a FIXME on how this can be unraveled in the
backend and a test to make sure we successfully legalize 64-bit things
if we say we're 64-bits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233239
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Wed, 25 Mar 2015 23:22:10 +0000 (23:22 +0000)]
llvm-link: Verify input modules
Otherwise, broken input modules can cause assertions. I've updated two
of the testcases that started failing (modules that had `Require` flags
but didn't meet their own requirements), but Rafael and I decided that
test/Linker/2011-08-22-ResolveAlias.ll should just be deleted outright
-- it's a leftover of the way llvm-gcc used to implement weakref.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233229
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Wed, 25 Mar 2015 22:34:16 +0000 (22:34 +0000)]
Fix typo in comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233226
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 25 Mar 2015 22:33:53 +0000 (22:33 +0000)]
[ValueTracking] Fix PR23011.
Summary:
`ComputeNumSignBits` returns incorrect results for `srem` instructions.
This change fixes the issue and adds a test case.
Reviewers: nadav, nicholas, atrick
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8600
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233225
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 25 Mar 2015 22:30:31 +0000 (22:30 +0000)]
[DAGCombiner] Add support for TRUNCATE + FP_EXTEND vector constant folding
This patch adds supports for the vector constant folding of TRUNCATE and FP_EXTEND instructions and tidies up the SINT_TO_FP and UINT_TO_FP instructions to match.
It also moves the vector constant folding for the FNEG and FABS instructions to use the DAG.getNode() functionality like the other unary instructions.
Differential Revision: http://reviews.llvm.org/D8593
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233224
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Wed, 25 Mar 2015 21:36:41 +0000 (21:36 +0000)]
Linker: Stop using -gmlt test/Linker/subprogram-linkonce-weak.ll
As dblaikie pointed out, if I stop setting `emissionKind: 2` then the
backend won't do magical things on Linux vs. Darwin. I had wrongly
assumed that there were stricter requirements on the input if we weren't
in line-tables-only mode, but apparently not.
With that knowledge, clean up this testcase a little more.
- Set `emissionKind: 1`.
- Add back checks for the weak version of @foo.
- Check more robustly that we have the right subprograms by checking
the `DW_AT_decl_file` and `DW_AT_decl_line` which now show up.
- Check the line table in isolation (since it's no longer doubling as
an indirect test for the subprogram of the weak version of @foo).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233221
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Wed, 25 Mar 2015 21:33:24 +0000 (21:33 +0000)]
Fix remaining MSVC warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233220
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Wed, 25 Mar 2015 21:18:24 +0000 (21:18 +0000)]
RegisterCoalescer: Fix implicit def handling in register coalescer
If liveranges induced by an IMPLICIT_DEF get completely covered by a
proper liverange the IMPLICIT_DEF instructions and its corresponding
definitions have to be removed from the live ranges. This has to happen
in the subregister live ranges as well (I didn't see this case earlier
because in most programs only some subregisters are covered and the
IMPLCIT_DEF won't get removed).
No testcase, I spent hours trying to create one for one of the public
targets, but ultimately failed because I couldn't manage to properly
control the placement of COPY and IMPLICIT_DEF instructions from an .ll
file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233217
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Wed, 25 Mar 2015 21:18:22 +0000 (21:18 +0000)]
MachineVerifier: slightly simplify code that is only called with vregs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233216
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Wed, 25 Mar 2015 20:51:21 +0000 (20:51 +0000)]
Linker: Loosen checks slightly from r233207
According to at least one bot [1], function prologues aren't always
empty for these functions. Skip that part of the follow-up check.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233214
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 25 Mar 2015 20:21:16 +0000 (20:21 +0000)]
Revert r233206
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233213
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 25 Mar 2015 20:10:36 +0000 (20:10 +0000)]
WinEH: Create an unwind help alloca for __CxxFrameHandler3 xdata tables
We don't have any logic to emit those tables yet, so the sdag lowering
of this intrinsic is just a stub. We can see the intrinsic in the
prepared IR, though.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233209
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Wed, 25 Mar 2015 19:57:42 +0000 (19:57 +0000)]
Linker: Rewrite dwarfdump checks from r233164
Rewrite the checks from r233164 that I temporarily disabled in r233165.
It turns out that the line-tables only debug info we emit from `llc` is
(intentionally) different on Linux than on Darwin. r218129 started
skipping emission of subprograms with no inlined subroutines, and
r218702 was a spiritual revert of that behaviour for Darwin.
I think we can still test this in a platform-neutral way.
- Stop checking for the possibly missing `DW_TAG_subprogram` defining
the debug info for the real version of `@foo`.
- Start checking the line tables, ensuring that the right debug info
was used to generate them (grabbing `DW_AT_low_pc` from the compile
unit).
- I changed up the line numbers used in the "weak" version so it's
easier to follow.
This should hopefully finish off PR22792.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233207
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 25 Mar 2015 19:51:52 +0000 (19:51 +0000)]
[Hexagon] Keep the bare getSubtargetImpl for now
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233206
91177308-0d34-0410-b5e6-
96231b3b80d8
Kit Barton [Wed, 25 Mar 2015 19:36:23 +0000 (19:36 +0000)]
Add Hardware Transactional Memory (HTM) Support
This patch adds Hardware Transaction Memory (HTM) support supported by ISA 2.07
(POWER8). The intrinsic support is based on GCC one [1], but currently only the
'PowerPC HTM Low Level Built-in Function' are implemented.
The HTM instructions follows the RC ones and the transaction initiation result
is set on RC0 (with exception of tcheck). Currently approach is to create a
register copy from CR0 to GPR and comapring. Although this is suboptimal, since
the branch could be taken directly by comparing the CR0 value, it generates code
correctly on both test and branch and just return value. A possible future
optimization could be elimitate the MFCR instruction to branch directly.
The HTM usage requires a recently newer kernel with PPC HTM enabled. Tested on
powerpc64 and powerpc64le.
This is send along a clang patch to enabled the builtins and option switch.
[1] https://gcc.gnu.org/onlinedocs/gcc/PowerPC-Hardware-Transactional-Memory-Built-in-Functions.html
Phabricator Review: http://reviews.llvm.org/D8247
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233204
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 25 Mar 2015 19:24:39 +0000 (19:24 +0000)]
clang-format bits of code to make another patch readable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233203
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 25 Mar 2015 17:58:09 +0000 (17:58 +0000)]
Simplify missing-file-line.ll test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233201
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 25 Mar 2015 17:44:49 +0000 (17:44 +0000)]
DebugInfo: Permit DW_TAG_structure_type, DW_TAG_member, DW_TAG_typedef tags with empty file names.
Some languages, such as Go, have pre-defined structure types (e.g. "string"
is essentially a pointer/length pair) or pre-defined "typedef" types
(e.g. "error" is essentially a typedef for a specific interface type).
Such types do not have associated source location, so a Go frontend would
be correct not to associate a file name with such types.
This change relaxes the DIType verifier to permit unlocated types with
these tags.
Differential Revision: http://reviews.llvm.org/D8588
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233200
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 25 Mar 2015 17:36:01 +0000 (17:36 +0000)]
[X86, AVX] improve insertion into zero element of 256-bit vector
This patch allows AVX blend instructions to handle insertion into the low
element of a 256-bit vector for the appropriate data types.
For f32, instead of:
vblendps $1, %xmm1, %xmm0, %xmm1 ## xmm1 = xmm1[0],xmm0[1,2,3]
vblendps $15, %ymm1, %ymm0, %ymm0 ## ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
we get:
vblendps $1, %ymm1, %ymm0, %ymm0 ## ymm0 = ymm1[0],ymm0[1,2,3,4,5,6,7]
For f64, instead of:
vmovsd %xmm1, %xmm0, %xmm1 ## xmm1 = xmm1[0],xmm0[1]
vblendpd $3, %ymm1, %ymm0, %ymm0 ## ymm0 = ymm1[0,1],ymm0[2,3]
we get:
vblendpd $1, %ymm1, %ymm0, %ymm0 ## ymm0 = ymm1[0],ymm0[1,2,3]
For the hardware-neglected integer data types, I left a TODO comment in the
code and added regression tests for a follow-on patch.
Differential Revision: http://reviews.llvm.org/D8609
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233199
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 25 Mar 2015 17:34:11 +0000 (17:34 +0000)]
use update_llc_test_checks.py to tighten checking in these tests
1. There were no CHECK-LABELs, so we could match instructions from the wrong function.
2. The use of zero operands meant multiple xor instructions could match some CHECKs.
3. The test was over-specified to need a Sandybridge CPU and Darwin triple.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233198
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Wed, 25 Mar 2015 17:12:36 +0000 (17:12 +0000)]
llvm-jitlistener: Add missing include.
This code is only compiled when LLVM_USE_INTEL_JITEVENTS, but at least we have
one buildbot where that's the case :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233197
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Wed, 25 Mar 2015 16:49:59 +0000 (16:49 +0000)]
[APInt] Add an isSplat helper and use it in some places.
To complement getSplat. This is more general than the binary
decomposition method as it also handles non-pow2 splat sizes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233195
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Wed, 25 Mar 2015 15:36:57 +0000 (15:36 +0000)]
[Hexagon] Pattern match a CTZ loop into a call to countTrailingZeros.
No functional change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233192
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Wed, 25 Mar 2015 15:27:58 +0000 (15:27 +0000)]
[ARM] Rewrite .save/.vsave emission with bit math
Hopefully makes it a bit easier to understand what's going on.
No functional change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233191
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Jasper [Wed, 25 Mar 2015 14:35:40 +0000 (14:35 +0000)]
Make exit-code test use same mechanism as existing one.
The other version doesn't properly work with our internal test runner,
which sets pipefail.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233188
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 25 Mar 2015 13:16:53 +0000 (13:16 +0000)]
Fix fixup evaluation when deciding what to relocate with.
The previous logic was to first try without relocations at all
and failing that stop on the first defined symbol.
That was inefficient and incorrect in the case part of the
expression could be simplified and another part could not
(see included test).
We now stop the evaluation when we get to a variable whose value
can change (i.e. is weak).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233187
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Wed, 25 Mar 2015 12:32:36 +0000 (12:32 +0000)]
[Orc] Remove another unnecessary typedef.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233184
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Wed, 25 Mar 2015 12:22:37 +0000 (12:22 +0000)]
[optnone] Skip pass Float2Int on optnone functions.
Added test Float2Int/float2int-optnone.ll to verify that pass Float2Int
is not run on optnone functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233183
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Wed, 25 Mar 2015 12:11:48 +0000 (12:11 +0000)]
[Orc][lli] Add a very simple Orc-based lazy JIT to lli.
This ensures that we're building and testing the CompileOnDemand layer, at least
in a basic way.
Currently x86-64 only, and with limited to no library calls enabled (depending
on host platform). Patches welcome. ;)
To enable access to the lazy JIT, this patch replaces the '-use-orcmcjit' lli
option with a new option:
'-jit-kind={ mcjit | orc-mcjit | orc-lazy }'.
All regression tests are updated to use the new option, and one trivial test of
the new lazy JIT is added.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233182
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Wed, 25 Mar 2015 11:44:19 +0000 (11:44 +0000)]
[X86] Simplify check lines in tests. No functional change.
Also, removed unused check lines from test atomic6432.ll.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233181
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Wed, 25 Mar 2015 10:03:42 +0000 (10:03 +0000)]
Reapply r233062: "float2int": Add a new pass to demote from float to int where possible.
Now with a fix for PR23008 and extra regression test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233175
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Wed, 25 Mar 2015 08:07:47 +0000 (08:07 +0000)]
test: Fix the dependencies for the check-llvm-* targets
In r233009 we gained specific check-llvm-* build targets for invoking
specific parts of the test suite, but they were copying the
dependencies for check-all, rather than just listing the dependencies
for check-llvm.
This moves the creation of these targets next to the check-llvm
target, and uses that target's configuration rather than the check-all
config.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233174
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 25 Mar 2015 04:36:20 +0000 (04:36 +0000)]
Fix build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233171
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 25 Mar 2015 04:16:50 +0000 (04:16 +0000)]
[X86] Remove GetCpuIDAndInfo, GetCpuIDAndInfoEx and DetectFamilyModel functions from X86 MC layer. They haven't been used since CPU autodetection was removed from X86Subtarget.cpp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233170
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Wed, 25 Mar 2015 04:00:34 +0000 (04:00 +0000)]
[Orc] Remove extraneous 'typename'. This should cheer the bots up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233168
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Wed, 25 Mar 2015 02:45:50 +0000 (02:45 +0000)]
[Orc] Refactor JITCompileCallbackManagerBase and CompileOnDemandLayer to support
target-independent callback management.
This is a prerequisite for adding orc-based lazy-jitting to lli.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233166
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Wed, 25 Mar 2015 02:43:04 +0000 (02:43 +0000)]
Linker: Temporarily disable dwarfdump checks from r233164
At least one Linux bot [1] doesn't like my dwarfdump checks, so I've
disable those until I can investigate what's going on there. I'll
continue to track this in PR22792.
[1]: http://bb.pgr.jp/builders/cmake-llvm-x86_64-linux/builds/22863
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233165
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Wed, 25 Mar 2015 02:26:32 +0000 (02:26 +0000)]
Linker: Drop function pointers for overridden subprograms
Instead of dropping subprograms that have been overridden, just set
their function pointers to `nullptr`. This is a minor adjustment to the
stop-gap fix for PR21910 committed in r224487, and fixes the crasher
from PR22792.
The problem that r224487 put a band-aid on: how do we find the canonical
subprogram for a `Function`? Since the backend currently relies on
`DebugInfoFinder` (which does a naive in-order traversal of compile
units and picks the first subprogram) for this, r224487 tried dropping
non-canonical subprograms.
Dropping subprograms fails because the backend *also* builds up a map
from subprogram to compile unit (`DwarfDebug::SPMap`) based on the
subprogram lists. A missing subprogram causes segfaults later when an
inlined reference (such as in this testcase) is created.
Instead, just drop the `Function` pointer to `nullptr`, which nicely
mirrors what happens when an already-inlined `Function` is optimized
out. We can't really be sure that it's the same definition anyway, as
the testcase demonstrates.
This still isn't completely satisfactory. Two flaws at least that I can
think of:
- I still haven't found a straightforward way to make this symmetric
in the IR. (Interestingly, the DWARF output is already symmetric,
and I've tested for that to be sure we don't regress.)
- Using `DebugInfoFinder` to find the canonical subprogram for a
function is kind of crazy. We should just attach metadata to the
function, like this:
define weak i32 @foo(i32, i32) !dbg !MDSubprogram(...) {
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233164
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 25 Mar 2015 00:50:21 +0000 (00:50 +0000)]
[ADT] Teach MapVector to support a swap member. Will be used in
a subsequent commit in Clang.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233159
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 25 Mar 2015 00:45:41 +0000 (00:45 +0000)]
Fix warning on non-assert build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233158
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 25 Mar 2015 00:25:37 +0000 (00:25 +0000)]
Produce an error instead of asserting on invalid .sleb128/.uleb128.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233155
91177308-0d34-0410-b5e6-
96231b3b80d8
Paul Robinson [Wed, 25 Mar 2015 00:10:24 +0000 (00:10 +0000)]
'optnone' should not disable DAG combiner.
Reverts the code change from r221168 and the relevant test.
It was a mistake to disable the combiner, and based on the ultimate
definition of 'optnone' we shouldn't have considered the test case
as failing in the first place.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233153
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Tue, 24 Mar 2015 23:54:54 +0000 (23:54 +0000)]
!invariant.load semantics with potentially clobbering calls
A load from an invariant location is assumed to not alias any otherwise potentially aliasing stores. Our implementation only applied this rule to store instructions themselves whereas they it should apply for any memory accessing instruction. This results in both FRE and PRE becoming more effective at eliminating invariant loads.
Note that as a follow on change I will likely move this into AliasAnalysis itself. That's where the TBAA constant flag is handled and the semantics are essentially the same. I'd like to separate the semantic change from the refactoring and thus have extended the hack that's already in MemoryDependenceAnalysis for this change.
Differential Revision: http://reviews.llvm.org/D8591
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233140
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 24 Mar 2015 23:48:44 +0000 (23:48 +0000)]
Don't be over eager in evaluating a subtraction with a weak symbol.
In a subtraction of the form A - B, if B is weak, there is no way to represent
that on ELF since all relocations add the value of a symbol.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233139
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Tue, 24 Mar 2015 23:46:01 +0000 (23:46 +0000)]
X86: Fix frameescape when not using an FP
We can't use TargetFrameLowering::getFrameIndexOffset directly, because
Win64 really wants the offset from the stack pointer at the end of the
prologue. Instead, use X86FrameLowering::getFrameIndexOffsetFromSP(),
which is a pretty close approximiation of that. It fails to handle cases
with interestingly large stack alignments, which is pretty uncommon on
Win64 and is TODO.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233137
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Tue, 24 Mar 2015 23:44:03 +0000 (23:44 +0000)]
Update a test I missed in r233132
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233134
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Tue, 24 Mar 2015 23:37:10 +0000 (23:37 +0000)]
Disabling warnings for MSVC build to enable /W4 use.
Differential Revision: http://reviews.llvm.org/D8572
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233133
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Tue, 24 Mar 2015 23:34:36 +0000 (23:34 +0000)]
llvm-cov: Require a subcommand when invoked as llvm-cov
A while ago llvm-cov gained support for clang's instrumentation based
profiling in addition to its gcov support, and subcommands were added
to choose which behaviour to use. When no subcommand was specified, we
fell back to gcov compatibility with a warning that a subcommand would
be required in the future. Now, we require the subcommand.
Note that if the basename of llvm-cov is gcov (via symlink or
hardlink, for example), we still use the gcov compatible behaviour
with no subcommand required.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233132
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 24 Mar 2015 23:34:31 +0000 (23:34 +0000)]
Opaque Pointer Types: GEP API migrations to specify the gep type explicitly
The changes to InstCombine (& SCEV) do seem a bit silly - it doesn't make
anything obviously better to have the caller access the pointers element
type (the thing I'm trying to remove) than the GEP itself, but it's a
helpful migration step. This will allow me to more obviously lock down
GEP (& Load, etc) API usage, then fix all the code that accesses pointer
element types except the places that need to be removed (most of the
InstCombines) anyway - at which point I'll need to just remove all that
code because it won't be meaningful anymore (there will be no pointer
types, so no bitcasts to combine)
SCEV looks like it'll need some restructuring - we'll have to do a bit
more work for GEP canonicalization, since it'll depend on how it's used
if we can even manage to canonicalize it to a non-ugly GEP. I guess we
can do some fun stuff like voting (do 2 out of 3 load from the GEP with
a certain type that gives a pretty GEP? Does every typed use of the GEP
use either a specific type or a generic type (i8*, etc)?)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233131
91177308-0d34-0410-b5e6-
96231b3b80d8
Frederic Riss [Tue, 24 Mar 2015 23:11:07 +0000 (23:11 +0000)]
[dsymutil] Temporarily disable some tests on windows.
It seems one windows bot fails since I added ilne table linking to
llvm-dsymutil (see r232333 commit thread).
Disable the affected tests until I can figure out what's happening.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233130
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 24 Mar 2015 22:39:29 +0000 (22:39 +0000)]
optimize the AVX2 (integer) version of vperm2 into a shuffle
...because this is what happens when an instruction
set puts its underwear on after its pants.
This is an extension of r232852, r233100, and 233110:
http://llvm.org/viewvc/llvm-project?view=revision&revision=232852
http://llvm.org/viewvc/llvm-project?view=revision&revision=233100
http://llvm.org/viewvc/llvm-project?view=revision&revision=233110
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233127
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 24 Mar 2015 22:38:16 +0000 (22:38 +0000)]
Opaque Pointer Types: GEP API migrations to specify the gep type explicitly
The changes to InstCombine do seem a bit silly - it doesn't make
anything obviously better to have the caller access the pointers element
type (the thing I'm trying to remove) than the GEP itself, but it's a
helpful migration step. This will allow me to more obviously lock down
GEP (& Load, etc) API usage, then fix all the code that accesses pointer
element types except the places that need to be removed (most of the
InstCombines) anyway - at which point I'll need to just remove all that
code because it won't be meaningful anymore (there will be no pointer
types, so no bitcasts to combine)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233126
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Tue, 24 Mar 2015 22:28:45 +0000 (22:28 +0000)]
Merge empty landing pads in SimplifyCFG
This patch tries to merge duplicate landing pads when they branch to a common shared target.
Given IR that looks like this:
lpad1:
%exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
cleanup
br label %shared_resume
lpad2:
%exn2 = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
cleanup
br label %shared_resume
shared_resume:
call void @fn()
ret void
}
We can rewrite the users of both landing pad blocks to use one of them. This will generally allow the shared_resume block to be merged with the common landing pad as well.
Without this change, tail duplication would likely kick in - creating N (2 in this case) copies of the shared_resume basic block.
Differential Revision: http://reviews.llvm.org/D8297
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233125
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 24 Mar 2015 22:20:19 +0000 (22:20 +0000)]
Add -m -m elf_x86_64 to gold invocations.
Otherwise the tests would fail if the default was not elf_x86_64.
This fixes PR22966.
Patch by H.J. Lu!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233124
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 24 Mar 2015 21:50:35 +0000 (21:50 +0000)]
Revert "Remove an InstCombine that seems to have become redundant."
Assertion fires in compiler-rt. Guess it does fire..
This reverts commit r233116.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233121
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 24 Mar 2015 21:47:31 +0000 (21:47 +0000)]
Reset the CFA offset at the start of every FDE.
This fixes PR21515.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233120
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Tue, 24 Mar 2015 21:47:03 +0000 (21:47 +0000)]
AArch64: use a different means to determine whether to byte swap relocations.
This code depended on a bug in the FindAssociatedSection function that would
cause it to return the wrong result for certain absolute expressions. Instead,
use EvaluateAsRelocatable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233119
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Tue, 24 Mar 2015 21:47:00 +0000 (21:47 +0000)]
MC: Add more stringent symbol checking to test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233118
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 24 Mar 2015 21:31:31 +0000 (21:31 +0000)]
Remove an InstCombine that seems to have become redundant.
Assert that this doesn't fire - I'll remove all of this later, but just
leaving it in for a while in case this is firing & we just don't have
test coverage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233116
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 24 Mar 2015 20:36:42 +0000 (20:36 +0000)]
[X86, AVX] instcombine vperm2 intrinsics with zero inputs into shuffles
This is the IR optimizer follow-on patch for D8563: the x86 backend patch
that converts this kind of shuffle back into a vperm2.
This is also a continuation of the transform that started in D8486.
In that patch, Andrea suggested that we could convert vperm2 intrinsics that
use zero masks into a single shuffle.
This is an implementation of that suggestion.
Differential Revision: http://reviews.llvm.org/D8567
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233110
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 24 Mar 2015 20:26:55 +0000 (20:26 +0000)]
[llvm-readobj] add support for macho universal binary.
Patch by Keyue Hu (Chilledheart)!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233107
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 24 Mar 2015 20:07:08 +0000 (20:07 +0000)]
Revert r233062 ""float2int": Add a new pass to demote from float to int where possible."
This caused PR23008, compiles failing with: "Use still stuck around after Def is
destroyed: %.sroa.speculated"
Also reverting follow-up r233064.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233105
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Tue, 24 Mar 2015 19:29:22 +0000 (19:29 +0000)]
[IRCE] Fix how IRCE checks for no-sign-overflow.
IRCE requires the induction variables it handles to not sign-overflow.
The current scheme of checking if sext({X,+,S}) == {sext(X),+,sext(S)}
fails when SCEV simplifies sext(X) too. After this change we //also//
check no-signed-wrap by looking at the flags set on the SCEVAddRecExpr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233102
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Tue, 24 Mar 2015 19:29:18 +0000 (19:29 +0000)]
[IRCE] Fix a regression introduced in r232444.
IRCE should not try to eliminate range checks that check an induction
variable against a loop-varying length.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233101
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 24 Mar 2015 19:19:07 +0000 (19:19 +0000)]
[X86, AVX] recognize shufflevector with zero input as a vperm2 (PR22984)
vperm2x128 instructions have the special ability (aka free hardware capability)
to shuffle zero values into a vector.
This patch recognizes that type of shuffle and generates the appropriate
control byte.
https://llvm.org/bugs/show_bug.cgi?id=22984
Differential Revision: http://reviews.llvm.org/D8563
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233100
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 24 Mar 2015 17:34:33 +0000 (17:34 +0000)]
DebugInfo: Reorder definitions of MDLocation and MDFile, NFC
Move definition of `MDLocation` after `MDLocalScope` so that the latter
is available for casts in the former. Similarly, move the definition of
`MDFile` as early as possible so that other classes can cast to it in
their definitions. (Follow-up commits will take advantage of this.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233096
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 24 Mar 2015 17:32:19 +0000 (17:32 +0000)]
Verifier: Start recursing into !dbg attachments
The main verifier already recurses through the other entry points, so we
might as well descend here too.
This temporarily duplicates some work already done in
`verifyDebugInfo()`, but eventually I'll be removing the other side.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233095
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 24 Mar 2015 17:18:03 +0000 (17:18 +0000)]
Verifier: !llvm.dbg.cu must point at compile units
Duplicate this check from `verifyDebugInfo()`.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233094
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 24 Mar 2015 16:44:29 +0000 (16:44 +0000)]
DebugInfo: Add MDLocalScope, a legal scope for locals
Add a subclass of `MDScope` to explicitly categorize the legal scopes
for locals -- in particular, scopes that are legal for `MDLocation`,
`MDLexicalBlockBase`, and `MDLocalVariable`. This provides a convenient
`isa<>` target for the verifier, and eventually I'll be changing the
above classes' `getScope()` to specifically return it. Currently, its
subclasses are `MDSubprogram`, `MDLexicalBlock`, and
`MDLexicalBlockFile`.
I've gone with `MDLocalScope` for now -- a little ambiguous since it's a
scope *for* locals, not a scope that's local -- but I'm open to more
descriptive names if someone can think of something better. Regardless,
the code docs should make it clear enough.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233092
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 24 Mar 2015 16:33:19 +0000 (16:33 +0000)]
Refactor: Simplify boolean expressions in lib/Analysis
Simplify boolean expressions using `true` and `false` with `clang-tidy`
Patch by Richard Thomson.
Reviewed By: nlewycky
Differential Revision: http://reviews.llvm.org/D8528
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233091
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 24 Mar 2015 16:24:01 +0000 (16:24 +0000)]
Refactor: Simplify boolean expressions in AArch64 target
Simplify boolean expressions using `true` and `false` with `clang-tidy`
Patch by Richard Thomson.
Reviewed By: rengolin
Differential Revision: http://reviews.llvm.org/D8525
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233089
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Tue, 24 Mar 2015 15:19:14 +0000 (15:19 +0000)]
[mips] Support 16-bit offsets for 'm' inline assembly memory constraint.
Reviewers: vkalintiris
Reviewed By: vkalintiris
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8435
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233086
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Tue, 24 Mar 2015 13:40:38 +0000 (13:40 +0000)]
R600/SI: Insert more NOPs after READLANE on VI, don't use NOPs on CI
This is a candidate for stable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233080
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Tue, 24 Mar 2015 13:40:34 +0000 (13:40 +0000)]
R600/SI: Select V_BFE_U32 for and+shift with a non-literal offset
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233079
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Tue, 24 Mar 2015 13:40:27 +0000 (13:40 +0000)]
R600/SI: Custom-select 32-bit S_BFE from bitwise opcodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233078
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Tue, 24 Mar 2015 13:40:21 +0000 (13:40 +0000)]
R600/SI: Improve BFM support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233077
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Tue, 24 Mar 2015 13:40:15 +0000 (13:40 +0000)]
R600/SI: Use V_FRACT_F64 for faster 64-bit floor on SI
Other f64 opcodes not supported on SI can be lowered in a similar way.
v2: use complex VOP3 patterns
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233076
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Tue, 24 Mar 2015 13:40:08 +0000 (13:40 +0000)]
R600/SI: Expand fract to floor, then only select V_FRACT on CI
V_FRACT is buggy on SI.
R600-specific code is left intact.
v2: drop the multiclass, use complex VOP3 patterns
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233075
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Tue, 24 Mar 2015 13:20:54 +0000 (13:20 +0000)]
Internalize the StackMapLiveness pass.
No need to have its own header when it's not used anywhere. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233072
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Tue, 24 Mar 2015 12:56:59 +0000 (12:56 +0000)]
Revert "Use std::bitset for SubtargetFeatures"
This reverts commit r233055.
It still causes buildbot failures (gcc running out of memory on several platforms, and a self-host failure on arm), although less than the previous time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233068
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Tue, 24 Mar 2015 12:47:51 +0000 (12:47 +0000)]
Silencing some MSVC warnings "C4805: '^' : unsafe mix of type 'bool' and type 'unsigned int' in operation"; NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233067
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Tue, 24 Mar 2015 12:24:56 +0000 (12:24 +0000)]
[mips] Simplify boolean expressions in Mips target with `clang-tidy`
No functional changes.
Patch by Richard Thomson.
Differential Revision: http://reviews.llvm.org/D8522
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233065
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Tue, 24 Mar 2015 11:28:47 +0000 (11:28 +0000)]
[float2int] Sort includes and add missing raw_ostream include.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233064
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Tue, 24 Mar 2015 11:26:34 +0000 (11:26 +0000)]
[mips] Distinguish 'R', 'ZC', and 'm' inline assembly memory constraint.
Summary:
Previous behaviour of 'R' and 'm' has been preserved for now. They will be
improved in subsequent commits.
The offset permitted by ZC varies according to the subtarget since it is
intended to match the restrictions of the pref, ll, and sc instructions.
The restrictions on these instructions are:
* For microMIPS: 12-bit signed offset.
* For Mips32r6/Mips64r6: 9-bit signed offset.
* Otherwise: 16-bit signed offset.
Reviewers: vkalintiris
Reviewed By: vkalintiris
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8414
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233063
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Tue, 24 Mar 2015 11:15:23 +0000 (11:15 +0000)]
"float2int": Add a new pass to demote from float to int where possible.
It is possible to have code that converts from integer to float, performs operations then converts back, and the result is provably the same as if integers were used.
This can come from different sources, but the most obvious is a helper function that uses floats but the arguments given at an inlined callsites are integers.
This pass considers all integers requiring a bitwidth less than or equal to the bitwidth of the mantissa of a floating point type (23 for floats, 52 for doubles) as exactly representable in floating point.
To reduce the risk of harming efficient code, the pass only attempts to perform complete removal of inttofp/fptoint operations, not just move them around.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233062
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Tue, 24 Mar 2015 09:17:25 +0000 (09:17 +0000)]
Use std::bitset for SubtargetFeatures
Previously, subtarget features were a bitfield with the underlying type being uint64_t.
Since several targets (X86 and ARM, in particular) have hit or were very close to hitting this bound, switching the features to use a bitset.
No functional change.
The first time this was committed (r229831), it caused several buildbot failures.
At least some of the ARM ones were due to gcc/binutils issues, and should now be fixed.
Differential Revision: http://reviews.llvm.org/D8542
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233055
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Tue, 24 Mar 2015 04:27:02 +0000 (04:27 +0000)]
[Orc] Move delta-handling for trampoline sizes into the resolver block.
This is the first step towards adding a target-independent callback
handler API.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233049
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Tue, 24 Mar 2015 04:07:28 +0000 (04:07 +0000)]
[Orc] Whitespace fix. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233048
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Tue, 24 Mar 2015 04:07:01 +0000 (04:07 +0000)]
[Orc] Use std::string to capture name by value.
This just updates the code to reflect the comment, but this bug actually hit the
out-of-tree lazy demo. I'm working on a patch to add the lazy-demo's
functionality to lli so that we can test this in-tree soon.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233047
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 23 Mar 2015 22:44:55 +0000 (22:44 +0000)]
[SelectionDAG] Fixed issue with uitofp vector constant folding being treated as sitofp
While the uitofp scalar constant folding treats an integer as an unsigned value (from lang ref):
%X = sitofp i8 -1 to double ; yields double:-1.0
%Y = uitofp i8 -1 to double ; yields double:255.0
The vector constant folding was always using sitofp:
%X = sitofp <2 x i8> <i8 -1, i8 -1> to <2 x double> ; yields <double -1.0, double -1.0>
%Y = uitofp <2 x i8> <i8 -1, i8 -1> to <2 x double> ; yields <double -1.0, double -1.0>
This patch fixes this so that the correct opcode is used for sitofp and uitofp.
%X = sitofp <2 x i8> <i8 -1, i8 -1> to <2 x double> ; yields <double -1.0, double -1.0>
%Y = uitofp <2 x i8> <i8 -1, i8 -1> to <2 x double> ; yields <double 255.0, double 255.0>
Differential Revision: http://reviews.llvm.org/D8560
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233033
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Mon, 23 Mar 2015 22:10:27 +0000 (22:10 +0000)]
Remove dead prototype DebugInfoFinder::processExpression(), NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233031
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Mon, 23 Mar 2015 21:54:07 +0000 (21:54 +0000)]
DebugInfo: Overload get() in DIDescriptor subclasses
Continue to simplify the `DIDescriptor` subclasses, so that they behave
more like raw pointers. Remove `getRaw()`, replace it with an
overloaded `get()`, and overload the arrow and cast operators. Two
testcases started to crash on the arrow operators with this change
because of `scope:` references that weren't real scopes. I fixed them.
Soon I'll add verifier checks for them too.
This also adds explicit dereference operators. Previously, the builtin
dereference against `operator MDNode *()` would have worked, but now the
builtins are ambiguous.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233030
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 23 Mar 2015 21:22:04 +0000 (21:22 +0000)]
Refactor how passes get a symbol at the end of a section.
There is now a canonical symbol at the end of a section that different
passes can request.
This also allows us to assert that we don't switch back to a section whose
end symbol has already been printed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233026
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 23 Mar 2015 21:17:43 +0000 (21:17 +0000)]
Cleanup else-after-return and add an early-return to llvm-nm
The loop and error handling in checkMachOAndArchFlags didn't make sense
to me (a loop that only ever executes once? An error path that uses the
element the loop stopped at (which must always be a buffer overrun if
I'm reading that right?)... I'm confused) but I've made a guess at what
was intended.
Based on a patch by Richard Thomson to simplify boolean expressions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233025
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Mon, 23 Mar 2015 21:17:36 +0000 (21:17 +0000)]
[AArch64, ARM] Enable GlobalMerge with -O3 rather than -O1.
The pass used to be enabled by default with CodeGenOpt::Less (-O1).
This is too aggressive, considering the pass indiscriminately merges
all globals together.
Currently, performance doesn't always improve, and, on code that uses
few globals (e.g., the odd file- or function- static), more often than
not is degraded by the optimization. Lengthy discussion can be found
on llvmdev (AArch64-focused; ARM has similar problems):
http://lists.cs.uiuc.edu/pipermail/llvmdev/2015-February/082800.html
Also, it makes tooling and debuggers less useful when dealing with
globals and data sections.
GlobalMerge needs to better identify those cases that benefit, and this
will be done separately. In the meantime, move the pass to run with
-O3 rather than -O1, on both ARM and AArch64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233024
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 23 Mar 2015 20:56:44 +0000 (20:56 +0000)]
Refactor: Simplify boolean expressions in R600 target
Simplify boolean expressions with `true` and `false` using `clang-tidy`
Patch by Richard Thomson.
Differential Revision: http://reviews.llvm.org/D8520
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233020
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 23 Mar 2015 20:25:31 +0000 (20:25 +0000)]
Update variable name and reuse existing variable. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233014
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 23 Mar 2015 20:25:15 +0000 (20:25 +0000)]
[AArch64] Add FileCheck that was missing from test in r232967.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233013
91177308-0d34-0410-b5e6-
96231b3b80d8