OSDN Git Service

android-x86/external-llvm.git
8 years ago[dsymutil] Fix handling of common symbols.
Frederic Riss [Sun, 31 Jan 2016 04:29:34 +0000 (04:29 +0000)]
[dsymutil] Fix handling of common symbols.

llvm-dsymutil was misinterpreting the value of common symbols as their
address when it actually contains their size. This didn't impact
llvm-dsymutil's ability to link the debug information for common symbols
because these are always found by name and not by address. Things could
however go wrong when the size of a common object matched the object
file address of another symbol. Depending on the link order of the symbols
the common object might incorrectly evict this other object from the
address to symbol mapping, and then link the evicted symbol with a wrong
binary address.

Use the new ability to have symbols without an object file address to fix
this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259318 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[dsymutil] Allow debug map mappings with no object file address. NFC
Frederic Riss [Sun, 31 Jan 2016 04:29:22 +0000 (04:29 +0000)]
[dsymutil] Allow debug map mappings with no object file address. NFC

This change just changes the data structure that ties symbol names,
object file address and linked binary addresses to accept mappings
with no object file address. Such symbol mappings are not fed into
the debug map yet, so this patch is NFC.
A subsequent patch will make use of this functionality for common
symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259317 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[SelectionDAG] Eliminate exponential behavior in WalkChainUsers
Tim Shen [Sun, 31 Jan 2016 03:59:34 +0000 (03:59 +0000)]
[SelectionDAG] Eliminate exponential behavior in WalkChainUsers

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259315 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoNo need to use utostr/utohexstr when writing into a raw_ostream. NFC
Craig Topper [Sun, 31 Jan 2016 01:55:15 +0000 (01:55 +0000)]
No need to use utostr/utohexstr when writing into a raw_ostream. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259314 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoShrink character buffer size in raw_ostream::write_hex to 16 characters intead of...
Craig Topper [Sun, 31 Jan 2016 01:12:38 +0000 (01:12 +0000)]
Shrink character buffer size in raw_ostream::write_hex to 16 characters intead of 20 as that's the largest string a 64-bit hex value can be.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259313 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoUse std::end instead of repeating buffer sizes.
Craig Topper [Sun, 31 Jan 2016 01:12:35 +0000 (01:12 +0000)]
Use std::end instead of repeating buffer sizes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259312 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoConvert int to Twine instead of using utostr since it was already being added to...
Craig Topper [Sun, 31 Jan 2016 00:15:35 +0000 (00:15 +0000)]
Convert int to Twine instead of using utostr since it was already being added to a Twine. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259308 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[doc] improve the doc for CUDA
Jingyue Wu [Sat, 30 Jan 2016 23:48:47 +0000 (23:48 +0000)]
[doc] improve the doc for CUDA

1. Mentioned that CUDA support works best with trunk.
2. Simplified the example by removing its dependency on the CUDA samples.
3. Explain the --cuda-gpu-arch flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259307 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Fix uses of FrameIndex as store values
Derek Schuff [Sat, 30 Jan 2016 21:43:08 +0000 (21:43 +0000)]
[WebAssembly] Fix uses of FrameIndex as store values

Previously the code assumed all uses of FI on loads and stores were as
addresses. This checks whether the use is the address or a value and
handles the latter case as it does for non-memory instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259306 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoWebAssembly: don't optimize frameindex store
JF Bastien [Sat, 30 Jan 2016 14:11:26 +0000 (14:11 +0000)]
WebAssembly: don't optimize frameindex store

