From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13387 invoked by alias); 18 May 2004 01:49:49 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 13215 invoked by uid 48); 18 May 2004 01:49:48 -0000 Date: Tue, 18 May 2004 16:17:00 -0000 From: "ken dot tsukahara at tmt-d dot co dot jp" To: gcc-bugs@gcc.gnu.org Message-ID: <20040518014945.15506.ken.tsukahara@tmt-d.co.jp> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug c/15506] New: wrong cast from long to long long X-Bugzilla-Reason: CC X-SW-Source: 2004-05/txt/msg01942.txt.bz2 List-Id: on x86 family(32bit) Linux RedHat9 : GCC 3.2.2, 3.2.3 SUSE9 : GCC 3.3.1, 3.4.1 A long long value which is casted from a long value (< 0) seems to be wrong. $ cat longlong.c #include int main(int argc, char **argv) { long long ll = 0xc0000000; unsigned long ul = 0xc0000000; long sl = 0xc0000000; printf("long long : 0x%llx\n", ll); printf("u_long : 0x%lx\n", ul); printf("long : 0x%lx\n", sl); printf("u_long -> long long : 0x%llx\n", (long long)ul); printf("long -> long long : 0x%llx\n", (long long)sl); return 0; } $ cc -o longlong longlong.c $ ./longlong long long : 0xc0000000 u_long : 0xc0000000 long : 0xc0000000 u_long -> long long : 0xc0000000 long -> long long : 0xffffffffc0000000 -- Summary: wrong cast from long to long long Product: gcc Version: 3.4.1 Status: UNCONFIRMED Severity: normal Priority: P1 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ken dot tsukahara at tmt-d dot co dot jp CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15506