OSDN Git Service

android-x86/external-llvm.git
8 years ago[InstCombine] scalarizePHI should not assume the code it sees has been CSE'd
Michael Kuperstein [Mon, 6 Jun 2016 23:38:33 +0000 (23:38 +0000)]
[InstCombine] scalarizePHI should not assume the code it sees has been CSE'd

scalarizePHI only looked for phis that have exactly two uses - the "latch"
use, and an extract. Unfortunately, we can not assume all equivalent extracts
are CSE'd, since InstCombine itself may create an extract which is a duplicate
of an existing one. This extends it to handle several distinct extracts from
the same index.

This should fix at least some of the  performance regressions from PR27988.

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

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

8 years agoFix CRLF -> LF.
Rui Ueyama [Mon, 6 Jun 2016 23:35:52 +0000 (23:35 +0000)]
Fix CRLF -> LF.

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

8 years agoAttempt to work around lack of std::map::emplace in libstdc++4.7
Reid Kleckner [Mon, 6 Jun 2016 23:28:03 +0000 (23:28 +0000)]
Attempt to work around lack of std::map::emplace in libstdc++4.7

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

8 years ago[codeview] Emit information about global variables
Reid Kleckner [Mon, 6 Jun 2016 23:23:47 +0000 (23:23 +0000)]
[codeview] Emit information about global variables

This currently emits everything as S_GDATA32, which isn't right for
things like thread locals, but it's a start.

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

8 years agoVerifier: Simplify and fix issue where we were not verifying unmaterialized functions.
Peter Collingbourne [Mon, 6 Jun 2016 23:21:27 +0000 (23:21 +0000)]
Verifier: Simplify and fix issue where we were not verifying unmaterialized functions.

Arrange to call verify(Function &) on each function, followed by
verify(Module &), whether the verifier is being used from the pass or
from verifyModule(). As a side effect, this fixes an issue that caused
us not to call verify(Function &) on unmaterialized functions from
verifyModule().

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

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

8 years ago[pdbdump] Verify the size of TPI hash records.
Rui Ueyama [Mon, 6 Jun 2016 23:19:23 +0000 (23:19 +0000)]
[pdbdump] Verify the size of TPI hash records.

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

8 years agoRetry^2 "[llvm-profdata] Add option to ingest filepaths from a file"
Vedant Kumar [Mon, 6 Jun 2016 23:17:22 +0000 (23:17 +0000)]
Retry^2 "[llvm-profdata] Add option to ingest filepaths from a file"

Changes since the initial commit:
- Normalize file paths read from the file to prevent Windows path
  separators from escaping parts of the path.
- Since we need to store the normalized file paths in WeightedFile,
  don't do tricky things to keep the source MemoryBuffer alive.
- Don't use list-initialization for a std::string in WeightedFile.

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

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

8 years agoRevert "Retry "[llvm-profdata] Add option to ingest filepaths from a file"
Vedant Kumar [Mon, 6 Jun 2016 23:01:42 +0000 (23:01 +0000)]
Revert "Retry "[llvm-profdata] Add option to ingest filepaths from a file"

This reverts commit r271949. It breaks the Windows build:

http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/12796

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

8 years agoRetry "[llvm-profdata] Add option to ingest filepaths from a file"
Vedant Kumar [Mon, 6 Jun 2016 22:39:22 +0000 (22:39 +0000)]
Retry "[llvm-profdata] Add option to ingest filepaths from a file"

Changes since the initial commit:
- Normalize file paths read from the file to prevent Windows path
  separators from escaping parts of the path.
- Since we need to store the normalized file paths in WeightedFile,
  don't do tricky things to keep the source MemoryBuffer alive.

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

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

8 years agoVerifier: Remove dead code.
Peter Collingbourne [Mon, 6 Jun 2016 22:32:52 +0000 (22:32 +0000)]
Verifier: Remove dead code.

Remove previously unreachable code that verifies that a function definition has
an entry block. By definition, a function definition has at least one block.

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

8 years agoUpdating release notes for CMake version bump
Chris Bieneman [Mon, 6 Jun 2016 22:02:16 +0000 (22:02 +0000)]
Updating release notes for CMake version bump

CMake 3.4.3 is now required for building LLVM-based projects.

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

8 years ago[pdbdump] Print section header flags.
Rui Ueyama [Mon, 6 Jun 2016 21:34:55 +0000 (21:34 +0000)]
[pdbdump] Print section header flags.

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