The previous code was incorrect (can't getReg a frameindex). We could instead optimize it to reduce tree height, but I'm not sure that's worthwhile yet because we then try to eliminate the frameindex.

This patch also fixes frame index elimination for operations which may load or store: it used to assume the base was operand 2 and immediate offset operand 1. That's not true for stores, where they're 4 and 3.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259305 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoWebAssembly NFC: fix build warning
JF Bastien [Sat, 30 Jan 2016 11:19:26 +0000 (11:19 +0000)]
WebAssembly NFC: fix build warning

WebAssemblyFrameLowering.cpp:158:44: warning: enumeral and non-enumeral type in conditional expression [enabled by default]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259303 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[BasicAA] NFC - revised comment for function adjustToPointerSize()
Gerolf Hoflehner [Sat, 30 Jan 2016 05:58:38 +0000 (05:58 +0000)]
[BasicAA] NFC - revised comment for function adjustToPointerSize()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259300 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[BasicAA] Fix for missing must alias (D16343)
Gerolf Hoflehner [Sat, 30 Jan 2016 05:52:53 +0000 (05:52 +0000)]
[BasicAA] Fix for missing must alias (D16343)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259299 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[BasicAA] Update on r259290 - added missing cast
Gerolf Hoflehner [Sat, 30 Jan 2016 05:35:09 +0000 (05:35 +0000)]
[BasicAA] Update on r259290 - added missing cast

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259298 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAMDGPU: Fix emitting invalid workitem intrinsics for HSA
Matt Arsenault [Sat, 30 Jan 2016 05:19:45 +0000 (05:19 +0000)]
AMDGPU: Fix emitting invalid workitem intrinsics for HSA

The AMDGPUPromoteAlloca pass was emitting the read.local.size
calls, which with HSA was incorrectly selected to reading from
the offset mesa uses off of the kernarg pointer.

Error on intrinsics which aren't supported by HSA, and start
emitting the correct IR to read the workgroup size
out of the dispatch pointer.

Also initialize the pass so it can be tested with opt, and
start moving towards not depending on the subtarget as an
argument.

Start emitting errors for the intrinsics not handled with HSA.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259297 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAMDGPU: Stop checking intrinsics not used by HSA for dispatch-ptr
Matt Arsenault [Sat, 30 Jan 2016 05:10:59 +0000 (05:10 +0000)]
AMDGPU: Stop checking intrinsics not used by HSA for dispatch-ptr

Only the dispatch.ptr intrinsic is supposed to be used now to get
the workgroup size, and the read.local.size intrinsics do not
work correctly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259296 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoInstCombine: fabs(x) * fabs(x) -> x * x
Matt Arsenault [Sat, 30 Jan 2016 05:02:00 +0000 (05:02 +0000)]
InstCombine: fabs(x) * fabs(x) -> x * x

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259295 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Refine block placement to insert blocks between trees.
Dan Gohman [Sat, 30 Jan 2016 05:01:06 +0000 (05:01 +0000)]
[WebAssembly] Refine block placement to insert blocks between trees.

Refine the test for whether an instruction is in an expression tree so that
it detects when one tree ends and another begins, so we can place a block
at that point, rather than continuing to find the first instruction not in
a tree at all.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259294 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAMDGPU: Add new amdgcn workitem intrinsics
Matt Arsenault [Sat, 30 Jan 2016 04:25:19 +0000 (04:25 +0000)]
AMDGPU: Add new amdgcn workitem intrinsics

These use the correct prefix and follow the HSA naming convention
rather than the config register option names.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259293 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRemove references to *.h.in files and some autoconf hackery
Justin Bogner [Sat, 30 Jan 2016 04:15:33 +0000 (04:15 +0000)]
Remove references to *.h.in files and some autoconf hackery

Missed this stuff in r259291.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259292 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRemove *.h.in - these were only used by the autoconf build system
Justin Bogner [Sat, 30 Jan 2016 04:05:45 +0000 (04:05 +0000)]
Remove *.h.in - these were only used by the autoconf build system

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259291 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[BasicAA] NFC - utility function for two's complement wrap-around
Gerolf Hoflehner [Sat, 30 Jan 2016 02:42:11 +0000 (02:42 +0000)]
[BasicAA] NFC - utility function for two's complement wrap-around

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259290 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFurther reduce test time
Xinliang David Li [Sat, 30 Jan 2016 01:37:32 +0000 (01:37 +0000)]
Further reduce test time

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259285 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAvoid overly large SmallPtrSet/SmallSet
Matthias Braun [Sat, 30 Jan 2016 01:24:31 +0000 (01:24 +0000)]
Avoid overly large SmallPtrSet/SmallSet

These sets perform linear searching in small mode so it is never a good
idea to use SmallSize/N bigger than 32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259283 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoUse Support/DataTypes.h instead of cstdint
Matthias Braun [Sat, 30 Jan 2016 01:14:01 +0000 (01:14 +0000)]
Use Support/DataTypes.h instead of cstdint

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259282 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[docs] Remove references to autotools build.
Alexey Samsonov [Sat, 30 Jan 2016 01:10:15 +0000 (01:10 +0000)]
[docs] Remove references to autotools build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259280 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[CUDA] Die if we ask the NVPTX backend to emit a global ctor/dtor.
Justin Lebar [Sat, 30 Jan 2016 01:07:38 +0000 (01:07 +0000)]
[CUDA] Die if we ask the NVPTX backend to emit a global ctor/dtor.

Summary: Previously we'd just silently skip these.

Reviewers: tra, jholewinski

Subscribers: llvm-commits, jhen, echristo,

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259279 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[CodeView] Properly handle empty line tables
David Majnemer [Sat, 30 Jan 2016 00:36:09 +0000 (00:36 +0000)]
[CodeView] Properly handle empty line tables

Don't crash when there are no appropriate line table entries for a given
function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259277 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Objective-C] Support a new special module flag.
Manman Ren [Fri, 29 Jan 2016 23:51:00 +0000 (23:51 +0000)]
[Objective-C] Support a new special module flag.

