Sanjoy Das [Fri, 8 May 2015 18:58:55 +0000 (18:58 +0000)]
[BasicAA] Fix zext & sext handling
Summary:
There are several unhandled edge cases in BasicAA's GetLinearExpression
method. This changes fixes outstanding issues, including zext / sext of
a constant with the sign bit set, and the refusal to decompose zexts or
sexts of wrapping arithmetic.
Test Plan: Unit tests added in //q.ext.ll//.
Patch by Nick White.
Reviewers: hfinkel, sanjoy
Reviewed By: hfinkel, sanjoy
Subscribers: sanjoy, llvm-commits, hfinkel
Differential Revision: http://reviews.llvm.org/D6682
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236894
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 8 May 2015 18:52:28 +0000 (18:52 +0000)]
Replace branch-to-unreachable with assertion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236893
91177308-0d34-0410-b5e6-
96231b3b80d8
Pat Gavlin [Fri, 8 May 2015 18:37:49 +0000 (18:37 +0000)]
Fix a docs build break introduced by rL236888.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236891
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Fri, 8 May 2015 18:29:42 +0000 (18:29 +0000)]
[X86] Fast-ISel was incorrectly always killing the source of a truncate.
A trunc from i32 to i1 on x86_64 generates an instruction such as
%vreg19<def> = COPY %vreg9:sub_8bit<kill>; GR8:%vreg19 GR32:%vreg9
However, the copy here should only have the kill flag on the 32-bit path, not the 64-bit one.
Otherwise, we are killing the source of the truncate which could be used later in the program.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236890
91177308-0d34-0410-b5e6-
96231b3b80d8
Pat Gavlin [Fri, 8 May 2015 18:07:42 +0000 (18:07 +0000)]
Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware.
This changes the shape of the statepoint intrinsic from:
@llvm.experimental.gc.statepoint(anyptr target, i32 # call args, i32 unused, ...call args, i32 # deopt args, ...deopt args, ...gc args)
to:
@llvm.experimental.gc.statepoint(anyptr target, i32 # call args, i32 flags, ...call args, i32 # transition args, ...transition args, i32 # deopt args, ...deopt args, ...gc args)
This extension offers the backend the opportunity to insert (somewhat) arbitrary code to manage the transition from GC-aware code to code that is not GC-aware and back.
In order to support the injection of transition code, this extension wraps the STATEPOINT ISD node generated by the usual lowering lowering with two additional nodes: GC_TRANSITION_START and GC_TRANSITION_END. The transition arguments that were passed passed to the intrinsic (if any) are lowered and provided as operands to these nodes and may be used by the backend during code generation.
Eventually, the lowering of the GC_TRANSITION_{START,END} nodes should be informed by the GC strategy in use for the function containing the intrinsic call; for now, these nodes are instead replaced with no-ops.
Differential Revision: http://reviews.llvm.org/D9501
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236888
91177308-0d34-0410-b5e6-
96231b3b80d8
Jingyue Wu [Fri, 8 May 2015 18:07:24 +0000 (18:07 +0000)]
[NoTTI] reject negative scale in addressing mode
Summary:
I noticed this bug when deubging a WIP on LSR. I wonder whether and how we
should add a regression test for this.
Test Plan: no tests failed.
Reviewers: atrick
Subscribers: hfinkel, llvm-commits
Differential Revision: http://reviews.llvm.org/D9536
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236887
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Fri, 8 May 2015 17:54:32 +0000 (17:54 +0000)]
Clear kill flags on all used registers when sinking instructions.
The test here was sinking the AND here to a lower BB:
%vreg7<def> = ANDWri %vreg8, 0; GPR32common:%vreg7,%vreg8
TBNZW %vreg8<kill>, 0, <BB#1>; GPR32common:%vreg8
which meant that vreg8 was read after it was killed.
This commit changes the code from clearing kill flags on the AND to clearing flags on all registers used by the AND.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236886
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Fri, 8 May 2015 17:54:29 +0000 (17:54 +0000)]
80 cols fix since i'm looking at this function anyway. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236885
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Fri, 8 May 2015 16:59:53 +0000 (16:59 +0000)]
Remove duplicate cmake target I added in r236792.
Thanks to Daniel Jasper for pointing out the mistake.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236881
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Katzman [Fri, 8 May 2015 16:39:59 +0000 (16:39 +0000)]
Unbreak build: Makefile must have the same change as CMakeLists.txt
This was omitted from http://reviews.llvm.org/D9441
(the irony is that that was to detect omissions in something else)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236878
91177308-0d34-0410-b5e6-
96231b3b80d8
Brendon Cahoon [Fri, 8 May 2015 16:16:29 +0000 (16:16 +0000)]
[Hexagon] Update AnalyzeBranch, etc target hooks
Improved the AnalyzeBranch, InsertBranch, and RemoveBranch
functions in order to handle more of our branch instructions.
This requires changes to analyzeCompare and PredicateInstructions.
Specifically, we've added support for new value compare jumps,
improved handling of endloop, added more compare instructions,
and improved support for predicate instructions.
Differential Revision: http://reviews.llvm.org/D9559
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236876
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Katzman [Fri, 8 May 2015 15:34:12 +0000 (15:34 +0000)]
Prevent further errors of omission when adding backend names.
Differential Revision: http://reviews.llvm.org/D9441
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236865
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Fri, 8 May 2015 15:11:07 +0000 (15:11 +0000)]
[X86] Teach 'getTargetShuffleMask' how to look through ISD::WrapperRIP when decoding a PSHUFB mask.
The function 'getTargetShuffleMask' already knows how to deal with PSHUFB nodes
where the mask node is a load from constant pool, and the constant pool node
is wrapped by a X86ISD::Wrapper node. This patch extends that logic by teaching
it how to also look through X86ISD::WrapperRIP.
This helps function combineX86ShufflesRecusively to combine more shuffle
sequences containing PSHUFB nodes if we are in RIPRel PIC mode.
Before this change, llc (with -relocation-model=pic -march=x86-64) was unable
to decode a pshufb where the mask was loaded from a constant pool. For example,
the no-op shuffle from test 'x86-fold-pshufb.ll' was not folded into its
operand, so instead of generating a single 'movaps' the backend always
generated a sub-optimal 'movdqa + pshufb' sequence.
Added test x86-fold-pshufb.ll.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236863
91177308-0d34-0410-b5e6-
96231b3b80d8
Jozef Kolek [Fri, 8 May 2015 14:25:11 +0000 (14:25 +0000)]
[mips][microMIPSr6] Implement ALUIPC and AUIPC instructions
This patch implements ALUIPC and AUIPC instructions using mapping.
Differential Revision: http://reviews.llvm.org/D8441
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236858
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Fri, 8 May 2015 14:04:54 +0000 (14:04 +0000)]
Fix test added in r236850 for OSX builders.
Need to specify triple so that llvm emits the asm syntax that the
test expected.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236855
91177308-0d34-0410-b5e6-
96231b3b80d8
Jozef Kolek [Fri, 8 May 2015 13:52:04 +0000 (13:52 +0000)]
[mips][microMIPSr6] Implement ADDIUPC and LWPC instructions
This patch implements ADDIUPC and LWPC instructions using mapping.
Differential Revision: http://reviews.llvm.org/D8415
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236852
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Fri, 8 May 2015 13:47:01 +0000 (13:47 +0000)]
Fix alignment checks in MergeConsecutiveStores.
1) check whether the alignment of the memory is sufficient for the
*merged* store or load to be efficient.
Not doing so can result in some ridiculously poor code generation, if
merging creates a vector operation which must be aligned but isn't.
2) DON'T check that the alignment of each load/store is equal. If
you're merging 2 4-byte stores, the first *might* have 8-byte
alignment, but the second certainly will have 4-byte alignment. We do
want to allow those to be merged.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236850
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Laevsky [Fri, 8 May 2015 13:17:22 +0000 (13:17 +0000)]
Fix coding standart based on post submit comments.
Differential Revision: http://reviews.llvm.org/D7760
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236849
91177308-0d34-0410-b5e6-
96231b3b80d8
John Brawn [Fri, 8 May 2015 12:52:02 +0000 (12:52 +0000)]
[ARM] Reject invalid -march values
Restructure Triple::getARMCPUForArch so that invalid values will
return nullptr, while retaining the behaviour that an argument
specifying no particular architecture version will give a default
CPU. This will be used by clang to give an error on invalid -march
values.
Also restructure the extraction of the architecture version from
the MArch string a little to hopefully make what it's doing clearer.
Differential Revision: http://reviews.llvm.org/D9599
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236845
91177308-0d34-0410-b5e6-
96231b3b80d8
Denis Protivensky [Fri, 8 May 2015 12:21:03 +0000 (12:21 +0000)]
Fix gcc warning of different enum and non-enum types in ternary
Make '0' literal explicitly unsigned with '0u'.
This appeared after r236775.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236838
91177308-0d34-0410-b5e6-
96231b3b80d8
Toma Tabacu [Fri, 8 May 2015 12:15:04 +0000 (12:15 +0000)]
[mips] Only use FGR_{32,64} in TableGen descriptions. NFC.
Summary: Instead of explicitly adding the IsFP64bit and NotFP64bit predicates through AdditionalRequires.
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9566
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236835
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Laevsky [Fri, 8 May 2015 11:59:09 +0000 (11:59 +0000)]
This change is refactoring only. It moves basic block normalization for invokes to happen before replacement of a call with safepoint in "ReplaceWithStatepoint". Previously it was partly done before replacement of calls with safepoint and partly after call replacement but before RAUW's for gc_relocates, which was confusing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236829
91177308-0d34-0410-b5e6-
96231b3b80d8
Vasileios Kalintiris [Fri, 8 May 2015 09:10:15 +0000 (09:10 +0000)]
[mips] Emit the .insn directive for empty basic blocks.
Summary:
In microMIPS, labels need to know whether they are on code or data. This is
indicated with STO_MIPS_MICROMIPS and can be inferred by being followed
by instructions. For empty basic blocks, we can ensure this by emitting the
.insn directive after the label.
Also, this fixes some failures in our out-of-tree microMIPS buildbots, for the
exception handling regression tests under: SingleSource/Regression/C++/EH
Reviewers: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9530
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236815
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Fri, 8 May 2015 07:05:04 +0000 (07:05 +0000)]
[yaml2elf] Replace error message by assert call in writeSectionContent methods
Now caller of ELFState::writeSectionContent() methods is responsible to check
a section type and selects an appropriate writeSectionContent method.
So unexpected section type inside writeSectionContent method indicates
a wrong usage of the method and should be guarded by assert.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236808
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Fri, 8 May 2015 07:04:59 +0000 (07:04 +0000)]
[llvm-readobj/obj2yaml/yaml2obj] Support MIPS machine ELF header flags
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236807
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Fri, 8 May 2015 00:57:22 +0000 (00:57 +0000)]
Now that we have a soft-float attribute, use it instead of the
hard coded command line option for the Mips soft float tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236801
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 8 May 2015 00:42:26 +0000 (00:42 +0000)]
[opaque pointer type] Explicit pointee type for GEPOperator/GEPConstantExpr.
Also a couple of other changes to avoid use of
PointerType::getElementType here & there too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236799
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Thu, 7 May 2015 23:33:24 +0000 (23:33 +0000)]
Update CMake flags, LibFuzzer comments and docs for new -fsanitize-coverage= flags.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236797
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 7 May 2015 23:10:23 +0000 (23:10 +0000)]
InMips16HardFloat was only being set conditional on whether or
not IsSoftFloat was set so remove it from here simplifying the
accessor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236795
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 7 May 2015 23:10:21 +0000 (23:10 +0000)]
Rename the MIPS routine abiUsesSoftFloat -> useSoftFloat to match
some incoming changes and the general scheme used by features (use/has).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236794
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Thu, 7 May 2015 22:53:11 +0000 (22:53 +0000)]
Add yaml-bench to the list of tools make check needs to run
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236792
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Thu, 7 May 2015 22:46:06 +0000 (22:46 +0000)]
Delete unused createSanitizerCoverageModulePass overload.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236791
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Thu, 7 May 2015 22:24:58 +0000 (22:24 +0000)]
[CMake] llvm/test/YAMLParser requires yaml-bench. This fixes r236754.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236787
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Pazarbasi [Thu, 7 May 2015 22:17:48 +0000 (22:17 +0000)]
Revert "SanitizerCoverage: Use `createSanitizerCtor` to create ctor and call init"
Will fix tomorrow. Unbreak build bots now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236786
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Thu, 7 May 2015 22:16:10 +0000 (22:16 +0000)]
Fix typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236785
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Thu, 7 May 2015 21:48:26 +0000 (21:48 +0000)]
Clear kill flags in tail duplication.
If we duplicate an instruction then we must also clear kill flags on any uses we rewrite.
Otherwise we might be killing a register which was used in other BBs.
For example, here the entry BB ended up with these instructions, the ADD having been tail duplicated.
%vreg24<def> = t2ADDri %vreg10<kill>, 1, pred:14, pred:%noreg, opt:%noreg; GPRnopc:%vreg24 rGPR:%vreg10
%vreg22<def> = COPY %vreg10; GPR:%vreg22 rGPR:%vreg10
The copy here is inserted after the add and so needs vreg10 to be live.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236782
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Pazarbasi [Thu, 7 May 2015 21:47:25 +0000 (21:47 +0000)]
When checking msan.module_ctor, use CHECK-LABEL instead of CHECK
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236781
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Pazarbasi [Thu, 7 May 2015 21:43:28 +0000 (21:43 +0000)]
SanitizerCoverage: Use `createSanitizerCtor` to create ctor and call init
Reviewers: kcc, samsonov
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8780
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236780
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Pazarbasi [Thu, 7 May 2015 21:41:52 +0000 (21:41 +0000)]
MSan: Use `createSanitizerCtor` to create ctor, and call `__msan_init`
Reviewers: kcc, eugenis
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8781
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236779
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Pazarbasi [Thu, 7 May 2015 21:41:23 +0000 (21:41 +0000)]
TSan: Use `createSanitizerCtor` to create ctor, and call `__tsan_init`
Reviewers: kcc, dvyukov
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8779
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236778
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Pazarbasi [Thu, 7 May 2015 21:40:46 +0000 (21:40 +0000)]
ASan: Use `createSanitizerCtor` to create ctor, and call `__asan_init`
Reviewers: kcc, samsonov
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8778
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236777
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Thu, 7 May 2015 21:33:59 +0000 (21:33 +0000)]
Change getTargetNodeName() to produce compiler warnings for missing cases, fix them
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236775
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Thu, 7 May 2015 21:02:11 +0000 (21:02 +0000)]
[lib/Fuzzer] change the way we use taint information for fuzzing. Now, we run a single unit and collect suggested mutations based on tracing+taint data, then apply the suggested mutations one by one. The previous scheme was slower and more complex.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236772
91177308-0d34-0410-b5e6-
96231b3b80d8
Steven Wu [Thu, 7 May 2015 19:56:23 +0000 (19:56 +0000)]
Use auto instead of the long type name. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236768
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Thu, 7 May 2015 19:21:36 +0000 (19:21 +0000)]
[AArch64] Fix sext/zext folding in address arithmetic.
We were accidentally folding a sign/zero extend in to address arithmetic in a different BB when the extend wasn't available there.
Cross BB fast-isel isn't safe, so restrict this to only when the extend is in the same BB as the use.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236764
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Thu, 7 May 2015 18:48:48 +0000 (18:48 +0000)]
Fix r236754: Add the missing yaml-bench dir to the makefile for utils.
This commit adds the missing yaml-bench utility to the
makefile in utils. It was missing before and it caused
the regression tests to fail on some buildbots when llvm-lit
couldn't find yaml-bench when llvm was built without
cmake after I committed r236754.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236761
91177308-0d34-0410-b5e6-
96231b3b80d8
Sergey Dmitrouk [Thu, 7 May 2015 18:33:50 +0000 (18:33 +0000)]
Disable r235989 "Reapply r235977 "[DebugInfo] Add debug locations to constant SD nodes""
Will be re-enabled with missing changes for ConstantFPSDNode and
fixes for wrong locations due to constant coalescing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236758
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Thu, 7 May 2015 18:32:29 +0000 (18:32 +0000)]
[lib/Fuzzer] minor refactoring/simplification, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236757
91177308-0d34-0410-b5e6-
96231b3b80d8
Nemanja Ivanovic [Thu, 7 May 2015 18:24:05 +0000 (18:24 +0000)]
Add VSX Scalar loads and stores to the PPC back end
This patch corresponds to review:
http://reviews.llvm.org/D9440
It adds a new register class to the PPC back end to contain single precision
values in VSX registers. Additionally, it adds scalar loads and stores for
VSX registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236755
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Thu, 7 May 2015 18:08:46 +0000 (18:08 +0000)]
YAML: Enable the YAMLParser tests.
This commit enables the tests located in test/YAMLParser directory.
Those tests were never actually enabled, as llvm-lit didn't pick up the
files with the 'data' extension. The commit renames those test files to files
with the 'test' extension so that llvm-lit would find them.
This commit also modifies yaml-bench so that it returns an error status
if an error occurred during parsing. It also adds the '-use-color'
command line option to yaml-bench (to make sure that file check matches
the error messages in the output stream).
This commit modifies some of the renamed tests so that they wouldn't
fail. It gets rid of XFAILs and uses the 'not' command instead for
some of the tests that have to fail during parsing. This commit
also adds some 'FIXME' comments to a couple of tests that are
supposed to fail but currently pass because of various bugs
in the implementation of the yaml parser.
Reviewers: Justin Bogner
Differential Revision: http://reviews.llvm.org/D9448
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236754
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Thu, 7 May 2015 17:28:58 +0000 (17:28 +0000)]
Recommit r236670: [opaque pointer type] Pass explicit pointer type through GEP constant folding""
Clang regressions were caused by more stringent assertion checking
introduced by this change. Small fix needed to clang has been committed
in r236751.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236752
91177308-0d34-0410-b5e6-
96231b3b80d8
Diego Novillo [Thu, 7 May 2015 17:22:06 +0000 (17:22 +0000)]
Fix information loss in branch probability computation.
Summary:
This addresses PR 22718. When branch weights are too large, they were
being clamped to the range [1, MaxWeightForBB]. But this clamping is
only applied to edges that go outside the range, so it distorts the
relative branch probabilities.
This patch changes the weight calculation to scale every branch so the
relative probabilities are preserved. The scaling is done differently
now. First, all the branch weights are added up, and if the sum exceeds
32 bits, it computes an integer scale to bring all the weights within
the range.
The patch fixes an existing test that had slightly wrong branch
probabilities due to the previous clamping. It now gets branch weights
scaled accordingly.
Reviewers: dexonsmith
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9442
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236750
91177308-0d34-0410-b5e6-
96231b3b80d8
Jozef Kolek [Thu, 7 May 2015 17:12:23 +0000 (17:12 +0000)]
[mips][microMIPSr6] Implement JIALC and JIC instructions
This patch implements JIALC and JIC instructions using mapping.
Differential Revision: http://reviews.llvm.org/D8389
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236748
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Thu, 7 May 2015 17:11:51 +0000 (17:11 +0000)]
Populate list of vectorizable functions for Accelerate library.
Summary:
This patch adds majority of supported by Accelerate library functions to the
list of vectorizable functions.
The full list of available vector functions could be found here:
https://developer.apple.com/library/mac/documentation/Performance/Conceptual/vecLib/index.html
Test Plan: Unit tests are added.
Reviewers: hfinkel, aschwaighofer, nadav
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9543
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236747
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 7 May 2015 17:02:32 +0000 (17:02 +0000)]
R600: Fix comment that mentions AMDIL
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236745
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 7 May 2015 16:51:12 +0000 (16:51 +0000)]
Use intrinsic pattern to make a simpler match
This is a follow-on to r236740 where I took Andrea's advice
in D9504 to remove a redundant pattern...except that I removed
the wrong pattern!
AFAICT, there is no change in the final code produced because
subsequent passes would clean up the extra instructions created
by the more complicated pattern.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236743
91177308-0d34-0410-b5e6-
96231b3b80d8
Steven Wu [Thu, 7 May 2015 16:20:51 +0000 (16:20 +0000)]
Fix another hang caused by ManagedStatic in SignalHandler
Fix two other variables that might cause the same hang fixed in r235914.
The hang is caused by constructing ManagedStatic in signalhandler. In
this case, if FileToRemove or CallBacksToRun is not contructed, it means
there is no work to do.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236741
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 7 May 2015 15:48:53 +0000 (15:48 +0000)]
[x86] eliminate unnecessary shuffling/moves with unary scalar math ops (PR21507)
Finish the job that was abandoned in D6958 following the refactoring in
http://reviews.llvm.org/rL230221:
1. Uncomment the intrinsic def for the AVX r_Int instruction.
2. Add missing r_Int entries to the load folding tables; there are already
tests that check these in "test/Codegen/X86/fold-load-unops.ll", so I
haven't added any more in this patch.
3. Add patterns to solve PR21507 ( https://llvm.org/bugs/show_bug.cgi?id=21507 ).
So instead of this:
movaps %xmm0, %xmm1
rcpss %xmm1, %xmm1
movss %xmm1, %xmm0
We should now get:
rcpss %xmm0, %xmm0
And instead of this:
vsqrtss %xmm0, %xmm0, %xmm1
vblendps $1, %xmm1, %xmm0, %xmm0 ## xmm0 = xmm1[0],xmm0[1,2,3]
We should now get:
vsqrtss %xmm0, %xmm0, %xmm0
Differential Revision: http://reviews.llvm.org/D9504
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236740
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Thu, 7 May 2015 15:47:15 +0000 (15:47 +0000)]
Switch lowering: handle zero-weight branch probabilities
After r236617, branch probabilities are no longer guaranteed to be >= 1. This
patch makes the swich lowering code handle that correctly, without bumping the
branch weights by 1 which might cause overflow and skews the probabilities.
Covered by @zero_weight_tree in test/CodeGen/X86/switch.ll.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236739
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Thu, 7 May 2015 15:40:48 +0000 (15:40 +0000)]
[obj2yaml/yaml2obj] Add SHT_MIPS_ABIFLAGS section support
This change adds support for the SHT_MIPS_ABIFLAGS section
reading/writing to the obj2yaml and yaml2obj tools.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236738
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Thu, 7 May 2015 15:40:35 +0000 (15:40 +0000)]
[llvm-readobj] Print .MIPS.abiflags section content
This change adds new flag -mips-abi-flags to the llvm-readobj. This flag
forces printing of .MIPS.abiflags section content.
https://dmz-portal.mips.com/wiki/MIPS_O32_ABI_-_FR0_and_FR1_Interlinking#10.2.1._.MIPS.abiflags
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236737
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Thu, 7 May 2015 14:57:04 +0000 (14:57 +0000)]
[MIPS] Move MIPS ABI flags structure constants to the separate header
http://reviews.llvm.org/D9517
The separate header file allows to reuse the MIPS ABI flags structure
constants in other LLVM tools like the llvm-readobj.
No functional changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236732
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Thu, 7 May 2015 14:04:44 +0000 (14:04 +0000)]
[llvm-readobj/obj2yaml/yaml2obj] Support more MIPS ELF header flags
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236728
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Thu, 7 May 2015 12:25:11 +0000 (12:25 +0000)]
Masked Gather and Scatter intrinsics - updated documentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236721
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Thu, 7 May 2015 11:24:42 +0000 (11:24 +0000)]
AVX-512: Added all forms of FP compare instructions for KNL and SKX.
Added intrinsics for the instructions. CC parameter of the intrinsics was changed from i8 to i32 according to the spec.
By Igor Breger (igor.breger@intel.com)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236714
91177308-0d34-0410-b5e6-
96231b3b80d8
Toma Tabacu [Thu, 7 May 2015 10:29:52 +0000 (10:29 +0000)]
[mips] Add the SoftFloat MipsSubtarget feature.
Summary: This will enable the IAS to reject floating point instructions if soft-float is enabled.
Reviewers: dsanders, echristo
Reviewed By: dsanders
Subscribers: jfb, llvm-commits, mpf
Differential Revision: http://reviews.llvm.org/D9053
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236713
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Thu, 7 May 2015 10:18:56 +0000 (10:18 +0000)]
Attributes.h: Fix incorrect \brief introduced in r236666. [-Wdocumentation]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236712
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Thu, 7 May 2015 10:18:46 +0000 (10:18 +0000)]
Scalar/PlaceSafepoints.cpp: Fix a warning introduced in r228090. [-Wunused-variable]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236711
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Thu, 7 May 2015 10:18:28 +0000 (10:18 +0000)]
llvm/test/CodeGen/X86/llc-override-mcpu-mattr.ll: Tweak not to be affected by x64 Calling Convention.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236710
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Thu, 7 May 2015 05:52:40 +0000 (05:52 +0000)]
Update InstCombine to transform aggregate loads into scalar loads.
Summary:
One step further getting aggregate loads and store being optimized
properly. This will only handle struct with one element at this point.
Test Plan: Added unit tests for the new supported cases.
Reviewers: chandlerc, joker-eph, joker.eph, majnemer
Reviewed By: majnemer
Subscribers: pete, llvm-commits
Differential Revision: http://reviews.llvm.org/D8339
Patch by Amaury Sechet.
From: Amaury Sechet <amaury@fb.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236695
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Thu, 7 May 2015 01:00:31 +0000 (01:00 +0000)]
[SanitizerCoverage] Introduce SanitizerCoverageOptions struct.
Summary:
This gives frontend more precise control over collected coverage
information. User can still override these options by passing
-mllvm flags.
No functionality change.
Test Plan: regression test suite.
Reviewers: kcc
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9539
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236687
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Thu, 7 May 2015 00:56:34 +0000 (00:56 +0000)]
IR: Initialize DerefOrNullBytes in the AttrBuilder constructors
MSAN pointed out that this value is used uninitialized:
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/3678
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236686
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Thu, 7 May 2015 00:31:58 +0000 (00:31 +0000)]
InstrProf: Simplify looking up sections for coverage data
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236685
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Thu, 7 May 2015 00:19:14 +0000 (00:19 +0000)]
[JumpThreading] Simplify comparisons when simplifying branches
If we have recognized that a conditional is constant at a particular location in the code (while trying to decide if we can simplify a conditional branch), we can eagerly replace that condition with a constant if it's definition is post dominated by the branch in question.
In practice, this ends up being a compile time savings at most. JumpThreading would have visited each using branch anyways. CVP would have visited the cmp itself again. Unless LVI gives up early, we shouldn't gain any addition power by doing this transformation early. What we do gain is simplicity and compile time.
Differential Revision: http://reviews.llvm.org/D9312
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236684
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Thu, 7 May 2015 00:11:33 +0000 (00:11 +0000)]
[lib/Fuzzer] add dfsan_weak_hook_memcmp, enable the test that uses it, simplify the test runner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236683
91177308-0d34-0410-b5e6-
96231b3b80d8
Vince Harron [Thu, 7 May 2015 00:05:26 +0000 (00:05 +0000)]
Added support for building against Android API-9 SDK
Created an abstraction for log2, llvm::Log2 in Support/MathExtras.h
Hid Android problems inside of it
Differential Revision: http://reviews.llvm.org/D9467
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236680
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Wed, 6 May 2015 23:56:21 +0000 (23:56 +0000)]
Revert "[opaque pointer type] Pass explicit pointer type through GEP constant folding"
Causes regressions in Clang. Reverting while I investigate.
This reverts commit r236670.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236678
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Wed, 6 May 2015 23:54:14 +0000 (23:54 +0000)]
Let llc and opt override "-target-cpu" and "-target-features" via command line
options.
This commit fixes a bug in llc and opt where "-mcpu" and "-mattr" wouldn't
override function attributes "-target-cpu" and "-target-features" in the IR.
Differential Revision: http://reviews.llvm.org/D9537
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236677
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 6 May 2015 23:53:26 +0000 (23:53 +0000)]
[X86MCInst] Move LowerSTATEPOINT to inside X86AsmPrinter. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236676
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 6 May 2015 23:53:24 +0000 (23:53 +0000)]
[X86MCInst] Clean up LowerSTATEPOINT: variable names. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236675
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 6 May 2015 23:53:21 +0000 (23:53 +0000)]
[Statepoints] Clean up PlaceSafepoints.cpp: de-duplicate code.
Common duplicated code and remove unnecessary code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236674
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 6 May 2015 23:53:19 +0000 (23:53 +0000)]
[Statepoints] Clean up PlaceSafepoints.cpp: variable naming.
Use CamelCase. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236673
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 6 May 2015 23:53:09 +0000 (23:53 +0000)]
[IRBuilder] Add a CreateGCStatepointInvoke.
Renames the original CreateGCStatepoint to CreateGCStatepointCall, and
moves invoke creating functionality from PlaceSafepoints.cpp to
IRBuilder.cpp.
This changes the labels generated for PlaceSafepoints/invokes.ll so use
a regex there to make the basic block labels more resilient.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236672
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Wed, 6 May 2015 23:49:24 +0000 (23:49 +0000)]
Factor out a function which determines the cpu and feature strings based on
command line options -mcpu and -mattr. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236671
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Wed, 6 May 2015 23:49:14 +0000 (23:49 +0000)]
[opaque pointer type] Pass explicit pointer type through GEP constant folding
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236670
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Wed, 6 May 2015 23:21:29 +0000 (23:21 +0000)]
YAML: Fix crash in the skip method of KeyValueNode class.
This commit changes the 'skip' method in the 'KeyValueNode' class
to ensure that it doesn't dereference a null pointer when calling
the 'skip' method of its value child node. It also adds a unittest
that ensures that the crash doesn't occur.
This change is motivated by a patch that implements parsing
of YAML block scalars (http://reviews.llvm.org/D9503), as one
of the unittests in that patch triggered this problem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236669
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Wed, 6 May 2015 23:19:56 +0000 (23:19 +0000)]
Change typeIncompatible to return an AttrBuilder instead of new-ing an AttributeSet.
This makes use of the new API which can remove attributes from a set given a builder.
This is much faster than creating a temporary set and reduces llc time by about 0.3% which was all spent creating temporary attributes sets on the context.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236668
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Wed, 6 May 2015 23:19:51 +0000 (23:19 +0000)]
Update all comments to match the previous commit. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236667
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Wed, 6 May 2015 23:19:43 +0000 (23:19 +0000)]
Add remove method to operate on AttrBuilder instead of AttributeSet.
Prior to this change we would have to construct a temporary AttributeSet (which isn't temporary at all given that its allocated on the context), just to contain the attributes in the builder, then call remove on that.
Now we can just remove any attributes from the (lightweight and really temporary) builder itself.
Will be used in a future commit to remove some temporary attributes sets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236666
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Wed, 6 May 2015 23:19:35 +0000 (23:19 +0000)]
InstrProf: Give coverage its own errors instead of piggy backing on instrprof
Since the coverage mapping reader and the instrprof reader were
emitting a shared set of error codes, the error messages you'd get
back from llvm-cov were ambiguous about what was actually wrong. Add
another error category to fix this.
I've also improved the wording on a couple of the instrprof errors,
for consistency.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236665
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Wed, 6 May 2015 23:15:55 +0000 (23:15 +0000)]
InstrProf: Remove a function that just returns its argument (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236664
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Wed, 6 May 2015 23:00:45 +0000 (23:00 +0000)]
YAML: Extract the code that skips a comment into a separate method, NFC.
This commit extracts the code that skips over a YAML comment from
the 'scanToNextToken' method into a separate 'skipComment' method.
This refactoring is motivated by a patch that implements parsing
of YAML block scalars (http://reviews.llvm.org/D9503), as the
method that parses a block scalar reuses the 'skipComment' method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236663
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Wed, 6 May 2015 22:55:46 +0000 (22:55 +0000)]
Remove unnecessary #ifndef NDEBUG guard around assert. NFC.
Found by Hal Finkel in the review of AttributeSets. http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-
20150504/275058.html
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236662
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Wed, 6 May 2015 22:51:12 +0000 (22:51 +0000)]
Bitcode: Set LastDL after writing DebugLocs
Somehow I dropped this in r233585, and we haven't had `DEBUG_LOC_AGAIN`
records since. Add it back. Also tests that the output assembly looks
okay.
Fixes PR23436.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236661
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Wed, 6 May 2015 22:51:04 +0000 (22:51 +0000)]
Handle dead defs in the if converter.
We had code such as this:
r2 = ...
t2Bcc
label1:
ldr ... r2
label2;
return r2<dead, def>
The if converter was transforming this to
r2<def> = ...
return [pred] r2<dead,def>
ldr <r2, kill>
return
which fails the machine verifier because the ldr now reads from a dead def.
The fix here detects dead defs in stepForward and passes them back to the caller in the clobbers list. The caller then clears the dead flag from the def is the value is live.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236660
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 6 May 2015 22:47:24 +0000 (22:47 +0000)]
[lib/Fuzzer] remove dfsan_fuzzer_abi.list -- its contents are now moved to dfsan proper
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236659
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Wed, 6 May 2015 22:41:50 +0000 (22:41 +0000)]
[RegisterCoalescer] Make sure each live-range has only one component, as
demanded by the machine verifier.
After shrinking a live-range to its uses, it is possible to create several
smaller live-ranges. When this happens, shrinkToUses returns true and we need to
split the different components into their own live-ranges.
The problem does not reproduce on any in-tree target but Jonas Paulsson
<jonas.paulsson@ericsson.com>, who reported the problem, checked that this patch
fixes the issue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236658
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 6 May 2015 22:36:00 +0000 (22:36 +0000)]
[lib/Fuzzer] add a fuzzer test for memcmp (does not work yet)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236656
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 6 May 2015 22:26:51 +0000 (22:26 +0000)]
Fix link failure on MinGW due to use of CoInitialize.
ole32 is considered a default library with MSVC, but apparently
not with MinGW. Since we use CoInitialize, we need to explicitly
link against it in LLVMSupport for a MinGW build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236654
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 6 May 2015 22:26:30 +0000 (22:26 +0000)]
A few fixes for llvm-symbolizer on Windows.
Specifically, this patch correctly respects the -demangle option,
and additionally adds a hidden --relative-address option allows
input addresses to be relative to the module load address instead
of absolute addresses into the image.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236653
91177308-0d34-0410-b5e6-
96231b3b80d8