8 years ago[yaml2obj] Get rid of MachO header union
Chris Bieneman [Mon, 6 Jun 2016 21:18:43 +0000 (21:18 +0000)]
[yaml2obj] Get rid of MachO header union

This is based on post-commit feedback from Sean Silva.

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

8 years ago[llvm-pdbdump] Dump stream sizes and stream blocks to yaml.
Zachary Turner [Mon, 6 Jun 2016 20:37:17 +0000 (20:37 +0000)]
[llvm-pdbdump] Dump stream sizes and stream blocks to yaml.

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

8 years ago[llvm-pdbdump] Dump MSF headers to YAML.
Zachary Turner [Mon, 6 Jun 2016 20:37:05 +0000 (20:37 +0000)]
[llvm-pdbdump] Dump MSF headers to YAML.

This is the simplest possible patch to get some kind of YAML
output.  All it dumps is the MSF header fields so that in
theory an empty MSF file could be reconstructed.

Reviewed By: ruiu, majnemer
Differential Revision: http://reviews.llvm.org/D20971

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

8 years ago[LibFuzzer] Provide stub implementation of __sanitizer_cov_trace_pc_indir
Dan Liew [Mon, 6 Jun 2016 20:27:09 +0000 (20:27 +0000)]
[LibFuzzer] Provide stub implementation of __sanitizer_cov_trace_pc_indir

Calls to this function are currently injected by the
``SanitizerCoverageModule`` pass when the both the ``indirect-calls``
and ``trace-pc`` sanitizer coverage options are enabled and the code
being instrumented has indirect calls. Previously because LibFuzzer did
not define this function this would lead to link errors when building
some of the tests on OSX.

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

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

8 years agoAMDGPU: Add function for getting instruction size
Matt Arsenault [Mon, 6 Jun 2016 20:10:33 +0000 (20:10 +0000)]
AMDGPU: Add function for getting instruction size

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

8 years agoAMDGPU: Fix constantexpr addrspacecasts
Matt Arsenault [Mon, 6 Jun 2016 20:03:31 +0000 (20:03 +0000)]
AMDGPU: Fix constantexpr addrspacecasts

If we had a constant group address space cast the queue pointer
wasn't enabled for the function, resulting in a crash on noreg
later.

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

8 years ago[PM] Preserve the correct set of analyses for GVN.
Davide Italiano [Mon, 6 Jun 2016 20:01:50 +0000 (20:01 +0000)]
[PM] Preserve the correct set of analyses for GVN.

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

8 years ago[GVN] Switch dump() definition over to LLVM_DUMP_METHOD.
Davide Italiano [Mon, 6 Jun 2016 19:24:27 +0000 (19:24 +0000)]
[GVN] Switch dump() definition over to LLVM_DUMP_METHOD.

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

8 years ago[LoopUnrollAnalyzer] Fix a crash in analyzeLoopUnrollCost.
Michael Zolotukhin [Mon, 6 Jun 2016 19:21:40 +0000 (19:21 +0000)]
[LoopUnrollAnalyzer] Fix a crash in analyzeLoopUnrollCost.

In some cases, when simplifying with SCEV, we might consider pointer values as
just usual integer values.  Thus, we might get a different type from what we
had originally in the map of simplified values, and hence we need to check
types before operating on the values.

This fixes PR28015.

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

8 years agoFix a test case. NFC.
Haicheng Wu [Mon, 6 Jun 2016 19:11:53 +0000 (19:11 +0000)]
Fix a test case. NFC.

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

8 years agoReapply [LSR] Create fewer redundant instructions.
Geoff Berry [Mon, 6 Jun 2016 19:10:46 +0000 (19:10 +0000)]
Reapply [LSR] Create fewer redundant instructions.

Summary:
Fix LSRInstance::HoistInsertPosition() to check the original insert
position block first for a canonical insertion point that is dominated
by all inputs.  This leads to SCEV being able to reuse more instructions
since it currently tracks the instructions it creates for reuse by
keeping a table of <Value, insert point> pairs.

Originally reviewed in http://reviews.llvm.org/D18001

Reviewers: atrick

Subscribers: llvm-commits, mzolotukhin, mcrosier

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

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

8 years ago[pdbdump] Print out New FPO stream contents.
Rui Ueyama [Mon, 6 Jun 2016 18:39:21 +0000 (18:39 +0000)]
[pdbdump] Print out New FPO stream contents.

The data strucutre in the new FPO stream is described in the
PE/COFF spec. There is one record per function if frame pointer
is omitted.

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

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