"Objective-C Class Properties" will be put into the objc_imageinfo struct.

rdar://23891898

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259270 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[llvm-nm] Add a comment to explain why we initialize MC.
Davide Italiano [Fri, 29 Jan 2016 23:38:05 +0000 (23:38 +0000)]
[llvm-nm] Add a comment to explain why we initialize MC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259266 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[libFuzzer] add -timeout_exitcode option
Kostya Serebryany [Fri, 29 Jan 2016 23:30:07 +0000 (23:30 +0000)]
[libFuzzer] add -timeout_exitcode option

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259265 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agofunction names start with a lower case letter ; NFC
Sanjay Patel [Fri, 29 Jan 2016 23:27:03 +0000 (23:27 +0000)]
function names start with a lower case letter ; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259264 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[libFuzzer] re-enable test for -abort_on_timeout=1, this time protecting from ASAN_O...
Kostya Serebryany [Fri, 29 Jan 2016 23:19:00 +0000 (23:19 +0000)]
[libFuzzer] re-enable  test for -abort_on_timeout=1, this time protecting from ASAN_OPTIONS set outside

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259263 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agofix formatting; NFC
Sanjay Patel [Fri, 29 Jan 2016 23:14:58 +0000 (23:14 +0000)]
fix formatting; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259262 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix typo in LoopSimplifyCFG
Fiona Glaser [Fri, 29 Jan 2016 23:12:52 +0000 (23:12 +0000)]
Fix typo in LoopSimplifyCFG

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259261 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Profiling] Add a -sparse mode to llvm-profdata merge
Vedant Kumar [Fri, 29 Jan 2016 22:54:45 +0000 (22:54 +0000)]
[Profiling] Add a -sparse mode to llvm-profdata merge

Add an option to llvm-profdata merge for writing out sparse indexed
profiles. These profiles omit InstrProfRecords for functions which are
never executed.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259258 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix the MSVC build by moving static asserts into constructors
Reid Kleckner [Fri, 29 Jan 2016 22:40:22 +0000 (22:40 +0000)]
Fix the MSVC build by moving static asserts into constructors

Apparently MSVC won't allow you to ask for the sizeof() a data member at
class scope.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259257 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd LoopSimplifyCFG pass
Fiona Glaser [Fri, 29 Jan 2016 22:35:36 +0000 (22:35 +0000)]
Add LoopSimplifyCFG pass

Loop transformations can sometimes fail because the loop, while in
valid rotated LCSSA form, is not in a canonical CFG form. This is
an extremely simple pass that just merges obviously redundant
blocks, which can be used to fix some known failure cases. In the
future, it may be enhanced with more cases (and have code shared with
SimplifyCFG).

This allows us to run LoopSimplifyCFG -> LoopRotate -> LoopUnroll,
so that SimplifyCFG cleans up the loop before Rotate tries to run.

Not currently used in the pass manager, since this pass doesn't do
anything unless you can hook it up in an LPM with other loop passes.
It'll be added once Chandler cleans up things to allow this.

Tested in a custom pipeline out of tree to confirm it works in
practice (in addition to the included trivial test).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259256 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoNeed #include <cstdint> for uint64_t
Matthias Braun [Fri, 29 Jan 2016 22:35:29 +0000 (22:35 +0000)]
Need #include <cstdint> for uint64_t

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259255 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoNeed #include <climit> for CHAR_BIT
Matthias Braun [Fri, 29 Jan 2016 22:30:30 +0000 (22:30 +0000)]
Need #include <climit> for CHAR_BIT

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259254 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoImprove test speed/trial 2
Xinliang David Li [Fri, 29 Jan 2016 22:29:15 +0000 (22:29 +0000)]
Improve test speed/trial 2

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259253 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAttributeSetImpl: Summarize existing function attributes in a bitset.
Matthias Braun [Fri, 29 Jan 2016 22:25:19 +0000 (22:25 +0000)]
AttributeSetImpl: Summarize existing function attributes in a bitset.

