From 6cef00bbb8c0e1e640411cf2eb4f9ea5016c9f8f Mon Sep 17 00:00:00 2001 From: borutr Date: Fri, 27 Apr 2007 06:42:06 +0000 Subject: [PATCH] * src/SDCCast.c: fixed feature request #1547512: Redundant strings linked when using sizeof("abc") git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4770 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- ChangeLog | 4 ++++ src/SDCCast.c | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/ChangeLog b/ChangeLog index 46b63248..15ff63b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2007-04-27 Borut Razem + + * + 2007-04-23 Borut Razem * doc/sdccman.lyx, src/SDCCmain.c: diff --git a/src/SDCCast.c b/src/SDCCast.c index 88e0fa18..9c929bd9 100644 --- a/src/SDCCast.c +++ b/src/SDCCast.c @@ -2569,6 +2569,12 @@ decorateType (ast * tree, RESULT_TYPE resultType) there is resultType available */ dtr = tree->right; break; + case SIZEOF: + /* don't allocate string if it is a sizeof argument */ + ++noAlloc; + dtr = decorateType (tree->right, resultTypeProp); + --noAlloc; + break; default: dtr = decorateType (tree->right, resultTypeProp); break; @@ -4257,6 +4263,7 @@ decorateType (ast * tree, RESULT_TYPE resultType) /* change the type to a integer */ { int size = getSize (tree->right->ftype); + SNPRINTF(buffer, sizeof(buffer), "%d", size); if (!size && !IS_VOID(tree->right->ftype)) werrorfl (tree->filename, tree->lineno, E_SIZEOF_INCOMPLETE_TYPE); @@ -4266,6 +4273,7 @@ decorateType (ast * tree, RESULT_TYPE resultType) tree->right = tree->left = NULL; TETYPE (tree) = getSpec (TTYPE (tree) = tree->opval.val->type); + return tree; /*------------------------------------------------------------------*/ -- 2.30.2