[PATCH] D33675: [DAG] Do MergeConsecutiveStores again before Instruction Selection
Evgeny Astigeevich via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 29 14:00:56 PST 2017
Hi Eli,
Thank you for the clue. We will check if this is DAGCombiner::MergeStoresOfConstantsOrVecElts.
Thanks,
Evgeny
From: "Friedman, Eli" <efriedma at codeaurora.org>
Date: Wednesday, 29 November 2017 at 20:07
To: Nirav Davé <niravd at google.com>, "reviews+D33675+public+bfdf04a775858364 at reviews.llvm.org" <reviews+D33675+public+bfdf04a775858364 at reviews.llvm.org>
Cc: James Y Knight <jyknight at google.com>, "hfinkel at anl.gov" <hfinkel at anl.gov>, "llvm-dev at redking.me.uk" <llvm-dev at redking.me.uk>, Reid Kleckner <rnk at google.com>, James Molloy <James.Molloy at arm.com>, Evgeny Astigeevich <Evgeny.Astigeevich at arm.com>, "simon.dardis at mips.com" <simon.dardis at mips.com>, Nicolai Hähnle-Montoro <nhaehnle at gmail.com>, Javed Absar <Javed.Absar at arm.com>, llvm-commits <llvm-commits at lists.llvm.org>
Subject: Re: [PATCH] D33675: [DAG] Do MergeConsecutiveStores again before Instruction Selection
The example looks like there's a bug in the handling of truncstores: DAGCombiner::MergeStoresOfConstantsOrVecElts does "StoreInt |= C->getAPIntValue().zextOrTrunc(SizeInBits);", which doesn't correctly mask away the extra bits of a truncstore. Not sure how to write a testcase, though.
-Eli
On 11/29/2017 11:01 AM, Nirav Davé wrote:
Disabled in ARM in r319331.
On Wed, Nov 29, 2017 at 12:31 PM, Nirav Davé <niravd at google.com<mailto:niravd at google.com>> wrote:
Sure If no one objects I'll disable this for just the ARM target.
-Nirav
On Wed, Nov 29, 2017 at 12:23 PM, Evgeny Astigeevich via Phabricator <reviews at reviews.llvm.org<mailto:reviews at reviews.llvm.org>> wrote:
eastig added a comment.
Hi Nirav,
Could you please revert the changes? They affected Arm targets (Thumb2 code).
The following sequence of stores:
MOVS r0,#0xe5
STRB r0,[r6,#0x1e5]
MOVS r0,#0xe4
STRB r0,[r6,#0x1e4]
MOVS r0,#0xe6
STRB r0,[r6,#0x1e6]
MOVS r0,#0xe7
STRB r0,[r6,#0x1e7]
is optimised into
MVN r0,#0x1b
STR r0,[r6,#0x1e4]
causing incorrect data to be written.
We are working on a reproducer.
Thanks,
Evgeny Astigeevich
The Arm Compiler Optimisation team
Repository:
rL LLVM
https://reviews.llvm.org/D33675
--
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171129/e6b20fb6/attachment-0001.html>
More information about the llvm-commits
mailing list