The majority of attribute queries checks for the existence of an enum
attribute in the FunctionIndex slot. We only have 48 of those and can
therefore summarize them in an uint64_t bitset which measurably improves
compile time.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259252 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAttributeSetNode: Summarize existing attributes in a bitset.
Matthias Braun [Fri, 29 Jan 2016 22:25:13 +0000 (22:25 +0000)]
AttributeSetNode: Summarize existing attributes in a bitset.

The majority of queries just checks for the existince of an enum
attribute.  We only have 48 of those and can summaryiz them in an
uint64_t bitfield so we can avoid searching the list. This improves
"opt" compile time by 1-4% in my measurements.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259251 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert 259242, 259243 -- irrelvante changes pulled in
Xinliang David Li [Fri, 29 Jan 2016 21:26:31 +0000 (21:26 +0000)]
Revert 259242, 259243 -- irrelvante changes pulled in

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259244 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoUse range for loop
Xinliang David Li [Fri, 29 Jan 2016 21:23:47 +0000 (21:23 +0000)]
Use range for loop

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259243 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoImprove test speed (interchange loop, reducing padding)
Xinliang David Li [Fri, 29 Jan 2016 21:13:55 +0000 (21:13 +0000)]
Improve test speed (interchange loop, reducing padding)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259242 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAnnotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post...
Yaron Keren [Fri, 29 Jan 2016 20:50:44 +0000 (20:50 +0000)]
Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment.
clang part in r259232, this is the LLVM part of the patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259240 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[InstCombine] avoid an insertelement transformation that induces the opposite extract...
Sanjay Patel [Fri, 29 Jan 2016 20:21:02 +0000 (20:21 +0000)]
[InstCombine] avoid an insertelement transformation that induces the opposite extractelement fold (PR26354)

We would infinite loop because we created a shufflevector that was wider than
needed and then failed to combine that with the insertelement. When subsequently
visiting the extractelement from that shuffle, we see that it's unnecessary,
delete it, and trigger another visit to the insertelement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259236 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoUnbreak windows buildbots
David Majnemer [Fri, 29 Jan 2016 19:38:03 +0000 (19:38 +0000)]
Unbreak windows buildbots

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259231 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[CodeView] Implement .cv_inline_linetable
David Majnemer [Fri, 29 Jan 2016 19:24:12 +0000 (19:24 +0000)]
[CodeView] Implement .cv_inline_linetable

This support is _very_ rudimentary, just enough to get some basic data
into the CodeView debug section.

Left to do is:
- Use the combined opcodes to save space.
- Do something about code offsets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259230 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoARM: don't mangle DAG constant if it has more than one use
Tim Northover [Fri, 29 Jan 2016 19:18:46 +0000 (19:18 +0000)]
ARM: don't mangle DAG constant if it has more than one use

The basic optimisation was to convert (mul $LHS, $complex_constant) into
roughly "(shl (mul $LHS, $simple_constant), $simple_amt)" when it was expected
to be cheaper. The original logic checks that the mul only has one use (since
we're mangling $complex_constant), but when used in even more complex
addressing modes there may be an outer addition that can pick up the wrong
value too.

I *think* the ARM addressing-mode problem is actually unreachable at the
moment, but that depends on complex assessments of the profitability of
pre-increment addressing modes so I've put a real check in there instead of an
assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259228 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Update test expectations
Derek Schuff [Fri, 29 Jan 2016 18:54:38 +0000 (18:54 +0000)]
[WebAssembly] Update test expectations

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259223 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WebAssembly] Support frame pointer
Derek Schuff [Fri, 29 Jan 2016 18:37:49 +0000 (18:37 +0000)]
[WebAssembly] Support frame pointer

Add support for frame pointer use in prolog/epilog.
Supports dynamic allocas but not yet over-aligned locals.
Target-independend CG generates SP updates, but we still need to write
back the SP value to memory when necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259220 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[X86] Add missing "CHECK" colon in r259065 test.
Ahmed Bougacha [Fri, 29 Jan 2016 18:25:33 +0000 (18:25 +0000)]
[X86] Add missing "CHECK" colon in r259065 test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259219 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[codeview] Begin to add support for inlined call sites
Reid Kleckner [Fri, 29 Jan 2016 18:16:43 +0000 (18:16 +0000)]
[codeview] Begin to add support for inlined call sites

