From 7b2461d22f66cb8f296e2faef4aa075e2aa8a6ca Mon Sep 17 00:00:00 2001 From: tecodev Date: Mon, 21 May 2007 21:16:14 +0000 Subject: [PATCH] * src/pic16/glue.c (pic16_initPointer): avoid assertion, emit better error message instead * src/pic/pcoderegs.c (pCodeOptime2pCodes): keep register state intact git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4810 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- ChangeLog | 6 ++++++ src/pic/pcoderegs.c | 3 ++- src/pic16/glue.c | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 94899640..9c9826d6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-05-21 Raphael Neider + + * src/pic16/glue.c (pic16_initPointer): avoid assertion, emit better + error message instead + * src/pic/pcoderegs.c (pCodeOptime2pCodes): keep register state intact + 2007-05-21 Maarten Brock * src/mcs51/peeph.def (257.b): disabled to fix bug 1721024 diff --git a/src/pic/pcoderegs.c b/src/pic/pcoderegs.c index 25cdf421..8713a30d 100644 --- a/src/pic/pcoderegs.c +++ b/src/pic/pcoderegs.c @@ -565,7 +565,8 @@ int pCodeOptime2pCodes(pCode *pc1, pCode *pc2, pCode *pcfl_used, regs *reg, int newpc->seq = pc2->seq; //fprintf (stderr, "%s:%d(%s): Remove2pcodes (CLRF reg, ..., MOVF reg,W)\n", __FILE__, __LINE__, __FUNCTION__); - Remove2pcodes(pcfl_used, pc2, NULL, reg, 0); + //Remove2pcodes(pcfl_used, pc2, NULL, reg, 0); + pc2->destruct(pc2); //total_registers_saved++; // debugging stats. } } else if((PCI(pc1)->op == POC_CLRF) && (PCI(pc2)->op == POC_IORFW) ){ diff --git a/src/pic16/glue.c b/src/pic16/glue.c index 02447f32..158aa8a5 100644 --- a/src/pic16/glue.c +++ b/src/pic16/glue.c @@ -391,7 +391,7 @@ value *pic16_initPointer (initList * ilist, sym_link *toType) goto wrong; /* try it the old way first */ - if ((val = constExprValue (expr, FALSE))) + if (expr->etype && (val = constExprValue (expr, FALSE))) return val; /* ( ptr + constant ) */ @@ -422,7 +422,7 @@ value *pic16_initPointer (initList * ilist, sym_link *toType) a variable or address of an array element */ if (IS_AST_OP (expr) && expr->opval.op == '&') { /* address of symbol */ - if (IS_AST_SYM_VALUE (expr->left)) { + if (IS_AST_SYM_VALUE (expr->left) && expr->left->etype) { val = AST_VALUE (expr->left); val->type = newLink (DECLARATOR); if(SPEC_SCLS (expr->left->etype) == S_CODE) { -- 2.30.2