X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCsymt.c;h=ed9c4fb5bfef072be5a6be12c3b4123861881872;hb=24db07e65dc37c465c586f173fcf7d591d5bd7bc;hp=7ffa31be56e08e7a4b28652d2912aa562db3e4c8;hpb=3570da68562c27b71343d2f28927a69f5241687d;p=fw%2Fsdcc diff --git a/src/SDCCsymt.c b/src/SDCCsymt.c index 7ffa31be..ed9c4fb5 100644 --- a/src/SDCCsymt.c +++ b/src/SDCCsymt.c @@ -1173,10 +1173,17 @@ checkSClass (symbol * sym, int isProto) } /* if absolute address given then it mark it as - volatile */ - if (IS_ABSOLUTE (sym->etype)) - SPEC_VOLATILE (sym->etype) = 1; + volatile -- except in the PIC port */ + +#if !OPT_DISABLE_PIC + /* The PIC port uses a different peep hole optimizer based on "pCode" */ + if (!TARGET_IS_PIC) +#endif + + if (IS_ABSOLUTE (sym->etype)) + SPEC_VOLATILE (sym->etype) = 1; + /* global variables declared const put into code */ /* if no other storage class specified */ if (sym->level == 0 && @@ -2023,7 +2030,11 @@ printTypeChain (sym_link * start, FILE * of) fprintf (of, "unkown * "); break; case ARRAY: - fprintf (of, "[] "); + if (DCL_ELEM(type)) { + fprintf (of, "[%d] ", DCL_ELEM(type)); + } else { + fprintf (of, "[] "); + } break; } } @@ -2454,7 +2465,8 @@ sym_link *typeFromStr (char *s) s++; break; default: - werror(E_INTERNAL_ERROR,"typeFromStr"); + werror(E_INTERNAL_ERROR, __FILE__, __LINE__, + "typeFromStr: unknown type"); break; } if (IS_SPEC(r) && usign) { @@ -2500,7 +2512,7 @@ initCSupport () for (bwd = 0; bwd < 3; bwd++) { - sym_link *l; + sym_link *l = NULL; switch (bwd) { case 0: @@ -2540,12 +2552,12 @@ initCSupport () if (tofrom) { sprintf (buffer, "__fs2%s%s", ssu[su], sbwd[bwd]); - __conv[tofrom][bwd][su] = funcOfType (_mangleFunctionName(buffer), __multypes[bwd][su], floatType, 1, options.float_rent); + __conv[tofrom][bwd][su] = funcOfType (buffer, __multypes[bwd][su], floatType, 1, options.float_rent); } else { sprintf (buffer, "__%s%s2fs", ssu[su], sbwd[bwd]); - __conv[tofrom][bwd][su] = funcOfType (_mangleFunctionName(buffer), floatType, __multypes[bwd][su], 1, options.float_rent); + __conv[tofrom][bwd][su] = funcOfType (buffer, floatType, __multypes[bwd][su], 1, options.float_rent); } } }