Summary:
There are three parts to inlined call frames:
1. The inlinee line subsection
2. The inline site symbol record
3. The function ids referenced by both

This change starts by emitting function ids (3) for all subprograms and
emitting the base inline site symbol record (2). The actual line numbers
in (2) use an encoded format that will come next, along with the inlinee
line subsection.

Reviewers: majnemer

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259217 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix the build
David Majnemer [Fri, 29 Jan 2016 17:46:57 +0000 (17:46 +0000)]
Fix the build

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259215 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoTemporarily revert "[ScheduleDAGInstrs::buildSchedGraph()] Handling of memory depende...
Jonas Paulsson [Fri, 29 Jan 2016 17:22:43 +0000 (17:22 +0000)]
Temporarily revert "[ScheduleDAGInstrs::buildSchedGraph()] Handling of memory dependecies rewritten."

Some buildbot failures needs to be debugged.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259213 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[SLP] Fix printing of debug statement (NFC)
Matthew Simpson [Fri, 29 Jan 2016 17:21:38 +0000 (17:21 +0000)]
[SLP] Fix printing of debug statement (NFC)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259212 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RS4GC] Address post-commit review on r259208 from David
Sanjoy Das [Fri, 29 Jan 2016 17:20:49 +0000 (17:20 +0000)]
[RS4GC] Address post-commit review on r259208 from David

NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259211 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RS4GC] Remove unnecessary const_cast; NFC
Sanjoy Das [Fri, 29 Jan 2016 16:54:49 +0000 (16:54 +0000)]
[RS4GC] Remove unnecessary const_cast; NFC

GCRelocateInst::getDerivedPtr already returns a non-const llvm::Value
pointer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259209 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RS4GC] Minor local cleanup to StabilizeOrder; NFC
Sanjoy Das [Fri, 29 Jan 2016 16:50:34 +0000 (16:50 +0000)]
[RS4GC] Minor local cleanup to StabilizeOrder; NFC

 - Locally declare struct, and call it BaseDerivedPair
 - Use a lambda to compare, instead of a singleton with uninitialized
   fields
 - Add a constructor to BaseDerivedPair and use SmallVector::emplace_back

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259208 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[CodeView] Fix dumping the is_stmt bit from the line table
Reid Kleckner [Fri, 29 Jan 2016 16:39:04 +0000 (16:39 +0000)]
[CodeView] Fix dumping the is_stmt bit from the line table

Bug pointed out by George Rimar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259205 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RS4GC] Remove unnecessary redirections from tests; NFC
Sanjoy Das [Fri, 29 Jan 2016 16:32:30 +0000 (16:32 +0000)]
[RS4GC] Remove unnecessary redirections from tests; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259204 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RS4GC] Add some missing tests and CHECK: lines
Sanjoy Das [Fri, 29 Jan 2016 16:32:25 +0000 (16:32 +0000)]
[RS4GC] Add some missing tests and CHECK: lines

I missed porting these in rL259129.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259203 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[mips] Absolute value macro expansion
Zoran Jovanovic [Fri, 29 Jan 2016 16:18:34 +0000 (16:18 +0000)]
[mips] Absolute value macro expansion

Author: obucina
Reviewers: dsanders
Differential Revision: http://reviews.llvm.org/D16323

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259202 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ScheduleDAGInstrs::buildSchedGraph()] Handling of memory dependecies rewritten.
Jonas Paulsson [Fri, 29 Jan 2016 16:11:18 +0000 (16:11 +0000)]
[ScheduleDAGInstrs::buildSchedGraph()] Handling of memory dependecies rewritten.

The buildSchedGraph() was in need of reworking as the AA features had been
added on top of earlier code. It was very difficult to understand, and buggy.
There had been found cases where scheduling dependencies had actually been
missed (see r228686).

AliasChain, RejectMemNodes, adjustChainDeps() and iterateChainSucc() have
been removed. There are instead now just the four maps from Value to SUs, which
have been renamed to Stores, Loads, NonAliasStores and NonAliasLoads.

An unknown store used to become the AliasChain, but now becomes a store mapped
to 'unknownValue' (in Stores). What used to be PendingLoads is instead the
list of SUs mapped to 'unknownValue' in Loads.

