registers that have not been assigned proper liveranges,
fixes #
1469504 and #
1474602,
(pCodeRegOptimizeRegUsage): fixed typo in comment
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4117
4a8a32a2-be11-0410-ad9d-
d568d2c75423
+2006-04-24 Raphael Neider <rneider AT web.de>
+
+ * src/pic/pcoderegs.c (OptimizeRegUsage): do not optimize
+ registers that have not been assigned proper liveranges,
+ fixes #1469504 and #1474602,
+ (pCodeRegOptimizeRegUsage): fixed typo in comment
+
2006-04-24 Borut Razem <borut.razem AT siol.net>
* device/examples/main8051.c: deleted - it was removed from CVS
2006-04-24 Borut Razem <borut.razem AT siol.net>
* device/examples/main8051.c: deleted - it was removed from CVS
fprintf(stderr,"Reg: %s\n",reg->name);
*/
fprintf(stderr,"Reg: %s\n",reg->name);
*/
+ /* Catch inconsistently set-up live ranges
+ * (see tracker items #1469504 + #1474602)
+ * FIXME: Actually we should rather fix the
+ * computation of the liveranges instead...
+ */
+ if (!reg || !reg->reglives.usedpFlows
+ || !reg->reglives.assignedpFlows)
+ {
+ //fprintf( stderr, "skipping reg w/o liveranges: %s\n", reg ? reg->name : "(unknown)");
+ continue;
+ }
+
if(reg->type == REG_SFR || reg->type == REG_STK || reg->isPublic || reg->isExtern|| reg->isFixed) {
//fprintf(stderr,"skipping SFR: %s\n",reg->name);
continue;
}
if(reg->type == REG_SFR || reg->type == REG_STK || reg->isPublic || reg->isExtern|| reg->isFixed) {
//fprintf(stderr,"skipping SFR: %s\n",reg->name);
continue;
}
pcfl_used = setFirstItem(reg->reglives.usedpFlows);
pcfl_assigned = setFirstItem(reg->reglives.assignedpFlows);
pcfl_used = setFirstItem(reg->reglives.usedpFlows);
pcfl_assigned = setFirstItem(reg->reglives.assignedpFlows);
#if 0
/* This is currently broken (need rewrite to correctly
#if 0
/* This is currently broken (need rewrite to correctly
- * hamdle arbitrary pCodeOps instead of registers only). */
+ * handle arbitrary pCodeOps instead of registers only). */
if (!pic14_options.disable_df)
optimizeDataflow ();
#endif
if (!pic14_options.disable_df)
optimizeDataflow ();
#endif