From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id D73A93858407; Mon, 20 Mar 2023 08:37:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D73A93858407 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1679301444; bh=Z6CJ/SeuSXHdl90oYhdH7Iy83NEIC4CBTJf17yRtTus=; h=From:To:Subject:Date:In-Reply-To:References:From; b=fxJEzV3ve2T8jkZrjnaSKM+ytVOTt1aKslAImWQsFpN7WCCFok03AHxYRDaJjcQyE m7fTADVP4OsJ+KogaXQxcgp6hixVBL7yTRm4z/2X772Tr4IAPzhpoSVUxuGOh46KFC jgDSLCS8TDT5BwBW7bQpLfhzmGiKXBzRJL2ANaFk= From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/109189] Format string warnings in gcc/config/h8300/h8300.cc under MigW-W64/MSYS2 Date: Mon, 20 Mar 2023 08:37:19 +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: 13.0 X-Bugzilla-Keywords: internal-improvement X-Bugzilla-Severity: normal X-Bugzilla-Who: jakub at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: 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: cc Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D109189 Jakub Jelinek changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek --- Given that all values printed that way are 0..0xff or 0..0xffff, I think be= tter would be to cast those to unsigned int and use %u, or cast to long and keep using %ld. C/C++ guarantee int is at least 16-bit and long is at least 32-bit, which is enough to hold all those values. So say instead of fprintf (file, "#%ld", (INTVAL (x) >> 8) & 0xff); use fprintf (file, "#%ld", (long) ((INTVAL (x) >> 8) & 0xff)); or fprintf (file, "#%u", (unsigned) ((INTVAL (x) >> 8) & 0xff)); (the & 0xff cases can be even (int) and %d) rather than the even longer fprintf (file, "#" HOST_WIDE_INT_PRINT_DEC, (INTVAL (x) >> 8) & 0xff);=