RejectMemNodes and adjustChainDeps() used to be a safety-net for everything.
The SU maps were sometimes cleared and SUs were put in RejectMemNodes, where
adjustChainDeps() would look. Instead of this, a more straight forward approach
is used in maintaining the SU maps without clearing them and simply letting
them grow over time. Instead of the cutt-off in adjustChainDeps() search, a
reduction of maps will be done if needed (see below).

Each SUnit either becomes the BarrierChain, or is put into one of the maps. For
each SUnit encountered, all the information about previous ones are still
available until a new BarrierChain is set, at which point the maps are cleared.

For huge regions, the algorithm becomes slow, therefore the maps will get
reduced at a threshold (current default is 1000 nodes), by a fraction (default 1/2).
These values can be tuned by use of CL options in case some test case shows that
they need to be changed (-dag-maps-huge-region and -dag-maps-reduction-size).

There has not been any considerable change observed in output quality or compile
time. There may now be more DAG edges inserted than before (i.e. if A->B->C,
then A->C is not needed). However, in a comparison run there were fewer total
calls to AA, and a somewhat improved compile time, which means this seems to
be not a problem.

http://reviews.llvm.org/D8705
Reviewers: Hal Finkel, Andy Trick.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259201 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[IR] Move definitions of users of Use::set to Value.h
Benjamin Kramer [Fri, 29 Jan 2016 12:47:05 +0000 (12:47 +0000)]
[IR] Move definitions of users of Use::set to Value.h

Still ugly, but at least Use.h is self-contained again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259191 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[IR] Shuffle the code for getSequentialElementType to type.h to avoid circular header...
Benjamin Kramer [Fri, 29 Jan 2016 12:47:01 +0000 (12:47 +0000)]
[IR] Shuffle the code for getSequentialElementType to type.h to avoid circular header dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259190 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ARM] Emit trap instruction using .inst directive
Alexandros Lamprineas [Fri, 29 Jan 2016 10:23:32 +0000 (10:23 +0000)]
[ARM] Emit trap instruction using .inst directive

The trap instruction is emitted as a data-in-text rather
than an instruction. This patch uses the .inst directive
for emitting trap.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259182 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAMDGPU: Remove 24-bit intrinsics
Matt Arsenault [Fri, 29 Jan 2016 10:05:16 +0000 (10:05 +0000)]
AMDGPU: Remove 24-bit intrinsics

The known bit matching code seems to work reasonably well,
so these shouldn't really be needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259180 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMinor bugfix in AAResults::getModRefInfo.
George Burgess IV [Fri, 29 Jan 2016 07:51:15 +0000 (07:51 +0000)]
Minor bugfix in AAResults::getModRefInfo.

Also removed a few redundant `else`s.

