From: johanknol Date: Fri, 22 Feb 2002 11:44:44 +0000 (+0000) Subject: fixed bug #514865 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=132d28cff95da487f685d09cad513f19060bc205;p=fw%2Fsdcc fixed bug #514865 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@1948 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/src/SDCCast.c b/src/SDCCast.c index ff46ece9..ea0a777a 100644 --- a/src/SDCCast.c +++ b/src/SDCCast.c @@ -2655,6 +2655,15 @@ decorateType (ast * tree) tree->opval.val->type); return tree; } + /* a left shift must be done with at least 16bits */ + if ((tree->opval.op==LEFT_OP) && (getSize(LTYPE(tree))<2)) { + // insert a cast + tree->left = + decorateType (newNode (CAST, + newAst_LINK(copyLinkChain(LTYPE(tree))), + tree->left)); + SPEC_NOUN(tree->left->left->ftype)=V_INT; + } /* if only the right side is a literal & we are shifting more than size of the left operand then zero */ if (IS_LITERAL (RTYPE (tree)) &&