From 987d1d292f2bd086d656325a759f7c22ca6c1a40 Mon Sep 17 00:00:00 2001 From: bernhardheld Date: Mon, 23 Feb 2004 07:57:04 +0000 Subject: [PATCH] src/SDCCast.c (decorateType): fixed bug #902362 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3228 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- ChangeLog | 4 ++++ src/SDCCast.c | 11 ++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9d041170..313cfb6a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-02-23 Bernhard Held + + * src/SDCCast.c (decorateType): fixed bug #902362 + 2004-02-21 Bernhard Held * device/include/Makefile.in (install): fixed by replacing spaces diff --git a/src/SDCCast.c b/src/SDCCast.c index 57435e5d..3b422b8f 100644 --- a/src/SDCCast.c +++ b/src/SDCCast.c @@ -2287,7 +2287,10 @@ decorateType (ast * tree, RESULT_TYPE resultType) upon tree->opval.op, if resultType can be propagated */ resultTypeProp = resultTypePropagate (tree, resultType); - dtl = decorateType (tree->left, resultTypeProp); + if (tree->opval.op == '?') + dtl = decorateType (tree->left, RESULT_TYPE_NONE); + else + dtl = decorateType (tree->left, resultTypeProp); /* if an array node, we may need to swap branches */ if (tree->opval.op == '[') @@ -2791,7 +2794,8 @@ decorateType (ast * tree, RESULT_TYPE resultType) { tree->type = EX_VALUE; tree->opval.val = valDiv (valFromType (LETYPE (tree)), - valFromType (RETYPE (tree))); + valFromType (RETYPE (tree)), + resultType == RESULT_TYPE_CHAR ? FALSE : TRUE); tree->right = tree->left = NULL; TETYPE (tree) = getSpec (TTYPE (tree) = tree->opval.val->type); @@ -2946,7 +2950,8 @@ decorateType (ast * tree, RESULT_TYPE resultType) { tree->type = EX_VALUE; tree->opval.val = valMult (valFromType (LETYPE (tree)), - valFromType (RETYPE (tree))); + valFromType (RETYPE (tree)), + resultType == RESULT_TYPE_CHAR ? FALSE : TRUE); tree->right = tree->left = NULL; TETYPE (tree) = getSpec (TTYPE (tree) = tree->opval.val->type); -- 2.39.5