From 489af5d14b2291aa2e2118819060b12be7e1a0f8 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Tue, 18 Jun 1996 06:32:43 -0400 Subject: [PATCH] (pointer_int_sum): Convert integer to both signedness and precision of sizetype. From-SVN: r12291 --- gcc/c-typeck.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 06ef4931986..d2abd729042 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -2649,8 +2649,10 @@ pointer_int_sum (resultcode, ptrop, intop) /* Convert the integer argument to a type the same size as sizetype so the multiply won't overflow spuriously. */ - if (TYPE_PRECISION (TREE_TYPE (intop)) != TYPE_PRECISION (sizetype)) - intop = convert (type_for_size (TYPE_PRECISION (sizetype), 0), intop); + if (TYPE_PRECISION (TREE_TYPE (intop)) != TYPE_PRECISION (sizetype) + || TREE_UNSIGNED (TREE_TYPE (intop)) != TREE_UNSIGNED (sizetype)) + intop = convert (type_for_size (TYPE_PRECISION (sizetype), + TREE_UNSIGNED (sizetype)), intop); /* Replace the integer argument with a suitable product by the object size. Do this multiplication as signed, then convert to the appropriate -- 2.30.2