From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26514 invoked by alias); 29 Dec 2014 19:03:05 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 26436 invoked by uid 48); 29 Dec 2014 19:02:59 -0000 From: "olegendo at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/53988] [SH] tst Rm,Rn not used for QI/HImode Date: Mon, 29 Dec 2014 19:03:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 4.8.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: enhancement X-Bugzilla-Who: olegendo at gcc dot gnu.org X-Bugzilla-Status: REOPENED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_status cf_reconfirmed_on resolution everconfirmed Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2014-12/txt/msg02900.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53988 Oleg Endo changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Last reconfirmed| |2014-12-29 Resolution|FIXED |--- Ever confirmed|0 |1 --- Comment #4 from Oleg Endo --- The change in r192982 results in wrong code: int test (short x, short* y, int z, int w) { return x & y[0] ? z : w; } mov.w @r5,r1 // sign extended y[0], bits[31:16] = 1 tst r4,r1 // r4 bits [31:16] undefined bf .L5 mov r7,r0 rts nop .align 1 .L5: rts mov r6,r0 The *tst_t_zero insns blindly accept subregs. They have to check whether both operands have been sign extended or at least one of them has been zero extended (to mask out the unwanted high bits).