Bug was found by a test I wrote for MemorySSA (in review at
http://reviews.llvm.org/D7864; shiny update coming soon). So, assuming
that lands at some point, this should be covered by that. If anyone
feels this deserves its own explicit test case, please let me know.
I'll write one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259179 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRefactor common code for PPC fast isel load immediate selection.
Eric Christopher [Fri, 29 Jan 2016 07:20:30 +0000 (07:20 +0000)]
Refactor common code for PPC fast isel load immediate selection.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259178 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSince LI/LIS sign extend the constant passed into the instruction we should
Eric Christopher [Fri, 29 Jan 2016 07:20:01 +0000 (07:20 +0000)]
Since LI/LIS sign extend the constant passed into the instruction we should
check that the sign extended constant fits into 16-bits if we want a
zero extended value, otherwise go ahead and put it together piecemeal.

Fixes PR26356.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259177 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix up conditional formatting.
Eric Christopher [Fri, 29 Jan 2016 07:19:49 +0000 (07:19 +0000)]
Fix up conditional formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259176 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[llvm-bcanalyzer] Dump bitcode wrapper header
Akira Hatanaka [Fri, 29 Jan 2016 05:55:09 +0000 (05:55 +0000)]
[llvm-bcanalyzer] Dump bitcode wrapper header

This patch enables llvm-bcanalyzer to print the bitcode wrapper header
if the file has one, which is needed to test the changes made in
r258627 (bitcode-wrapper-header-armv7m.ll is the test case for r258627).

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259162 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[WinEH] Don't perform state stores in cleanups
David Majnemer [Fri, 29 Jan 2016 05:33:15 +0000 (05:33 +0000)]
[WinEH] Don't perform state stores in cleanups

Our cleanups do not support true lexical nesting of funclets which
obviates the need to perform state stores.

This fixes PR26361.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259161 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSmallPtrSetTest: More checks for the swap() testing
Matthias Braun [Fri, 29 Jan 2016 03:34:36 +0000 (03:34 +0000)]
SmallPtrSetTest: More checks for the swap() testing

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259152 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSmallPtrSetTest: Check that iterators are still valid after erase()
Matthias Braun [Fri, 29 Jan 2016 03:34:34 +0000 (03:34 +0000)]
SmallPtrSetTest: Check that iterators are still valid after erase()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259151 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert "Reapply commit r258404 with fix"
David Majnemer [Fri, 29 Jan 2016 02:43:22 +0000 (02:43 +0000)]
Revert "Reapply commit r258404 with fix"

This reverts commit r258929, it caused PR26364.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259148 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix some -Wstring-conversion warnings
David Blaikie [Fri, 29 Jan 2016 02:23:13 +0000 (02:23 +0000)]
Fix some -Wstring-conversion warnings

I don't seem to see these locally, maybe just need to update my
compiler, or we haven't turned them on for LLVM's build and we should...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259146 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[GVN] Add clarifying assert [NFCI]
Philip Reames [Fri, 29 Jan 2016 02:23:10 +0000 (02:23 +0000)]
[GVN] Add clarifying assert [NFCI]

Just adding an assert which makes invariants between AnalyzeLoadsFromClobberingLoads and GetLoadValueForLoad slightly more clear.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259145 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMinor code cleanup. NFC.
Junmo Park [Fri, 29 Jan 2016 01:39:39 +0000 (01:39 +0000)]
Minor code cleanup. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259139 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[AArch64] Fix i64 nontemporal high-half extraction.
Ahmed Bougacha [Fri, 29 Jan 2016 01:08:41 +0000 (01:08 +0000)]
[AArch64] Fix i64 nontemporal high-half extraction.

Since we only have pair - not single - nontemporal store instructions,
we have to extract the high part into a separate register to be able
to use them.

When the initial nontemporal codegen support was added, I wrote the
extract using the nonsensical UBFX [0,32[.
Use the correct LSR form instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259134 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RS4GC] Minor cleanups enabled by the previous change; NFC
Sanjoy Das [Fri, 29 Jan 2016 01:03:20 +0000 (01:03 +0000)]
[RS4GC] Minor cleanups enabled by the previous change; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259133 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RS4GC] Delete code that is dead due to r259129; NFC
Sanjoy Das [Fri, 29 Jan 2016 01:03:17 +0000 (01:03 +0000)]
[RS4GC] Delete code that is dead due to r259129; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259132 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoReland "[CodeView] Use assembler directives for line tables"
Reid Kleckner [Fri, 29 Jan 2016 00:49:42 +0000 (00:49 +0000)]
Reland "[CodeView] Use assembler directives for line tables"

This reverts commit r259126 and relands r259117.

This time with updated library dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259130 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RS4GC] Clamp UseDeoptBundles to true and update tests
Sanjoy Das [Fri, 29 Jan 2016 00:28:57 +0000 (00:28 +0000)]
[RS4GC] Clamp UseDeoptBundles to true and update tests

The full diff for the test directory may be hard to read because of the
filename clash; so here's all that happened as far as the tests are
concerned:

```
cd test/Transforms/RewriteStatepointsForGC
git rm *ll
git mv deopt-bundles/* ./
rmdir deopt-bundles
find . -name '*.ll' | xargs gsed -i 's/-rs4gc-use-deopt-bundles //g'
```

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259129 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert "[CodeView] Use assembler directives for line tables"
Reid Kleckner [Fri, 29 Jan 2016 00:13:28 +0000 (00:13 +0000)]
Revert "[CodeView] Use assembler directives for line tables"

This reverts commit r259117.

The LineInfo constructor is defined in the codeview library and we have
to link against it now. Doing that isn't trivial, so reverting for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259126 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RS4GC] Port three tests to the deopt bundles directory
Sanjoy Das [Fri, 29 Jan 2016 00:13:26 +0000 (00:13 +0000)]
[RS4GC] Port three tests to the deopt bundles directory

two-invokes-one-landingpad.ll was only moved (and not "ported"), but
having everything in the `deopt-bundles` directory will make later
changes more obvious.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259125 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd missing raw_ostream include
Reid Kleckner [Fri, 29 Jan 2016 00:03:34 +0000 (00:03 +0000)]
Add missing raw_ostream include