8 years ago[MBP] Reduce code size by running tail merging in MBP.
Haicheng Wu [Mon, 6 Jun 2016 18:36:07 +0000 (18:36 +0000)]
[MBP] Reduce code size by running tail merging in MBP.

The code layout that TailMerging (inside BranchFolding) works on is not the
final layout optimized based on the branch probability. Generally, after
BlockPlacement, many new merging opportunities emerge.

This patch calls Tail Merging after MBP and calls MBP again if Tail Merging
merges anything.

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

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

8 years ago[Kaleidoscope][BuildingAJIT] Fix hyphenation in chapter 2 title.
Lang Hames [Mon, 6 Jun 2016 18:35:44 +0000 (18:35 +0000)]
[Kaleidoscope][BuildingAJIT] Fix hyphenation in chapter 2 title.

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

8 years ago[BranchFolding] Replace MachineBlockFrequencyInfo with MBFIWrapper. NFC.
Haicheng Wu [Mon, 6 Jun 2016 18:35:41 +0000 (18:35 +0000)]
[BranchFolding] Replace MachineBlockFrequencyInfo with MBFIWrapper. NFC.

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

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

8 years ago[cpu-detection] Substantial refactor of Host CPU detection code (x86)
Alina Sbirlea [Mon, 6 Jun 2016 18:29:59 +0000 (18:29 +0000)]
[cpu-detection] Substantial refactor of Host CPU detection code (x86)

Summary:
Following D20970 (committed as r271726).
This is a substantial refactoring of the host CPU detection code.

There is no functionality change intended, but the changes are extensive.

Definitions of architecture types and subtypes are by no means exhaustive or
perfectly defined, but a fair starting point.
Suggestions for futher improvements are welcome.

Reviewers: llvm-commits

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

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

8 years ago[Kaleidoscope][BuildingAJIT] More cleanup of Chapter 2.
Lang Hames [Mon, 6 Jun 2016 18:22:47 +0000 (18:22 +0000)]
[Kaleidoscope][BuildingAJIT] More cleanup of Chapter 2.

Streamline some wording, fix a bug in the markup for the layer interface table.

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

8 years ago[Kaleidoscope][BuildingAJIT] Clean up sentence, remove comments from code block.
Lang Hames [Mon, 6 Jun 2016 18:07:23 +0000 (18:07 +0000)]
[Kaleidoscope][BuildingAJIT] Clean up sentence, remove comments from code block.

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

8 years ago[InstCombine] limit icmp transform to ConstantInt (PR28011)
Sanjay Patel [Mon, 6 Jun 2016 16:56:57 +0000 (16:56 +0000)]
[InstCombine] limit icmp transform to ConstantInt (PR28011)

