+2008-08-04 Raphael Neider <rneider AT web.de>
+
+ * doc/sdccman.lyx,
+ * src/pic16/device.h,
+ * src/pic16/glue.c,
+ * src/pic16/main.c: enable --optimize-goto by default
+
+ * device/lib/pic16/Makefile.common.in: suppress removed option
+
+ * src/pic16/gen.c,
+ * src/pic16/genutils.c: avoid too long relative branches (#2031890)
+
2008-07-30 Borut Razem <borut.razem AT siol.net>
- * src\pic16\device.c, src\pic16\glue.c, src\pic16\pcode.c:
+ * src/pic16/device.c, src/pic16/glue.c, src/pic16/pcode.c:
applied patch 22032433: PIC16: fix constant strings,
thanks Mauro Giachero
2008-07-12 Philipp Klaus Krause <pkk AT spth.de>
* src/z80/mappings.i: Implemented RFE #1919415
* src/z80/peeph-z80.def: Implemented RFE #1919415, #1861376,
- #1880202, #1914434, prepared for RFE #1703943
+ #1880202, #1914434, prepared for RFE #1703943
2008-07-12 Philipp Klaus Krause <pkk AT spth.de>
CFLAGS += --fommit-frame-pointer
CFLAGS += --obanksel=9
CFLAGS += --denable-peeps
-CFLAGS += --optimize-goto
+#CFLAGS += --no-optimize-goto
CFLAGS += --optimize-cmp
CFLAGS += --optimize-df
\end_inset
--optimize-goto Try to use (conditional) BRA instead of GOTO.
+-no-optimize-goto Do not use (conditional) BRA instead of GOTO.
\end_layout
\begin_layout Description
#define REG_ADDR(r) ((r)->isBitField ? (((r)->address)>>3) : (r)->address)
#define OF_LR_SUPPORT 0x00000001
-#define OF_OPTIMIZE_GOTO 0x00000002
+#define OF_NO_OPTIMIZE_GOTO 0x00000002
#define OF_OPTIMIZE_CMP 0x00000004
#define OF_OPTIMIZE_DF 0x00000008
if (nonnull)
{
pic16_emitpcode (POC_BTFSC, pic16_newpCodeOpBit(pic16_aopGet (AOP (left), offset, FALSE, FALSE), posbit - 1, 0, PO_GPR_REGISTER));
- pic16_emitpcode (POC_BRA, pic16_popGetLabel (rIfx.condition ? rIfx.lbl->key : tlbl->key));
+ pic16_emitpcode (POC_GOTO, pic16_popGetLabel (rIfx.condition ? rIfx.lbl->key : tlbl->key));
}
else
{
if (rIfx.condition)
{
emitSKPZ;
- pic16_emitpcode (POC_BRA, pic16_popGetLabel (rIfx.lbl->key)); /* to false */
+ pic16_emitpcode (POC_GOTO, pic16_popGetLabel (rIfx.lbl->key)); /* to false */
}
else
{
if (ifx)
{
if (emitBra)
- pic16_emitpcode (POC_BRA, pic16_popGetLabel (rIfx.lbl->key));
+ pic16_emitpcode (POC_GOTO, pic16_popGetLabel (rIfx.lbl->key));
ifx->generated = 1;
}
pic16_emitpLabel (tlbl->key);
if (lit)
{
if (rIfx.condition)
- pic16_emitpcode (POC_BRA, pic16_popGetLabel (rIfx.lbl->key)); /* to false */
+ pic16_emitpcode (POC_GOTO, pic16_popGetLabel (rIfx.lbl->key)); /* to false */
ifx->generated = 1;
}
else
{
/* rIfx.lbl might be far away... */
emitSKPZ;
- pic16_emitpcode (POC_BRA, pic16_popGetLabel (rIfx.lbl->key)); /* to false */
+ pic16_emitpcode (POC_GOTO, pic16_popGetLabel (rIfx.lbl->key)); /* to false */
}
else
{
{
if (ifx)
{
- pic16_emitpcode (POC_BRA, pic16_popGetLabel (rIfx.lbl->key));
+ pic16_emitpcode (POC_GOTO, pic16_popGetLabel (rIfx.lbl->key));
ifx->generated = 1;
}
pic16_emitpLabel (tlbl->key);
tmplbl = newiTempLabel( NULL );
pic16_emitpcode(POC_TSTFSZ, pic16_popGet(AOP(left), 0));
pic16_emitpcode(POC_BRA, pic16_popGetLabel(tmplbl->key));
- pic16_emitpcode(POC_BRA, pic16_popGetLabel(rIfx->lbl->key));
+ pic16_emitpcode(POC_GOTO, pic16_popGetLabel(rIfx->lbl->key));
pic16_emitpLabel(tmplbl->key);
ifx->generated = 1;
}
/* turn GOTOs into BRAs -- added by RN 2004-11-16 */
- if(pic16_options.opt_flags & OF_OPTIMIZE_GOTO) {
+ if(!(pic16_options.opt_flags & OF_NO_OPTIMIZE_GOTO)) {
pic16_OptimizeJumps();
}
#define OFMSG_LRSUPPORT "--flr-support"
-#define OPTIMIZE_GOTO "--optimize-goto"
-#define OPTIMIZE_CMP "--optimize-cmp"
-#define OPTIMIZE_DF "--optimize-df"
+#define NO_OPTIMIZE_GOTO "--no-optimize-goto"
+#define OPTIMIZE_CMP "--optimize-cmp"
+#define OPTIMIZE_DF "--optimize-df"
char *alt_asm=NULL;
char *alt_link=NULL;
/* optimization options */
{ 0, OPT_BANKSEL, &pic16_options.opt_banksel, "set banksel optimization level (default=0 no)", CLAT_INTEGER },
{ 0, "--denable-peeps", &pic16_enable_peeps, "explicit enable of peepholes"},
- { 0, OPTIMIZE_GOTO, NULL, "try to use (conditional) BRA instead of GOTO"},
+ { 0, NO_OPTIMIZE_GOTO, NULL, "do NOT use (conditional) BRA instead of GOTO"},
{ 0, OPTIMIZE_CMP, NULL, "try to optimize some compares"},
{ 0, OPTIMIZE_DF, NULL, "thoroughly analyze data flow (memory and time intensive!)"},
}
#endif
- if (ISOPT(OPTIMIZE_GOTO)) {
- pic16_options.opt_flags |= OF_OPTIMIZE_GOTO;
+ if (ISOPT(NO_OPTIMIZE_GOTO)) {
+ pic16_options.opt_flags |= OF_NO_OPTIMIZE_GOTO;
return TRUE;
}