Prior to r259115 this was coming via LTOModule.h and MCContext.h.

Apparently this target is not built by 'check'. =(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259124 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSilence gcc warning about ternary and enumerations
Reid Kleckner [Thu, 28 Jan 2016 23:59:35 +0000 (23:59 +0000)]
Silence gcc warning about ternary and enumerations

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259123 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[PlaceSafepoints] Use DEBUG() instead of TraceLSP
Sanjoy Das [Thu, 28 Jan 2016 23:49:27 +0000 (23:49 +0000)]
[PlaceSafepoints] Use DEBUG() instead of TraceLSP

DEBUG() is the more idiomatic LLVM style.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259121 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoLower inlining threshold when the caller has minsize attribute.
Easwaran Raman [Thu, 28 Jan 2016 23:44:41 +0000 (23:44 +0000)]
Lower inlining threshold when the caller has minsize attribute.

When the caller has optsize attribute, we reduce the inlinining threshold
to OptSizeThreshold (=75) if it is not already lower than that. We don't do
the same for minsize and I suspect it was not intentional. This also addresses
a FIXME regarding checking optsize attribute explicitly instead of using the
right wrapper.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259120 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[CodeView] Use assembler directives for line tables
Reid Kleckner [Thu, 28 Jan 2016 23:31:52 +0000 (23:31 +0000)]
[CodeView] Use assembler directives for line tables

Adds a new family of .cv_* directives to LLVM's variant of GAS syntax:

- .cv_file: Similar to DWARF .file directives

- .cv_loc: Similar to the DWARF .loc directive, but starts with a
  function id. CodeView line tables are emitted by function instead of
  by compilation unit, so we needed an extra field to communicate this.
  Rather than overloading the .loc direction further, we decided it was
  better to have our own directive.

- .cv_stringtable: Emits the codeview string table at the current
  position. Currently this just contains the filenames as
  null-terminated strings.

- .cv_filechecksums: Emits the file checksum table for all files used
  with .cv_file so far. There is currently no support for emitting
  actual checksums, just filenames.

This moves the line table emission code down into the assembler.  This
is in preparation for implementing the inlined call site line table
format. The inline line table format encoding algorithm requires knowing
the absolute code offsets, so it must run after the assembler has laid
out the code.

David Majnemer collaborated on this patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259117 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRemove unused MC includes from LTOModule.h
Reid Kleckner [Thu, 28 Jan 2016 23:21:12 +0000 (23:21 +0000)]
Remove unused MC includes from LTOModule.h

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259115 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[PlaceSafepoints] Misc. minor cleanups; NFC
Sanjoy Das [Thu, 28 Jan 2016 23:03:19 +0000 (23:03 +0000)]
[PlaceSafepoints] Misc. minor cleanups; NFC

These changes are aimed at bringing PlaceSafepoints up to code with the
LLVM coding guidelines:

 - Fix variable naming
 - Use DenseSet instead of std::set
 - Remove dead code
 - Minor local code simplifications

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259112 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[PlaceSafepoints] Remvoe unused headers, and sort #includes; NFC
Sanjoy Das [Thu, 28 Jan 2016 23:03:17 +0000 (23:03 +0000)]
[PlaceSafepoints] Remvoe unused headers, and sort #includes; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259111 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[PlaceSafepoints] Eliminate dead code; NFC
Sanjoy Das [Thu, 28 Jan 2016 23:03:14 +0000 (23:03 +0000)]
[PlaceSafepoints] Eliminate dead code; NFC

Now that NoStatepoints is a constant `true`, we can get rid of a bunch
of dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259110 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoDon't mention a command line option in an error.
Rafael Espindola [Thu, 28 Jan 2016 22:55:45 +0000 (22:55 +0000)]
Don't mention a command line option in an error.

The program using this code may not have it.

Patch by Wilfred Hughes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259106 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RuntimeDyld][MachO] Fix handling of empty eh-frame sections.
Lang Hames [Thu, 28 Jan 2016 22:35:48 +0000 (22:35 +0000)]
[RuntimeDyld][MachO] Fix handling of empty eh-frame sections.

This patch switches from an unguarded to a guarded loop for eh-frame record
fixups. In the unguarded version we would always make at least one call to
processFDE, which would then crash trying to fix up a frame that didn't exist.

Fixes <rdar://problem/24301582>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259103 91177308-0d34-0410-b5e6-96231b3b80d8