In r271810 ( http://reviews.llvm.org/rL271810 ), I loosened the check
above this to work for any Constant rather than ConstantInt. AFAICT,
that part makes sense if we can determine that the shrunken/extended
constant remained equal. But it doesn't make sense for this later
transform where we assume that the constant DID change.

This could assert for a ConstantExpr:
https://llvm.org/bugs/show_bug.cgi?id=28011

And it could be wrong for a vector as shown in the added regression test.

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

8 years agoregenerate checks
Sanjay Patel [Mon, 6 Jun 2016 16:03:06 +0000 (16:03 +0000)]
regenerate checks

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

8 years agoregenerate checks
Sanjay Patel [Mon, 6 Jun 2016 15:55:00 +0000 (15:55 +0000)]
regenerate checks

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

8 years ago[AMDGPU][llvm-mc] v_cndmask_b32: src2 is mandatory; do not enforce VOP2 when src2...
Artem Tamazov [Mon, 6 Jun 2016 15:23:43 +0000 (15:23 +0000)]
[AMDGPU][llvm-mc] v_cndmask_b32: src2 is mandatory; do not enforce VOP2 when src2 == VCC.

Another step for unification llvm assembler/disassembler with sp3.
Besides, CodeGen output is a bit improved, thus changes in CodeGen tests.
Assembler/Disassembler tests updated/added.

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

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

8 years ago[LAA] Use load and store vectors (NFC)
Matthew Simpson [Mon, 6 Jun 2016 14:15:41 +0000 (14:15 +0000)]
[LAA] Use load and store vectors (NFC)

Contributed-by: Aditya Kumar <hiraditya@msn.com>
Differential Revision: http://reviews.llvm.org/D20953

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

8 years ago[KNL] Fix UMULO lowering.
Igor Breger [Mon, 6 Jun 2016 12:24:52 +0000 (12:24 +0000)]
[KNL] Fix UMULO lowering.

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

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

8 years agoRemove dead function with incredibly broken assert.
Benjamin Kramer [Mon, 6 Jun 2016 12:10:42 +0000 (12:10 +0000)]
Remove dead function with incredibly broken assert.

Found by clang-tidy's misc-assert-side-effect.

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

8 years ago[NFC] Silence gcc warning (-Wsign-compare)
Filipe Cabecinhas [Mon, 6 Jun 2016 10:49:56 +0000 (10:49 +0000)]
[NFC] Silence gcc warning (-Wsign-compare)

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

8 years ago[AVX512] Remove masked palignr intrinsics and auto-upgrade them to native IR of vecto...
Craig Topper [Mon, 6 Jun 2016 06:12:54 +0000 (06:12 +0000)]
[AVX512] Remove masked palignr intrinsics and auto-upgrade them to native IR of vector shuffle and select.

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

8 years agoLLVM_BUILD_32_BITS: Add -m32 with CMAKE_C*_FLAGS. [CMP0056]
NAKAMURA Takumi [Mon, 6 Jun 2016 05:54:55 +0000 (05:54 +0000)]
LLVM_BUILD_32_BITS: Add -m32 with CMAKE_C*_FLAGS. [CMP0056]

With CMP0056, try_compile() uses also CMAKE_EXE_LINKER_FLAG.
It caused mismatch between CMAKE_CXX_FLAGS and CMAKE_EXE_LINKER_FLAGS, to fail to examine CXX_SUPPORTS_CXX11 with -m32.

FYI, before this, try_compile() tries without -m32 regardless of LLVM_BUILD_32_BITS.

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

8 years ago[AVX512] Add PALIGNR shuffle lowering for v32i16 and v16i32.
Craig Topper [Mon, 6 Jun 2016 05:39:10 +0000 (05:39 +0000)]
[AVX512] Add PALIGNR shuffle lowering for v32i16 and v16i32.

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

8 years ago[AVX512] Update tests to show shuffle decoding for vpshuflw/vpshufhw.
Craig Topper [Mon, 6 Jun 2016 05:39:07 +0000 (05:39 +0000)]
[AVX512] Update tests to show shuffle decoding for vpshuflw/vpshufhw.

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

8 years ago[Kaleidoscope][BuildingAJIT] Split up the code-block describing the substitution
Lang Hames [Mon, 6 Jun 2016 05:07:52 +0000 (05:07 +0000)]
[Kaleidoscope][BuildingAJIT] Split up the code-block describing the substitution
of OptimizeLayer for CompileLayer in Chapter 2.

Hopefully this will read a little more clearly.

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

8 years ago[Kaleidoscope][BuildingAJIT] Fix code-blocks in Chapter 2.
Lang Hames [Mon, 6 Jun 2016 04:53:59 +0000 (04:53 +0000)]
[Kaleidoscope][BuildingAJIT] Fix code-blocks in Chapter 2.

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

8 years ago[Kaleidoscope][BuildingAJIT] Add tutorial text for Chapter 2.
Lang Hames [Mon, 6 Jun 2016 03:28:12 +0000 (03:28 +0000)]
[Kaleidoscope][BuildingAJIT] Add tutorial text for Chapter 2.

This chapter discusses IR optimizations, the ORC IRTransformLayer, and the ORC
layer concept itself.

The text is still pretty rough, but I think the main ideas are there. Feedback
is very welcome, as always.

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

8 years agoFix spelling and capitalization in comments. NFC
Nick Lewycky [Mon, 6 Jun 2016 01:51:23 +0000 (01:51 +0000)]
Fix spelling and capitalization in comments. NFC

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

8 years agoTrailing whitespace.
NAKAMURA Takumi [Mon, 6 Jun 2016 00:31:45 +0000 (00:31 +0000)]
Trailing whitespace.

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

8 years agoUntabify.
NAKAMURA Takumi [Mon, 6 Jun 2016 00:31:28 +0000 (00:31 +0000)]
Untabify.

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

8 years agoLICM: Don't sink stores out of loops that may throw.
Eli Friedman [Sun, 5 Jun 2016 22:13:52 +0000 (22:13 +0000)]
LICM: Don't sink stores out of loops that may throw.

Summary:
This hasn't been caught before because it requires noalias or similarly
strong alias analysis to actually reproduce.

Fixes http://llvm.org/PR27952 .

Reviewers: hfinkel, sanjoy

Subscribers: llvm-commits

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

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

8 years agoAdd safety check to InstCombiner::commonIRemTransforms
Sanjoy Das [Sun, 5 Jun 2016 21:17:04 +0000 (21:17 +0000)]
Add safety check to InstCombiner::commonIRemTransforms

Since FoldOpIntoPhi speculates the binary operation to potentially each
of the predecessors of the PHI node (pulling it out of arbitrary control
dependence in the process), we can FoldOpIntoPhi only if we know the
operation doesn't have UB.

This also brings up an interesting profitability question -- the way it
is written today, commonIRemTransforms will hoist out work from
dynamically dead code into code that will execute at runtime.  Perhaps
that isn't the best canonicalization?

Fixes PR27968.

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

8 years agoAdd test case for InstCombiner::commonIRemTransforms; NFC
Sanjoy Das [Sun, 5 Jun 2016 21:17:00 +0000 (21:17 +0000)]
Add test case for InstCombiner::commonIRemTransforms; NFC

The PHI case in commonIRemTransforms was untested; add a trivial test
case.

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

8 years agoFix deadlock in ThreadPool unittest.
Eli Friedman [Sun, 5 Jun 2016 21:15:46 +0000 (21:15 +0000)]
Fix deadlock in ThreadPool unittest.

(Yes, this only deadlocks on a computer with a single core; I'm using
a virtual machine.)

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

8 years ago[Internalize] Test that __stack_chk_{guard, fail} are not internalized.
Davide Italiano [Sun, 5 Jun 2016 19:08:54 +0000 (19:08 +0000)]
[Internalize] Test that __stack_chk_{guard, fail} are not internalized.

r154645 introduced this feature without test. This should have better
coverage now.

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

8 years ago[BitCode] Make sure atomicrmw's argument is an actual PointerType
Filipe Cabecinhas [Sun, 5 Jun 2016 18:43:40 +0000 (18:43 +0000)]
[BitCode] Make sure atomicrmw's argument is an actual PointerType

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

8 years ago[BitCode] Make sure storeatomic's argument is an actual PointerType
Filipe Cabecinhas [Sun, 5 Jun 2016 18:43:33 +0000 (18:43 +0000)]
[BitCode] Make sure storeatomic's argument is an actual PointerType

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

8 years ago[BitCode] Diagnose GEPs with no indices
Filipe Cabecinhas [Sun, 5 Jun 2016 18:43:26 +0000 (18:43 +0000)]
[BitCode] Diagnose GEPs with no indices

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

8 years ago[BitCode] Don't allow constants of void type.
Filipe Cabecinhas [Sun, 5 Jun 2016 18:43:17 +0000 (18:43 +0000)]
[BitCode] Don't allow constants of void type.

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

8 years agoAdd Visual Studio Visualizer for ArrayRef
Mike Spertus [Sun, 5 Jun 2016 18:34:02 +0000 (18:34 +0000)]
Add Visual Studio Visualizer for ArrayRef

Modeled after visualization of llvm::SmallVec

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

8 years ago[PM] Port IndVarSimplify to the new pass manager
Sanjoy Das [Sun, 5 Jun 2016 18:01:19 +0000 (18:01 +0000)]
[PM] Port IndVarSimplify to the new pass manager

Summary:
There are some rough corners, since the new pass manager doesn't have
(as far as I can tell) LoopSimplify and LCSSA, so I've updated the
tests to run them separately in the old pass manager in the lit tests.
We also don't have an equivalent for AU.setPreservesCFG() in the new
pass manager, so I've left a FIXME.

Reviewers: bogner, chandlerc, davide

Subscribers: sanjoy, mcrosier, llvm-commits

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

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

8 years ago[IndVars] Remove -liv-reduce
Sanjoy Das [Sun, 5 Jun 2016 18:01:12 +0000 (18:01 +0000)]
[IndVars] Remove -liv-reduce

It is an off-by-default option that no one seems to use[0], and given
that SCEV directly understands the overflow instrinsics there is no real
need for it anymore.

[0]: http://lists.llvm.org/pipermail/llvm-dev/2016-April/098181.html

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

8 years agofix checks
Sanjay Patel [Sun, 5 Jun 2016 17:54:56 +0000 (17:54 +0000)]
fix checks

update_test_checks.py got confused matching the variable names.

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

8 years ago[InstCombine] allow vector icmp bool transforms
Sanjay Patel [Sun, 5 Jun 2016 17:49:45 +0000 (17:49 +0000)]
[InstCombine] allow vector icmp bool transforms

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

8 years agoadd tests to show missing vector transforms
Sanjay Patel [Sun, 5 Jun 2016 17:32:58 +0000 (17:32 +0000)]
add tests to show missing vector transforms

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

8 years agoregenerate checks
Sanjay Patel [Sun, 5 Jun 2016 17:29:45 +0000 (17:29 +0000)]
regenerate checks

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

8 years agoupdate test to use FileCheck
Sanjay Patel [Sun, 5 Jun 2016 17:13:09 +0000 (17:13 +0000)]
update test to use FileCheck

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

8 years agofix documentation comments and other clean-ups; NFC
Sanjay Patel [Sun, 5 Jun 2016 16:46:18 +0000 (16:46 +0000)]
fix documentation comments and other clean-ups; NFC

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

8 years agoupdate test to use FileCheck
Sanjay Patel [Sun, 5 Jun 2016 16:41:20 +0000 (16:41 +0000)]
update test to use FileCheck

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

8 years agoupdate test to FileCheck
Sanjay Patel [Sun, 5 Jun 2016 16:29:15 +0000 (16:29 +0000)]
update test to FileCheck

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

8 years ago[X86][XOP] Added VPERMIL2PD/VPERMIL2PS raw mask decoding for target shuffle combines
Simon Pilgrim [Sun, 5 Jun 2016 15:21:30 +0000 (15:21 +0000)]
[X86][XOP] Added VPERMIL2PD/VPERMIL2PS raw mask decoding for target shuffle combines

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

8 years ago[X86][XOP] Added VPERMIL2PD/VPERMIL2PS as a target shuffle type
Simon Pilgrim [Sun, 5 Jun 2016 15:01:45 +0000 (15:01 +0000)]
[X86][XOP] Added VPERMIL2PD/VPERMIL2PS as a target shuffle type

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

8 years ago[X86][XOP] Tidied up DecodeVPERMIL2PMask to more closely match DecodeVPERMILPMask.
Simon Pilgrim [Sun, 5 Jun 2016 14:33:43 +0000 (14:33 +0000)]
[X86][XOP] Tidied up DecodeVPERMIL2PMask to more closely match DecodeVPERMILPMask.

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

8 years ago[AVX512] Add support for lowering PALIGNR for v64i8.
Craig Topper [Sun, 5 Jun 2016 06:29:12 +0000 (06:29 +0000)]
[AVX512] Add support for lowering PALIGNR for v64i8.

Could do this for other types to, but this is what's needed to replace the instrinsic with native IR in clang.

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

8 years ago[AVX512] Split command lines and regenerate a test to prepare for a future commit.
Craig Topper [Sun, 5 Jun 2016 06:29:08 +0000 (06:29 +0000)]
[AVX512] Split command lines and regenerate a test to prepare for a future commit.

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

8 years ago[AVX512] Fix PANDN combining for v4i32/v8i32 when VLX is enabled.
Craig Topper [Sun, 5 Jun 2016 05:35:11 +0000 (05:35 +0000)]
[AVX512] Fix PANDN combining for v4i32/v8i32 when VLX is enabled.

v4i32/v8i32 ANDs aren't promoted to v2i64/v4i64 when VLX is enabled.

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

8 years agoFix wrong comment in header /NFC
Xinliang David Li [Sun, 5 Jun 2016 05:18:20 +0000 (05:18 +0000)]
Fix wrong comment in header /NFC

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

8 years agoFix pass declaration order /NFC
Xinliang David Li [Sun, 5 Jun 2016 05:15:45 +0000 (05:15 +0000)]
Fix pass declaration order /NFC

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

8 years ago[PM] Port GCOVProfiler pass to the new pass manager
Xinliang David Li [Sun, 5 Jun 2016 05:12:23 +0000 (05:12 +0000)]
[PM] Port GCOVProfiler pass to the new pass manager

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

8 years ago[PM] code refactoring /NFC
Xinliang David Li [Sun, 5 Jun 2016 03:40:03 +0000 (03:40 +0000)]
[PM] code refactoring /NFC

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

8 years agoDisable the use of std::call_once on PowerPC due to an apparent bug in
Chandler Carruth [Sun, 5 Jun 2016 02:46:01 +0000 (02:46 +0000)]
Disable the use of std::call_once on PowerPC due to an apparent bug in
libstdc++ (or in compilers, or somewhere, I can't track it down) that
causes unittests that use INITIALIZE_PASS to crash.

The analysis I've been able to do is that inside libstdc++'s
implementation of std::call_once, it uses pthread_once, and when that
returns an error code it throws std::system_error which then eventually
calls std::terminate.

Hopefully some of the folks who work on PPC can try to sort out what's
going on here. Until then, they'll have to use the fallback
implementation.

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

8 years agoThreading.h: Update \param. [-Wdocumentation]
NAKAMURA Takumi [Sun, 5 Jun 2016 00:15:44 +0000 (00:15 +0000)]
Threading.h: Update \param. [-Wdocumentation]

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

8 years ago[InstCombine] less 'CI' confusion; NFC
Sanjay Patel [Sun, 5 Jun 2016 00:12:32 +0000 (00:12 +0000)]
[InstCombine] less 'CI' confusion; NFC

Change the name of the ICmpInst to 'ICmp' and the Constant (was a ConstantInt) to 'C',
so that it's hopefully clearer that 'CI' refers to CastInst in this context.

While we're scrubbing, fix the documentation comment and use 'auto' with 'dyn_cast'.

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

8 years ago[SimplifyCFG] Don't kill empty cleanuppads with multiple uses
David Majnemer [Sat, 4 Jun 2016 23:50:03 +0000 (23:50 +0000)]
[SimplifyCFG] Don't kill empty cleanuppads with multiple uses

A basic block could contain:
  %cp = cleanuppad []
  cleanupret from %cp unwind to caller

This basic block is empty and is thus a candidate for removal.  However,
there can be other uses of %cp outside of this basic block.  This is
only possible in unreachable blocks.

Make our transform more correct by checking that the pad has a single
user before removing the BB.

This fixes PR28005.

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

8 years ago[DebugInfo, PDB] Use sparse bitfields for the name map
David Majnemer [Sat, 4 Jun 2016 22:47:39 +0000 (22:47 +0000)]
[DebugInfo, PDB] Use sparse bitfields for the name map

The name map might not be densely packed on disk.  Using a sparse map
will save memory in such situations.

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

8 years ago[InstCombine] allow vector constants for cast+icmp fold
Sanjay Patel [Sat, 4 Jun 2016 22:04:05 +0000 (22:04 +0000)]
[InstCombine] allow vector constants for cast+icmp fold

This is step 1 of unknown towards fixing PR28001:
https://llvm.org/bugs/show_bug.cgi?id=28001

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

8 years ago[X86][XOP] Added VPERMIL2PD/VPERMIL2PS shuffle mask comment decoding
Simon Pilgrim [Sat, 4 Jun 2016 21:44:28 +0000 (21:44 +0000)]
[X86][XOP] Added VPERMIL2PD/VPERMIL2PS shuffle mask comment decoding

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

8 years ago[InstCombine] add test for missing vector optimization
Sanjay Patel [Sat, 4 Jun 2016 21:41:25 +0000 (21:41 +0000)]
[InstCombine] add test for missing vector optimization

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

8 years agoclean-up; NFC
Sanjay Patel [Sat, 4 Jun 2016 21:20:44 +0000 (21:20 +0000)]
clean-up; NFC

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

8 years ago[InstCombine] add test for missing vector optimization
Sanjay Patel [Sat, 4 Jun 2016 21:20:03 +0000 (21:20 +0000)]
[InstCombine] add test for missing vector optimization

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

8 years ago[InstCombine] minimize test case and use FileCheck
Sanjay Patel [Sat, 4 Jun 2016 21:04:59 +0000 (21:04 +0000)]
[InstCombine] minimize test case and use FileCheck

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

8 years agofix formatting, punctuation; NFC
Sanjay Patel [Sat, 4 Jun 2016 20:39:22 +0000 (20:39 +0000)]
fix formatting, punctuation; NFC

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

8 years ago[Analysis] Enabled BITREVERSE as a vectorizable intrinsic
Simon Pilgrim [Sat, 4 Jun 2016 20:21:07 +0000 (20:21 +0000)]
[Analysis] Enabled BITREVERSE as a vectorizable intrinsic

Allows XOP to vectorize BITREVERSE - other targets will follow as their costmodels improve.

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

8 years ago[X86] Add the VR128L/H and VR256L/H to the list of vector register classes for inline...
Craig Topper [Sat, 4 Jun 2016 20:15:08 +0000 (20:15 +0000)]
[X86] Add the VR128L/H and VR256L/H to the list of vector register classes for inline asm constraints. Also fix the comment on the function.

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

8 years ago[LPM] Reinstate r271781 which reinstated r271652 to replace the
Chandler Carruth [Sat, 4 Jun 2016 19:57:55 +0000 (19:57 +0000)]
[LPM] Reinstate r271781 which reinstated r271652 to replace the
CALL_ONCE_... macro in the legacy pass manager with the new
llvm::call_once facility.

Nothing changed sicne the last attempt in r271781 which I reverted in
r271788. At least one of the failures I saw was spurious, and I want to
make sure the other failures are real before I work around them -- they
appeared to only effect ppc64le and ppc64be.

Original commit message of r271781:
----
[LPM] Reinstate r271652 to replace the CALL_ONCE_... macro in the legacy
pass manager with the new llvm::call_once facility.

This reverts commit r271657 and re-applies r271652 with a fix to
actually work with arguments. In the original version, we just ended up
directly calling std::call_once via ADL because of the std::once_flag
argument. The llvm::call_once never worked with arguments. Now,
llvm::call_once is a variadic template that perfectly forwards
everything. As a part of this it had to move to the header and we use
a generic functor rather than an explict function pointer. It would be
nice to use std::invoke here but we don't have it yet. That means
pointer to members won't work here, but that seems a tolerable
compromise.

I've also tested this by forcing the fallback path, so hopefully it
sticks this time.
----

Original commit message of r271652:
----
[LPM] Replace the CALL_ONCE_... macro in the legacy pass manager with
the new llvm::call_once facility.

This facility matches the standard APIs and when the platform supports
it actually directly uses the standard provided functionality. This is
both more efficient on some platforms and much more TSan friendly.

The only remaining user of the cas_flag and home-rolled atomics is the
fallback implementation of call_once. I have a patch that removes them
entirely, but it needs a Windows patch to land first.

This alone substantially cleans up the macros for the legacy pass
manager, and should subsume some of the work Mehdi was doing to clear
the path for TSan testing of ThinLTO, a really important step to have
reliable upstream testing of ThinLTO in all forms.
----

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

8 years agoX86: enable TLS on Windows itanium
Saleem Abdulrasool [Sat, 4 Jun 2016 18:27:22 +0000 (18:27 +0000)]
X86: enable TLS on Windows itanium

Windows itanium is nearly identical to windows-msvc (MS ABI for C, itanium for
C++).  Enable the TLS support for the target similar to the MSVC model.

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

8 years ago[X86][AVX2] Fix v16i16 SHL lowering (PR27730)
Simon Pilgrim [Sat, 4 Jun 2016 16:45:33 +0000 (16:45 +0000)]
[X86][AVX2] Fix v16i16 SHL lowering (PR27730)

The AVX2 v16i16 shift lowering works by unpacking to 2 x v8i32, performing the shift and then truncating the result.

The unpacking is used to place the values in the upper 16-bits so that we can correctly sign-extend for SRA shifts. Unfortunately we weren't ensuring that the lower 16-bits were zero to ensure that SHL correctly shifts in zero bits.

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

8 years ago[AsmPrinter, CodeView] There are some more ways of getting wchar_t
David Majnemer [Sat, 4 Jun 2016 15:40:33 +0000 (15:40 +0000)]
[AsmPrinter, CodeView] There are some more ways of getting wchar_t

C++ has a builtin type called wchar_t.  Clang also provides a type
called __wchar_t in C mode.

In C mode, wchar_t can be a typedef to unsigned short.

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

8 years ago[CodeView] Fix a busted assert in TypeTableBuilder::writeClass
David Majnemer [Sat, 4 Jun 2016 15:40:31 +0000 (15:40 +0000)]
[CodeView] Fix a busted assert in TypeTableBuilder::writeClass

It was checking for Union when it should have checked for Interface.

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

8 years ago[CodeView] Validate the vftable offset
David Majnemer [Sat, 4 Jun 2016 15:40:29 +0000 (15:40 +0000)]
[CodeView] Validate the vftable offset

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

8 years ago[TypeStreamMerger] visitUnknownMember was supposed to be visitUnknownType
David Majnemer [Sat, 4 Jun 2016 15:40:27 +0000 (15:40 +0000)]
[TypeStreamMerger] visitUnknownMember was supposed to be visitUnknownType

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

8 years ago[InstCombine][MMX] Extend SimplifyDemandedUseBits MOVMSK support to MMX
Simon Pilgrim [Sat, 4 Jun 2016 13:42:46 +0000 (13:42 +0000)]
[InstCombine][MMX] Extend SimplifyDemandedUseBits MOVMSK support to MMX

Add the MMX implementation to the SimplifyDemandedUseBits SSE/AVX MOVMSK support added in D19614

Requires a minor tweak as llvm.x86.mmx.pmovmskb takes a x86_mmx argument - so we have to be explicit about the implied v8i8 vector type.

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