home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Exec 5 / CD_Magazyn_EXEC_nr_5.iso / Programy / Programowanie / vbcc07e.lzx / vbcc / doc / History < prev    next >
Encoding:
Text File  |  2001-02-12  |  49.7 KB  |  1,119 lines

  1. vbcc is (c) in 1995-99 by Volker Barthelmann
  2.  
  3. (cgm68k):  changes in the code generator for m68k
  4. (cgi386):  changes in the code generator for i386
  5. (cgppc):   changes in the code generator for ppc
  6. (cgalpha): changes in the code generator for alpha
  7. (cla68k):  changes in the C library for amiga68k
  8. (clappc):  changes in the C library for amigappc
  9. (vc):      changes in the compiler frontend
  10.  
  11.  
  12. Changes since V0.7
  13.  
  14. - fixed bug with CONVERT shorter->longer and postincrement (cgm68k)
  15. - extended type-system
  16. - STRING+CONST gets folded
  17. - added -madd (cgppc)
  18. - removed bogus references to host limits.h
  19. - improved register handling with SETRETURN
  20. - extended function-info for interprocedural analysis
  21. - some bug fixes regarding declarations
  22. - fixed bug with inlining
  23. - better removal of dead blocks
  24. - started ColdFire support
  25. - fixed alignment problems with WarpOS ABI (cgppc)
  26.  
  27. Changes since V0.6d
  28.  
  29. - bug fix: typedefs of functions were not handled correctly
  30. - bug fix: fgets read one character too many (cla68k,clappc,clawos)
  31. - removed tail-recursion from killsp()
  32. - bug fix: incorrect use of associativity in certain rare cases
  33. - bug fix: redeclarations of inline-assembly functions left inline
  34.            assembly
  35. - bug fix: loop-unrolling had problems with loop-conditions that are
  36.            pointer comparisons
  37. - bug fix: conversion of fp -> unsigned char/short generated incorrect
  38.            assembly in special cases with FPU (cgm68k)
  39. - bug fix: fmul./fdiv. was generated incorrectly (cgppc)
  40. - bug fix: av_globals was calculated wrong (ouch!)
  41. - bug fix: adding a local optimizer-variable to a function which had
  42.            no variables in nesting 1 before
  43.  
  44. Changes since V0.6c
  45.  
  46. - support for auto-opening of libraries
  47. - bug fix: SUBIFP in strength-reduction
  48. - gets/fgets must not always return 0 when EOF
  49. - triton-code by Frank Wille included
  50. - bug fix: problems with folding pointer constants
  51. - bug fix: loop-unrolling with non-constant number of iterations
  52. - added HUGE_VAL (cla68k,clappc)
  53. - replaced fprintf(stderr by printf( (cla68k,clappc)
  54. - fixed an internal error with -no-multiple-ccs (cgppc)
  55. - included scheduler for ppc by Frank Wille (vscppc)
  56. - added support for scheduler to vc
  57. - bug fix: -1/a != -a (ouch!)
  58. - bug fix: folding of KONST|DREFOBJ was broken with optimization
  59. - some work on memory-cse
  60.  
  61. Changes since V0.6b
  62.  
  63. - added support for unsigned int size_t
  64. - added small data support for PPC (cgppc)
  65. - started code generator for c16x
  66. - added __near, __far, __chip and __saveds for 68k+PPC (cgm68k/cgppc)
  67. - added support for target-specific variable attributes
  68. - started small data support for PPC (cgppc)
  69. - improved caching of memory contents
  70. - Julian Kinraid adapted vconfig to new vc (vca68k)
  71. - warning 164 is not displayed if a function is called
  72. - bug fix: update is not allowed with rA==rD (cgppc)
  73. - changed external reference in tan.s (m040.lib) to non-pc-relative (cla68k)
  74.  
  75. Changes since V0.6a
  76.  
  77. - bug fix: fp-expressions with constants were sometimes rearranged
  78.            even without -fp-associative
  79. - bug fix: nested function-calls with stack-arguments and ORDERED_PUSH
  80. - several small changes to libvc.a/libm.a by Frank Wille (cla68k/clappc)
  81. - better use of loads with offsets (cgppc)
  82. - better tmpnam provided by A. M. Jorge (cla68k/clappc)
  83. - fwrite buffered now (clppc)
  84. - bug fix: there was a problem with GETRETURN
  85. - bug fix: bugs with argument passing in registers fixed
  86. - bug fix: a bug with TEST and UNSIGNED was introduced
  87. - bug fix: __reg without explicit type-/storage-class-specifier
  88. - bug fix: const float/double sometimes causes "#fp-constant"-problem (cgm68k)
  89. - added -double-push
  90. - negative values in reg_parm used for passign arguments in regs and stack
  91. - added -cf to vc
  92. - bug fix: format string for error 101 was broken
  93. - bug fix: conversions unsigned long->pointer in data-reg were broken (cgm68k)
  94. - bug fix: TEST without following branch could cause internal error (cgm68k)
  95. - new alib by Stephen Williams added
  96. - extra argument to reg_parm added, alpha/ppc cgs modified (cgalpha/cgppc)
  97. - bug fix: __reg was ignored in function-definitions with HAVE_REGPARMS
  98. - bug fix: switch_statement has to clear nocode
  99.  
  100. Changes since V0.6
  101.  
  102. - bug fix: functions returning structs
  103. - bug fix: str(n)icmp in extra.lib (cla68k/clappc)
  104. - added some simple elimination of redundant compare/bccs
  105. - added loop-unrolling for certain loop-invariant number of iterations
  106. - fixed names of some dos-varargs-functions in vargs.h (cla68k/clappc)
  107. - -use-lmw added (cgppc)
  108. - some work on -peephole (cgppc)
  109. - bug fix: signed right-shifts (cgppc)
  110. - newmalloc made standard (cla68k)
  111. - fixed some bugs in addressing (cgm68k)
  112. - BeginIO added to libamiga.a
  113. - fixed certain type-conversions (cgppc)
  114. - some bug fixes (cgalpha)
  115. - added NOEXE to config-files using PhxAss
  116. - bug fix: replaced buggy strncpy (cla68k/clappc)
  117. - support for stack-frames larger than 32KB added (cgppc)
  118. - some changes in the code-generator for ppc (cgppc)
  119. - new pasm can replace branches >16bit (config-files changed)
  120.  
  121. Changes since V0.5k
  122.  
  123. - -ml option added to vc
  124. - remove() and rename() added (clappc)
  125. - vc accepts +file anywhere now
  126.  
  127. Changes since V0.5j
  128.  
  129. - -setccs added (cgppc)
  130. - bug fix: some bugs for ppc fixed (cgppc)
  131. - bug fix: problems with SUBPFP in ic.c
  132. - bug fix: do_refs() had problems with pointer-constants (cgm68k)
  133. - bug fix: similar problem for i386 (cgi386)
  134. - obsolete EOF-check in main() removed
  135. - format for -cc/-ccv changed (vc)
  136. - + does not need the full path anymore (vc)
  137.  
  138. Changes since V0.5i
  139.  
  140. - fixed minor bugs in strcmp, strncmp and memcmp (cla68k,clappc)
  141. - fixed certain problems with regargs
  142. - some bug-fixes (cgppc,cgalpha)
  143. - bug-fix: KONST|DREFOBJ was incorrectly propagated as constant
  144. - hacked fd2lib to create libcall-includes (cla68k)
  145.  
  146. Changes since V0.5h
  147.  
  148. - -ul added to vc
  149. - -no-regnames added (cgppc)
  150. - changed gen_cond() void
  151. - support for struct-return and HAVE_REGPARMS
  152. - several bug-fixes (cgppc,cgalpha)
  153. - removed debugging-output in printzul
  154. - warning 208 extended to simple endless loops
  155. - cyclic dependencies in load_reg_parms are handled now
  156. - several bug fixes (cgppc)
  157.  
  158. Changes since V0.5g
  159.  
  160. - argument-registers were assigned before rewriting array/function-types
  161. - r2 is reserved (cgppc)
  162. - warning 168 is no more displayed for main()
  163. - bug-fix: alignment of floating-point-constants not always ok (cgppc,cgi386)
  164. - bug-fix: sub const with short types (cgppc)
  165. - function-inlining works with register-parameters
  166. - added stdarg-support (cgppc)
  167. - leaf-functions don't creat a stack-frame (cgppc)
  168. - some bug fixes (cgppc)
  169. - several changes in handling of alignments
  170. - added support for modulo (cgppc)
  171. - some modifications on alignments (cgm68k,cgppc)
  172. - -amiga-align added (cgppc)
  173. - mysupp included in extra.lib (cla68k)
  174. - some docs updated
  175. - added memread_id, memwrite_id and memwrite_completely to vsc.h
  176. - added inline-assembly-functions
  177.  
  178. Changes since V0.5f
  179.  
  180. - added examples of stdarg.h into the codegen-docs
  181. - -save-fp added (cgi386)
  182. - bug fix: conversions int<->char and %esi etc. (cgi386)
  183. - warning 170 turned off by default
  184. - bug fix: corrected prototype for strerror() (cla68k)
  185. - no-builtins added (cgalpha)
  186. - added some builtin faunctions (cgalpha)
  187. - ?: now works with non-scalars
  188. - dtgen is easier to use when not building a cross-compiler
  189. - __typeof added
  190. - conversions of DREFOBJ sometimes generated illegal assembly on
  191.   alpha (cgalpha)
  192.  
  193. Changes since V0.5e
  194.  
  195. - cg_copyright added
  196. - increased default-values for unroll-size and inline-size
  197. - some changes for PPC (cgppc)
  198. - bug fix: declarations with empty identifiers were accepted
  199. - bug fix: read_config() read one byte too much in vc (vc)
  200. - bug fix: warning 226 added
  201. - some optimizations for Alpha (cgalpha)
  202. - more conservative handling of copy-propagation and structs/unions
  203. - better handling of alignment of compund types
  204. - bug fix: local_regs() generated duplicate FREEREGs if a register
  205.            was exchanged in free_hreg()
  206. - bug fix: moveq was used incorrectly sometimes (cgm68k)
  207. - bug fix: problems with must_convert() for m68k (cgm68k)
  208. - bug fix: sometimes scratch registers were reused too early with
  209.            a op= b
  210.  
  211. Changes since V0.5d
  212.  
  213. - added warnings 224 and 225
  214. - bug fix: parsing of format-strings works better now
  215. - inlined calls don't increase <function_calls>
  216. - some work on the code-generator for alpha
  217. - bug fix: function-inlining didn't work with register parameters
  218. - clearing am before gen_dc
  219.  
  220. Changes since V0.5c
  221.  
  222. - new Makefile
  223. - better support for crosscompilers and emulation of data types
  224. - bug fix: several bugs fixed
  225. - a68k/amiga68k became m68k
  226.  
  227. Changes since V0.5b
  228.  
  229. - bug fix: corrupt alias info in frequency-reduction
  230. - bug fix: loop1 in flow.c
  231. - bug fix: arith_opt() converted uninitialized var
  232. - uses ffree for i386 (cgi386)
  233. - added supp.h/c; started to separate C-specific parts
  234.  
  235. Changes since V0.5a
  236.  
  237. - setvbuf works better now (cla68k)
  238. - bug fix: float/double->unsigned char/short works correct with FPU now (cga68k)
  239. - -longalign added (cgi386)
  240. - bug fix: mieee.lib closed wrong library (cla68k)
  241. - bug fix: typo in default rule of Makefile
  242. - added warning 222
  243. - bug fix: addressing-modes with 68020+ (cga68k)
  244. - bug fix: local register allocation when optimizing
  245. - bug fix: create_loop_headers had problems with empty basic blocks
  246. - bug fix: enforcer hit and incorrect warnings in certain while- and
  247.            for-expressions when optimizing
  248. - bug fix: parsing of certain declarations was buggy
  249.  
  250. Changes since V0.5
  251.  
  252. - loop-unrolling now works with multiple ccs
  253. - work on the ppc code generator (cgppc)
  254. - bug fix: old-style function-definitions with '...' didn't give a diagnostic
  255. - bug fix: missing ',' in function calls didn't give a diagnostic
  256. - bug fix: certain missing brackets around initializers didn't give a
  257.            diagnostic
  258. - bug fix: in certain cases wrong code for divisions was generated (cgi386)
  259. - bug fix: optimizing local register allocation had problems with USEQ2ASZ
  260. - local_regs() tries to use best reg with SETRETURN
  261. - started support for default argument passing in registers
  262. - bug fix: rearranging of array-accesses was buggy with DREFOBJs
  263. - bug fix: loading of parameters into registers was sometimes wrong if there
  264.            was a jump to the first basic block after optimization
  265. - bug fix: casting to void and conditional-expressions with void caused
  266.            problems
  267.  
  268. Changes since V0.4f
  269.  
  270. - bug fix: there was a bug with local register allocation and optimizing
  271. - bug fix: t_max[CHAR] was wrong :-) (cga68k, cgi386, cgppc)
  272. - ixemul-support updated (cla68k)
  273. - bug fixed: initialized arrays with unspecified size always increased size
  274.              of stack frame
  275. - work on the i386 code generator (cgi386)
  276. - fixed bug with register parameters and optimizer
  277. - a4 is saved when geta4 is called (cga68k)
  278.  
  279. Changes since V0.4e
  280.  
  281. - small improvements on the i386 code generator (cgi386)
  282. - bug fix: minor bug in loop-unrolling with TEST
  283. - bug fix: there was a check missing in type_expr/CALL
  284. - bug fix: do not use addressing modes if base register was freed (cga68k)
  285. - added new m040.lib by Aki M Laukkanen (cla68k)
  286. - added elf-support and -elf option to i386 code generator (cgi386)
  287. - bug fixed: _ctype_.c in vcs.lib had been built with large data (cla68k)
  288. - __reg added
  289. - added support for parameter passing in registers
  290. - small changes in local optimizing register allocation
  291.  
  292. Changes since V0.4d
  293.  
  294. - arguments for mieee-functions are passed in different order now; rebuilt
  295.   mieee.lib (cga68k, cla68k)
  296. - changed directory-structure, Makefile and frontend
  297. - bug fixed: certain struct initializations got the alignment wrong (bug
  298.              was probably introduced recently)
  299. - included new PhxLnk
  300. - included startup-code for ixemul.library by Frank Wille
  301. - changed default vc.config (-Ivinclude: put at the end)
  302. - better error handling when parsing enums
  303. - fixed a bug with struct-assigns and improved them a bit (cga68k)
  304. - moved a } in killsp()
  305. - slightly better error-handling of function-declarations
  306. - warning 121 only applies to storage-class extern
  307. - bug fixed: declaration for remove() was missing in stdio.h (cla68k)
  308. - bug fixed: extra ','s in function calls cause a diagnostic now
  309. - added a missing ';' in vconfig-sources
  310. - added missing includes and removed incorrect ',' in vbrowse-sources
  311.  
  312. Changes since V0.4c
  313.  
  314. - bug fixed: delayed-popping was corrupt in certain cases (cga68k, cgi386)
  315. - cleanup_cg() added
  316. - shortcut() added
  317. - fixed bug in the optimzer (av.c and regs.c)
  318. - modified handling of character-constants with multiple chars
  319. - cleaned up a lot of internal things and using the target's arithmetic
  320.   where necessary - required changes in the code generators
  321. - simple-regs will assign scratch-registers again if no functions are called
  322. - fixed bug in simple-regs
  323.  
  324. Changes since V0.4b
  325.  
  326. - -no-multiple-ccs added
  327. - warning 119 is not displayed for static vars any more
  328. - bug fixed: global copy propagation probably didn't really do anything
  329. - better support for multiple condition code registers
  330. - started code-generator for ppc
  331. - changed directory-structure
  332.  
  333. Changes since V0.4a
  334.  
  335. - bug fixed: the new PUSH still didn't work ok in all cases (cga68k)
  336. - bug fixed: certain (useless) comparisons between unsigneds and constants
  337.              generated wrong code
  338.  
  339. Changes since V0.4
  340.  
  341. - bug fixed: isalpha must not be true for anything but a-z/A-Z (cla68k)
  342. - new PhxLnk
  343. - bug fixed: aliasing info was incorrect in some mustconvert-cases
  344. - bug fixed: the assert-macro didn't work (cla68k)
  345. - bug fixed: the offset of addressing modes was not cleared generating
  346.              problems with the new PUSH (cga68k)
  347. - bug fixed: assign() had problems with qualified floats/doubles (cga68k)
  348.  
  349. Changes since V0.3i
  350.  
  351. - rebuilt libraries with -O2 (cla68k)
  352. - warning 216 added
  353. - bug fixed: initializations of structs containing unnamed bitfields were
  354.              not handled correctly
  355. - [f|s]printf and [f|s]scanf are always recognized if declared correctly
  356. - modified cp.c to use aliasing info
  357.  
  358. Changes since V0.3h
  359.  
  360. - bug fixed: aliasing info with arrays and structs wasn't always correct
  361. - #pragma opt added
  362. - added __v0[s|f]printf to vc.lib and modified stdio.h (cla68k)
  363. - added replacing printf/scanf-like functions
  364. - warning 215 added
  365. - warning 214 added
  366. - looking at format strings of printf/scanf and similar functions
  367. - #pragma printflike/scanflike added
  368. - handling of #pragma changed a bit
  369. - warning 213 added
  370. - bug fixed: calls strlen, strcpy and memcpy were inlined even if they had
  371.              no external linkage
  372. - warning 212 added
  373. - warning 211 added
  374. - bug fixed: t_max[UNSIGNED|LONG] wasn't set correctly (cga68k)
  375. - warning 210 added
  376. - warning 170 displays line number
  377. - INIC supported for error-messages
  378. - changed ierror-macro and eliminated multiple __FILE__-expansions reducing
  379.   size of executable a bit
  380. - improved debugging output (cga68k)
  381. - vc prints size of generated executable with -v (vca68k)
  382. - vc puts temporary files in T: unless -notmpfile is specified (vca68k)
  383. - improved debugging output (cga68k)
  384. - added geta4() (cla68k)
  385. - moved a few killsp()s
  386. - added elementary source-level-debugging helps (cga68k)
  387. - added -g to activate symbol-debugging with PhxAss (cga68k)
  388.  
  389. Changes since V0.3g
  390.  
  391. - bug fixed: ceil() and floor() have been missing in m881.lib (cla68k)
  392. - bug fixed: prototype for fputs was wrong (cla68k)
  393. - improved pushing of larger objects (cga68k)
  394. - added chdir() to extra.lib (cla68k)
  395. - bug fixed: sometimes dc.l xyz(a4) was generated (cga68k)
  396. - fixed some memory-leaks with alias-info
  397. - bug fixed: always_reached was not reliable
  398. - bug fixed: frequency-reduction sometimes created the wrong type if a
  399.              computation (but not the whole IC) was moved
  400. - slightly modified calc_movable()
  401. - used old version of always_reached again
  402. - address-of struct/union/array ICs were sometimes not moved out of loops
  403. - redesigned handling of used/changed objects and aliasing information
  404.  
  405. Changes since V0.3f
  406.  
  407. - bug fixed: space for at least one var on the stack has been allocated
  408.              even if no var was ever used
  409. - changed optimizing register assignment slightly
  410. - bug fixed: type-based alias-optimization wasn't always correct
  411. - bug fixed: the new reaching-definitions did not handle compound types
  412. - bug fixed: strength-reduction created problems with certain configurations
  413.              of nested loops and splittable induction-vars
  414. - bug fixed: strength-reduction of x-ind_var did not negate the induction
  415. - vbcc built itself, vc and vcpp succesfully under NetBSD-Amiga 1.1
  416. - alignment of arrays in structures now depends on the array type
  417. - rebuilt mieee.lib, vc.lib and vcs.lib to use new return type passing (cla68k)
  418. - modified returning of larger types and added -no-fp-return and
  419.   -no-mreg-return (cga68k)
  420. - returning of structures in registers is allowed
  421. - 8bit constants are copied in registers for 060 again (cga68k)
  422. - elimination of a dead GETRETURN does not count as a change any more
  423. - moved the computation of areached out of the frequency-reduction-loop
  424. - made printing of fp-constants a bit better (cga68k)
  425. - added -gas (cga68k)
  426. - bug fixed: in certain cases a TEST #const was generated
  427. - included new fd2lib/MakeALIB.script/DoPktn.c by Johnny Tevessen
  428. - removed some gcc-specific-#includes from amiga.lib (cla68k)
  429. - modified representation of reaching-definitions and its use in
  430.   constant-propagation and frequency-/strength-reduction
  431. - bug fixed: declaration for fputs() was missing in stdio.h (cla68k)
  432. - added -no-alias-opt
  433. - alias-analysis by type added; currently used in:
  434.   - active-variable-analysis
  435.   - reaching-definitions-analysis
  436.   - available-expression-analysis
  437.  
  438. Changes since V0.3e
  439.  
  440. - changed vbrowse to be compatible with new error-mechanism
  441. - changed error-mechanism somewhat
  442. - added -iso
  443. - meaning of -ansi changed
  444. - strength-reduction uses the same induction variable for equivalent
  445.   operations now
  446. - bug fixed: another one with addressing-modes (cga68k)
  447. - bug fixed: end of basic blocks was not always correctly recognized and
  448.              illegal addressing modes could have been used when optimizing
  449.              (cga68k)
  450. - minor changes to time.h (cla68k)
  451. - lea is sometimes used for ADDI2P/SUBIFP (cga68k)
  452. - improved use of postincrement (cga68k)
  453. - pea is used with addressing-modes now (cga68k)
  454. - constant 0s are not copied into data registers any more (cga68k)
  455. - changed global register-allocation; starts with outermost loops and works
  456.   a bit different now
  457. - bug fixed: if/while/for did generate corrupt code if the condition was
  458.              constant 0 and the body contained a labeled-statement
  459. - bug fixed: simple_regs() did assign variables to scratch-registers even
  460.              if the function contained function-calls sometimes
  461. - bug fixed: there was a hardcoded sizeof(POINTER)==4 in szof()
  462. - bug fixed: changed the init-value for local_offset from 4 to maxalign
  463.              and adapted probj2()
  464. - some peephole-optimizations added
  465. - -fp-associative added
  466. - bug fixed: ICs with one source equal to the target were considered as a
  467.              use(gen) preventing elimination of such ICs in loops
  468. - bug fixed: sometimes branch-instructions were moved incorrectly
  469. - strength-reduction added
  470. - bug fixed: peephole() did some not-so-nice things when folding pointer
  471.              operations; probably not fatal in 68k code-generator
  472. - moved some parts from machine.c to other files and made the separation
  473.   of machine-dependent parts somewhat nicer
  474.  
  475. Changes since V0.3d
  476.  
  477. - bug fixed: frequency-reduction (and perhaps cse, too) got the type of
  478.              added temporaries wrong for ADDRESS/ADDI2P etc.
  479. - bug fixed: sometimes the test in for/while loops was corrupt if it contained
  480.              type-conversions in optimizing compilation
  481. - bug fixed: function-inlining did complain about functions returning struct
  482. - bug fixed: there was a problem with copy-propagation and structs
  483. - bug fixed: labs() was called abs() (cla68k)
  484. - added inlining of several functions to the header files (cla68k)
  485. - bug fixed: vbcc tried to inline varargs functions which usually resulted
  486.              in an error
  487. - frequency-reduction added
  488. - bug fixed: constant folding when optimizing did a division by zero when
  489.              folding a floating-point division with ]-1;0[ v ]0;1[
  490. - bug fixed: the 32bit division functions in vc.lib were buggy and got in
  491.              an (almost) endless loop with certain arguments; as vbcc
  492.              uses them it could get stuck when folding certain constants.
  493. - bug fixed: certain definitions haven't been set correctly at the start
  494.              of a function leading to wrong reaching definitions and corrupt
  495.              constant propagation in some cases
  496. - bug fixed: copy propagation did replace argument of ADDRESS
  497. - vc passes -+ through to vcpp (vca68k)
  498.  
  499. Changes since V0.3c
  500.  
  501. - vbcc accepts a space after '=' in its option (used by vc)
  502. - improved copy propagation; it was very conservative sometimes
  503. - bug fixed: there were parentheses missing somewhere in cp.c
  504. - bug fixed: restoring of scratch registers after function-calls was buggy
  505.              in optimizing compilation
  506. - distributed Makefile should be ready to use with vbcc now, Makefile.generic
  507.   should be easy to use with another compiler
  508. - polished Makefiles (added rules for vbccs etc.)
  509. - -o option of vc works with intermediate files, too (vca68k)
  510. - extra.lib included in source tree (cla68k)
  511. - vconfig included in source tree
  512. - bug fixed: the putc-macro in stdio.h wasn't ok, I think (cla68k)
  513. - vcpp was configured to accept C++-comments by default - this has been
  514.   corrected; add '-+' to the -pp lines in vc.config if you insist
  515. - -strip-path added
  516. - vc and vbcc accept -o=executable now
  517. - changed the call to vcpp in vc.config (no stdout-redirection any
  518.   more) (vca68k)
  519. - bug fixed: mysupp.c closed dup'ed files twice (cla68k)
  520. - replaced strstr in vc.lib by a version written by Kasper Graversen (cla68k)
  521. - -dontkeep-initialized-data causes vbcc not to keep initialized data in
  522.   memory and can therefore reduce memory consumption
  523. - warning 118 is no ANSI-violation
  524. - warning 207 added
  525. - checking of type-specifiers/qualifiers is now more strict
  526. - changed text for error 58
  527. - bug fixed: some initializations with additional braces were rejected
  528. - some minor changes to vc.doc (vca68k)
  529. - changed text for error 93 (errors.h, errors.doc, VBCCMessages.guide)
  530. - bug fixed: register assignment in optimizing compilation made errors
  531.              due to wrong BRA interpretation
  532.  
  533.  
  534. Changes since V0.3b
  535.  
  536. - minor changes to loop.c
  537. - bug fixed: fread didn't always return correct results (cla68k)
  538. - bug fixed: there were some 'extern's missing in vbc.h causing e.g. the
  539.              old problems with source layout
  540. - rebuilt vcpp to allow more than 10 open files (ouch!)
  541. - bug fixed: under certain circumstances global common subexpressions
  542.              were not replaced correctly if use and one evaluation were
  543.              in the same basic block
  544.  
  545.  
  546. Changes since V0.3a
  547.  
  548. - vc.lib/vcs.lib/mieee.lib/m881.lib/m040.lib/vbcc/vc rebuilt
  549. - div/ldiv should be conforming now
  550. - ungetc should now work even if it is the first action to a stream (cla68k)
  551. - fflush(0) only affects files in output mode (cla68k)
  552. - removed const qualifier from the ctype-array (cla68k)
  553. - changed the ctype-functions to use the array (cla68k)
  554. - added #definition of NULL to stdio.h (hope that's correct) (cla68k)
  555. - changed several stdio-functions and added line-buffering (cla68k)
  556. - bug fixed: setbuf/setvbuf was broken (cla68k)
  557. - bug fixed: vbrowse didn't ask for gadtools.library V39
  558. - vbrowse opens a window that fits on a standard workbench by default now
  559. - bug fixed: there was a bug in newmalloc.c (cla68k)
  560. - bug fixed: included new version of the pooled memory routines for amiga.lib
  561.              and rebuilt amiga.lib; hopefully works with OS2.0 now (cla68k)
  562. - bug fixed: struct-declaration-structs have been freed too early; current
  563.              solution is not very nice, but should work
  564. - bug fixed: there should not be restrictions on the source layout any more
  565.              (problem with look-ahead fixed)
  566. - bug fixed: identifiers longer than MAXI could cause problems
  567. - bug fixed: passing incomplete types to functions without prototypes did
  568.              not cause a diagnostic
  569. - changed the internal representation of structs/unions/prototypes
  570.   - some non-conforming things in the source corrected
  571.   - hardcoded limit for struct sizes etc. eliminated
  572.   - type of incomplete structs should be ok now
  573. - bug fixed: code after an always false if etc. wasn't generated even if
  574.              it contained a label
  575.  
  576.  
  577. Changes since V0.3
  578.  
  579. - vc passes options starting with -D or -I through to the preprocessor -
  580.   the format for -pp/-ppv has changed (vca68k)
  581. - vc writes names of objects for the linker to a temporary file if they are
  582.   very long (vca68k)
  583. - vc supports option -nostdlib to prevent linking with standard-startup/libs
  584.   additional entries -l2/-l2v are necessary in vc.config (vca68k)
  585. - bug fixed: perror was called prerror in the library - ouch; Make-scripts
  586.              changed and vc.lib/vcs.lib rebuilt (cla68k)
  587. - bug fixed: perror-prototype was incorrect (cla68k)
  588. - added missing prototype for strerror() to string.h (cla68k)
  589. - added missing prototype for strtok() to string.h (cla68k)
  590. - rebuilt amigas.lib and vcs.lib (cla68k)
  591. - bug fixed: constant data in code-sections was addressed via a4 with -sd
  592.              (cga68k)
  593. - bug fixed: conversion between pointers and integers may not be omitted in
  594.              most cases (cga68k)
  595. - branches after TEST unsigned are changed now and tst may be omitted (cga68k)
  596. - rebuilt amiga.lib (cla68k)
  597. - bug fixed: fd2lib didn't work with varargs-functions expecting the
  598.              argument-list in a data register (cla68k)
  599. - added several varargs-functions to fd2lib (cla68k)
  600. - edited the Make#?lib.scripts (cp->copy, *.c->#?.c) (cla68k)
  601. - added a few xdefs to amiga.lib (cla68k)
  602.  
  603.  
  604. Changes since V0.2v
  605.  
  606. - changed the version number :-)
  607.  
  608.  
  609. Changes since V0.2u
  610.  
  611. - rebuilt vc.lib and vcs.lib
  612. - bug fixed: the vbcc-compiled cpp did not close opened files; now the
  613.              routines in mysupport.c close all opened files at exit
  614. - bug fixed: there was still an error that caused wrong line numbers to be
  615.              printed in messages when an external preprocessor was used
  616. - compiling with NO_OPTIMIZER #defined and linking without av.o, cp.o, cse.o,
  617.   flow.o, loop.o and rd.o produces a smaller executable that doesn't
  618.   include the global optimizer
  619. - compiled the cpp from the lcc-distribution with vbcc and changed vc.config
  620.   to call this one rather than dcpp (vca68k)
  621. - bug fixed: removed some float.h scratch from limits.h (cla68k)
  622. - bug fixed: some code generation errors fixed (cga68k)
  623. - bug fixed: addressing-modes were sometimes used where they shouldn't (cga68k)
  624. - bug fixed: sometimes wrong code was generated for a op= b; expressions
  625. - bug fixed: some optimizer routines sometimes called mymalloc(0) which
  626.              caused mymalloc to abort with C-libraries returning a null
  627.              pointer; fixed by changing the size to 1 in mymalloc (not
  628.              very nice, but simple)
  629. - added alternative malloc-routines that use the Amiga's AllocPooled-Rotuines
  630.   (libsrc/stdlib/newmalloc) (cla68k)
  631. - bug fixed: in the handling of switch-statements the addressing-mode-pointers
  632.              were set to zero too early and therefore later overwritten
  633.              with scratch
  634. - bug fixed: in some places memory that was already free'd was accessed under
  635.              certain circumstances
  636. - replacing multiplications by shifts was not done in recent versions (cga68k)
  637. - some minor code generation improvements (cga68k)
  638. - bug fixed: copies of local auto variables of inlined functions got
  639.              non-empty identifiers which caused corrupt code generation
  640.              under certain circumstances
  641. - bug fixed: function-inlining didn't work with return-values that must be
  642.              passed via pointer
  643. - bug fixed: variables in IDENTIFIER-nodes were searched with find_var()
  644.              in gen_code() again, rather than using a copy from
  645.              type_expression(); this generated corrupt code in certain cases
  646.              of function-inlining
  647. - rebuilt showerr and tovbr using small-data with new PhxLnk
  648. - added special inlining of strlen() and strcpy()
  649. - bug fixed: the amiga68k code generator assumed long-alignment with
  650.              inline_memcpy
  651. - bug fixed: tst may not be omitted if operand is unsigned (cga68k)
  652. - bug fixed: inline_memcpy was not only used when optimizing
  653. - bug fixed: the line number displayed in diagnostics were sometimes wrong
  654.              if an external preprocessor with # <line> "file" was used
  655. - bug fixed: function inlining messed up labels of static local vars
  656.  
  657.  
  658. Changes since V0.2t
  659.  
  660. - removed any 060-specific modulo-handling again (060 has div?l.l) (cga68k)
  661. - some minor code generation improvements with arithmetic instructions and
  662.   constants (cga68k)
  663. - warning for not correctly handled empty struct-declarations added
  664. - bug fixed: initializations of incomplete structs resulted in infinite
  665.              error loops
  666. - improved diagnostics regarding incomplete types
  667. - bug fixed: nested calls to inlined functions were broken
  668. - address-of instructions are subject to common-subexpression-elimination
  669. - bug fixed: function-inlining sometimes assigned the arguments to the wrong
  670.              variables
  671. - #pragma only-inline on/off added
  672. - some associativity optimizations are done with ADDI2P, too
  673.  
  674.  
  675. Changes since V0.2s
  676.  
  677. - some minor changes and bug fixes on vbrowse
  678. - program showerr added
  679. - bug fixed: if the return value was moved to an address register this was
  680.              supposed to set the condition codes (cga68k)
  681. - addq #const,a7 is no longer supposed to destroy condition-codes (cga68k)
  682. - bug fixed: sometimes the popping of function arguments was moved before
  683.              a call (cga68k)
  684. - added #pragma type to display the type of an expression
  685. - bug fixed: declarations of functions within functions were buggy in 0.2r,
  686.              because the prototype of the inner function was freed to early
  687. - bug fixed: vbcc assumed that "fmove.l fpx,ea" sets condition-codes for
  688.              ea (cga68k)
  689. - bug fixed: TEST-instructions were omitted even if the type was different
  690.              (could probably only happen with dirty things) (cga68k)
  691. - bug fixed: offsets for temporary buffers for scratch-registers were
  692.              sometimes incorrectly calculated (only without optimizing);
  693.              scanf() of the recent mieee.lib and m040.lib versions was
  694.              broken due to that bug
  695. - bug fixed: string constants are only allowed as initalizers for array of
  696.              char now
  697. - bug fixed: handling of long float/double is now a bit better
  698. - changed flags of a few error messages
  699. - bug fixed: problem with unexpected end of file errors fixed and some
  700.              improvements in killsp() and translation_unit()
  701. - function calls are never separated from the corresponding PUSHs now (this
  702.   might confuse the delayed popping of code-generators)
  703. - if all successors of a block have the same instruction at the beginning
  704.   it is moved to the predecessor in certain cases
  705. - space for local variables is better used in optimizing compilation now
  706. - function inlining doesn't increase label-numbers any more
  707. - handling of local registers and pointer dereferencing improved a bit
  708.   (temporary vars that get dereferenced should almost always be
  709.   assigned a proper register now)
  710. - bug fixed: rearranging of array-accesses was buggy in 0.2s
  711. - bug fixed: a previous declaration of a function was not visible in the
  712.              function definition in 0.2s
  713. - changed the ctype macros a bit (cla68k)
  714. - bug fixed: use of addressing modes was buggy in 0.2s (therefore the
  715.              last mieee.lib was broken) (cga68k)
  716. - code generation for modulo improved for 020+ (incl. 060) (cga68k)
  717.  
  718.  
  719. Changes since V0.2r
  720.  
  721. - bug fixed: conversions between unsigned<->floating point should now
  722.              always be correct with mieee.lib (cga68k) (cla68k)
  723.              mieee.lib rebuilt
  724. - if -noasm is specified the .asm file is no longer created
  725. - gen_vars() now does not create output if there were errors or -noasm
  726.   was specified (this also fixes a bug that created infinite internal
  727.   errors after certain corrupt initializers)
  728. - bug fixed: vbcc did not correctly recognize if opening of the input file
  729.              failed in V0.2q/r
  730. - some optimizations to improve array accesses
  731. - VARADR objects are subject for copy propagation now
  732. - add/sub with constant addresses gets folded (opt only)
  733. - divsl.l is not used when -cpu=68060 is selected (cga68k)
  734. - switch-statements can be implemented by SUB/TEST/BEQ sequences rather
  735.   than COMPARE/BEQ sequences (selectable with SWITCHSUBS)
  736. - bug fixed: no error for duplicate case labels was printed
  737. - bug fixed: detecting of loops did identify loops with jumps out of
  738.              the loop as normal loops
  739. - bug fixed: scope of function prototypes should now be correct
  740. - bug fixed: function parameters were not marked as DEFINED and therefore
  741.              redefinition of function parameters did not cause errors
  742.  
  743. Changes since V0.2q
  744.  
  745. - if several basic blocks have the single same successor and the last
  746.   last instruction of those statements is identical it is moved to the
  747.   common successor
  748. - for CPUs>=68040 8bit constants are not copied to registers (cga68k)
  749. - popping of function arguments is done one instruction before a TEST inst.
  750.   (I thought this was necessary to avoid certain tst-instructions, because
  751.   my manual says addq #x,a7 changes condition codes - however this seems
  752.   to be wrong) (cga68k)
  753. - Thorsten Schaaps' preprocessor integrated into vbcc
  754.   files vbpp.h and preproc.c added
  755. - new options:
  756.   - -nested-comments allows nested comments (not ANSI conforming)
  757.   - -cpp-comments allows C++ style comments (not ANSI conforming)
  758.   - -macro-redefintion allows redefinition of macros (not ANSI conforming)
  759.   - -no-trigraphs prevents expansion of trigraphs (not ANSI conforming)
  760.   - -no-preprocessor prevents use of the bultin preprocessor
  761.   - -E only preprocesses the file to <file>.i
  762.  
  763.  
  764. Changes since V0.2p
  765.  
  766. - bug fixed: strncat() did not append a 0, but behaved like strncpy (cla68k)
  767. - bug fixed: sizeof(uncomplete type) did not cause an error message
  768. - bug fixed: wrong code was generated for ?: if the condition evaluated
  769.              to a scratch-var pointing somewhere
  770. - bug fixed: pointer:0 and 0:pointer was not allowed in conditional-exp
  771. - bug fixed: delayed popping produced wrong code with nested function calls
  772. - support for #line directive of most preprocessors added
  773. - several additions made to must_convert()  (cga68k)
  774. - realloc() added to vc.lib (cla68k)
  775. - target-specific optimization options have been separated from the
  776.   -O flag
  777. - the Amiga68k code generator now accepts the following flags to replace
  778.   the former corresponding flags in the -O option:  (cga68k)
  779.   - -use-framepointer
  780.   - -no-addressing-modes
  781.   - -no-delayed-popping
  782. - bit 12 (4096) in -O activates function inlining; previously defined
  783.   functions are inlined in their caller, depending on the size of the
  784.   function
  785. - new option -inline-size can be used to in-/decrease the number of
  786.   functions to be inlined; default=30 - higher values mean more functions
  787.   get inlined
  788.  
  789.  
  790. Changes since V0.2n/0.2o
  791.  
  792. - new option -optpasses=n sets the maximum number of optimizer passes
  793. - bug fixed: ADDI2P with a short integer sometimes was not converted if the
  794.   target was a data register
  795. - constant data is placed in the code sections as long as -const-in-data
  796.   is not specified (cga68k)
  797. - m040.lib started (cla68k)
  798. - unnecessary tst instructions are sometimes eliminated (cga68k)
  799. - constants -128<=x<128 are not copied in a register for SETRETURN and PUSH
  800. - COMPARE x,#0 should now always be converted to TEST x
  801. - bug fixed: a label-statement at the end of a block caused an error
  802. - bug fixed: sometimes still used type node was freed in alg_opt
  803. - bug fixed: unsigned function arguments were sometimes converted to signed
  804. - calling scheme for ieee and ldiv functions changed (cga68k)
  805. - usage of addressing modes with ieee and ldiv functions prohibited (cga68k)
  806. - bug fixed: files opened for append were deleted, oops (cla68k)
  807. - use of addressing modes slightly changed (cga68k)
  808. - modf, ldexp and frexp added to mieee.lib and m881.lib (cla68k)
  809. - bug fixed: unsigned integers were not allowed in case labels
  810. - bug fixed: push problem
  811. - bug fixed: cmp x,#0 was sometimes converted to tst x without changing the
  812.   following branching instruction (cga68k)
  813. - for and while loops are generated differently when optimizing is
  814.   activated (first testing of the loop condition can sometimes be deleted)
  815. - bug fixed: isquickkonst2 now tests for 0<x<=8 rather than 0<=x<=8 (ouch) (cga68k)
  816. - a>>0=a<<0=a and a few other algebraic optimizations added
  817. - insert_const2() added and insert_const() changed
  818. - saverestoreregs() now has a stack for the pushed register-lists (cga68k)
  819.   (removed again, because saveregs/restoreregs has now been removed and
  820.    mechanism changed)
  821. - bug fixed: delayed popping of function arguments corrected (cga68k)
  822. - delayed popping and omitting of framepointer can now be turned on
  823.   separately (256 for framepointer, 512 for delayed popping)
  824. - bug fixed: stackoffset was sometimes incorrectly calculated
  825. - internal mechanism for passing function return values changed, structure
  826.   returns should be reentrant now
  827.   some library routines may have to be recompiled
  828.   mieee.lib was rebuilt to use the new mechanism (cla68k)
  829. - op a,b->scratchvar; move scratchvar->c is combined to op a,b->c
  830. - handling of optimizations slightly changed
  831. - bug fixed: open_out() allocated a buffer one byte too small if the input
  832.   file contained no period
  833.  
  834. - bit 2... in -O option activate heavy optimizations
  835.   - scratchvars are not assigned to registers during IC generation
  836.   - labels are optimized and a flowgraph is constructed
  837.   - branches to branches, branches to the following instruction etc. are
  838.     optimised and unreachable code is eliminated
  839.   - constants are propagated and folded
  840.   - common subexpressions are eliminated
  841.   - copies are propagated
  842.   - active variables are analysed and dead assignments eliminated
  843.   - temporary variables are recognized and assigned to registers
  844.   - registers are assigned differently using information on active variables
  845.     and loop structure
  846.  
  847. - new source files added/changed:
  848.   - opt.h : declarations etc. used in optimization routines
  849.   - opt.c : general routines, peephole optimizations and control of
  850.             optimization passes
  851.   - flow.c: construction of flowgraphs, jump optimizations and other
  852.             control-flow related routines
  853.   - regs.c: register allocation
  854.   - av.c  : analysis of active variables and elimination of dead assignments
  855.   - rd.c  : analysis of reaching definitions, constant propagation and
  856.             constant folding
  857.   - cse.c : common subexpression elimination
  858.   - cp.c  : copy propagation
  859.   - loop.c: analysis of loops and optimizations in loops
  860.  
  861. - the following warnings have been added
  862.   - use of variable before its initialization (with optimizer only)
  863.   - dead assignments (opt only)
  864.   - definition of global functions without prior declaration
  865.   - non-void functions without return-statements
  866.   - assignment in comparison context
  867.   - weird code (opt only)
  868.  
  869.  
  870. Changes since V0.2m
  871.  
  872. - if -ansi is specified assignments between differently signed pointers
  873.   will cause an error
  874. - -dontwarn=n disables all warnings if n<0
  875. - -warn option added to enable certain warnings, usage like -dontwarn
  876. - the following warnings have been added
  877.   - implicit function declarations
  878.   - function calls without prototype
  879.   - use of #pragma
  880.   - assignment/cast of integers to narrower type
  881.   - cast of pointer to pointer with stricter alignment requirements
  882.   - redundant comparisons with unsigned values
  883. - stupid, braindead error in codegenerator fixed (wrote to string constant
  884.   and caused segmentation faults on systems with memory protection) (cga68k)
  885. - TimeDelay new in amiga.lib (has to be rebuilt)
  886. - ctype.h now has function prototypes and macros should be ok with negative
  887.   arguments
  888. - macros in stdio.h now accept void* pointers and do some fancy type checking
  889.   (cla68k)
  890. - temporary hack to display correct filename and line number in error
  891.   messages
  892. - vc now handles filenames with spaces and always uses the complete path
  893.  
  894.  
  895. Changes since V0.2l
  896.  
  897. - in conditional-expressions the type of the result was used for the
  898.   generated comparison due to a bug
  899. - ceil() and floor() were added to m881.lib (cla68k)
  900. - flags may be specified more than once
  901. - vbcc does not change argv any more
  902. - output of errors/warnings changed and error/warning-texts put in <errors.h>
  903. - % with powers of two is not replaced by an 'and' any more if the operand is
  904.   signed (cga68k)
  905. - entries in the history-file now in (bad) English rather than German
  906. - -dontwarn option added to suppress certain warnings
  907. - type conversions that are unnecessary on a certain machine may be omitted
  908.  
  909.  
  910. Aenderungen seit V0.2k
  911.  
  912. - bei shifts werden keine arithmetischen Typerweiterungen mehr vorgenommen
  913. - endlose Fehlerschleifen sollten erkannt werden
  914. - Anfang eines SmallCode/SmallData-Modus; -sc und -sd schalten den jeweiligen
  915.   Modus ein; deswegen wird auch vermehrt lea/pea verwendet (cga68k)
  916. - startup.o initialisiert nun a4 fuer den SmallData-Modus (cla68k)
  917. - die xref _LVO aus startup entfernt
  918. - fd2lib geschrieben
  919. - diverse Libraryfunktionen geschrieben (vla68k)
  920. - der rechte Teil einer conditional-expression ist jetzt eine
  921.   conditional-expression (war faelschlicherweise expression)
  922. - Verwaltung der sections etwas geaendert; section=-1 am Anfang (cga68k)
  923. - Fehlerbehandlung verbessert: Initialisierungen von unvollstaendigen
  924.   Strukturen/Unionen, Arrays mit size==0 und nicht vorhandene Identifier
  925. - Fehler bei der Erkennung von Fehler-Endlosschleifen behoben; funktioniert
  926.   aber trotzdem nicht immer
  927. - Workaround fuer den compare-bug; leider nicht sehr schoen
  928. - Warnung bei dem Push-Problem
  929. - Ausdruecke hinter return wurden bemaengelt, wenn die Funktion void war
  930. - Funktionsargumente werden bei -O=256 nicht mehr sofort vom Stack geholt
  931.   sondern, wenn moeglich gesammelt und dann auf einmal
  932.  
  933.  
  934. Aenderungen seit V0.2j
  935.  
  936. - vc ruft jetzt 'FreePhxAss' statt 'CPhxAss' auf (vca68k)
  937. - free() verkraftet 0 (cla68k)
  938. - bei aufgetretenen Fehlern wird der Returncode auf EXIT_FAILURE gesetzt
  939. - keine Fehlermeldung bei Files ohne Funktionsdefinition mehr
  940. - Fehler behoben, der bei Verwendung einer Adressierungsart der Form
  941.   (d,ax,dy.w[*z]) zu unnoetigen internal errors und evtl. Schlimmerem
  942.   fuehrte (&7 vergessen) (cga68k)
  943. - difftime() wird in time.h als Makro definiert (cla68k)
  944. - #undef difftime in difftime.c eingefuegt (cla68k)
  945. - Deklaration von rename() in stdio.h korrigiert (cla68k)
  946. - wird Flag 8 (256) bei -O gesetzt, wird a5 nicht mehr als Framepointer
  947.   benutzt (cga68k)
  948. - "offset out of object"-Meldungen geaendert
  949. - string-Funktionen geaendert (cla68k)
  950. - Fehler bei Registerallocation, der auftrat, wenn der Rueckgabewert nicht
  951.   in einem Register zurueckgegen wird, behoben
  952. - Variablendeklaration geaendert; sollte jetzt korrekter sein und tentative
  953.   definitions besser behandeln
  954. - fehlendes ; in stdlib.h eingefuegt (cla68k)
  955. - bei saveregs vor einem function call wird ein Scratchregister, ueber das
  956.   die Funktion aufgerufen wird, nicht gespeichert
  957. - wenn der compare-Fehler auftritt sollte zumindest ein error gemeldet
  958.   werden (cga68k)
  959. - wenn keine lokalen Variablen benutzt werden, wird kein Platz auf dem
  960.   Stack gemacht (cga68k)
  961. - Berechnung des Alignments fuer Kopierschleife sollte jetzt auch ohne
  962.   Framepointer korrekt sein (cga68k)
  963. - vc stark geaendert und config-file eingefuehrt (vca68k)
  964. - bei Meldungen wird der Filename mit ausgegeben
  965.  
  966.  
  967. Aenderungen seit V0.2i
  968.  
  969. - Verbesserung der Codegenerierung fuer FPU-Operationen (cga68k)
  970. - Problem bei USEQ2ASZ und Zusammenfassen von IC/ASSIGN behoben
  971. - floating point nun auch ohne FPU moeglich, noch nicht 100% fehlerfrei (cga68k/cla68k)
  972. - Anfang einer Mathelibrary fuer die IEEE-Libraries (cla68k)
  973.   FloatingPoint<->UnsignedInteger nicht korrekt
  974. - Fehler bei switch(UNSIGNED) behoben
  975. - alignment von struct-members sollte wieder passen
  976. - unsigned char/short->fp mit FPU korrigiert (cga68k)
  977. - ein labeled-statement enthaelt das nachfolgende statement
  978. - _main aus mieee.lib oeffnet die Libraries nun in der richtigen
  979.   Reihenfolge (autsch) (cla68k)
  980. - Test auf am->Register in get_reg() eingebaut
  981. - Fehler bei Kopierschleife behoben
  982. - allocreg zaehlt bei Nutzung von erweiterten Adressierungsarten als
  983.   zerstoerend; sollte damit jetzt halbwegs stabil sein; allerdings duerften
  984.   noch internal errors, die aber wohl nichts mehr bedeuten, drin sein
  985. - allocreg/freereg von Registervariablen wird aus Code entfernt und internal
  986.   errors sind beseitig; sollte nur Effekt haben, wenn Returnregister als
  987.   Registervariable verwendet wird
  988. - bei initialisierten Unionen werden jetzt auch die uebrigen Werte aufgefuellt
  989. - bei initialisierten auto Strukturen und Unionen duerfen auch Strukturen/
  990.   Unionen gleichen Typs angegeben werden
  991. - die Kopierroutinen sollten jetzt in (fast?) allen Faellen korrekt
  992.   funktionieren und teilweise auch schneller sein
  993. - Fehler mit auto arrays der Form a[]=... behoben; der Offset wurde nicht
  994.   hochgezaehlt
  995. - difftime in der Math Library (cla68k)
  996. - einige ueble Fehler aus dem frontend fuer amiga68k entfernt (vca68k)
  997. - unbenannte Bitfelder werden bei Initialisierungen jetzt uebergangen
  998. - strengere Pruefung bei Zuweisungen zwischen Zeigern mit verschiedenen
  999.   Qualifiern
  1000. - Funktionsdefinitionen nach altem Stil erzeugen keinen Prototype mehr
  1001. - float Parameter in alten Funktionsdefinitionen werden korrekt behandelt
  1002. - diverse Aenderungen bei der Belegung von Registervariablen; gibt jetzt
  1003.   Register etwas leichter her
  1004.  
  1005.  
  1006. Aenderungen seit V0.2h
  1007.  
  1008. - Fehler beim Kommaoperator behoben und Meldung bei fehlenden sidefx
  1009. - Konvertierungsroutinen fuer target data types geaendert
  1010. - Routinen fuer Fehler/Warnungen akzeptieren jetzt beliebige Parameterlisten
  1011. - Initialisierungen wie (cast)&var werden erlaubt (evtl. Probleme, wenn
  1012.   verschiedene Pointer existieren)
  1013. - die Adresse eines Arrays kann jetzt ermittelt werden
  1014. - Ueberpruefung der Gleichheit von Typen verbessert
  1015. - Registerbelegung bei return verbessert
  1016. - ueberfluessige Warnung bei nicht initialisierter const extern Variable
  1017.   entfernt
  1018. - Franks div/mod in vc.lib eingebaut (cla68k)
  1019. - Fliesskomma-returnwerte nur noch in fp0, wenn fuer fpu generiert wird (cga68k)
  1020. - Stringkonstanten sind nicht mehr const char[] sondern char[]
  1021. - vc versteht nun -l Option (vca68k)
  1022. - printf/scanf durch leicht veraenderte Versionen aus libnix ersetzt (cla68k)
  1023. - Anfang einer Mathelibrary fuer 68881 (cla68k)
  1024. - (hoffentlich) korrekte floating point->integer Rundung bei FPU (cga68k)
  1025.  
  1026.  
  1027. Aenderungen seit V0.2g
  1028.  
  1029. - Fehler bei Registerbelegung in totem Code behoben
  1030. - Fehler bei Registerbelegung in switch-statements behoben
  1031. - boeser Fehler bei Variablen mit nicht-Register-return-values behoben
  1032. - vc.lib: Ctrl-C wird erkannt (manchmal) (cla68k)
  1033. - vc.lib: malloc() verbessert (cla68k)
  1034. - vc.lib: limits.h korrigiert (cla68k)
  1035. - vc.lib: time.h und time-Funktionen eingebaut (cla68k)
  1036. - keine Warnung mehr bei const typedefs
  1037. - Warnung bei Initialisierung von typedefs
  1038. - verschiedene Aenderungen bei der Behandlung von storage-classes
  1039. - globale static Variablen werden jetzt nicht mehr exportiert
  1040. - storage-classes in Prototypen werden beachtet
  1041. - const Variablen werden nicht mehr als Konstanten behandelt (war fehlerhaft)
  1042. - Fehler in union atyps behoben (vuchar war zchar statt zuchar, argh!)
  1043. - string concatenation eingebaut
  1044. - Umwandlung unsigned->floating point mit FPU korrigiert (cga68k)
  1045. - Vergleiche bei unsigned werden jetzt korrekt behandelt (cga68k)
  1046. - bessere Behandlung von Funktionsprototypen
  1047. - Zuweisungen zwischen Funktions- und Datenzeigern sind nicht mehr erlaubt
  1048.  
  1049.  
  1050. Aenderungen seit V0.2f
  1051.  
  1052. - -snma entfernt (cga68k)
  1053. - einige Vereinfachungen im Codegenerator wegen reg/freg-Benutzung (cga68k)
  1054. - Entfernung einiger alter Codefragmente im Codegenerator (cga68k)
  1055. - Abfrage bei malloc() eingebaut
  1056. - einige Fehler bei der IC-Generierung im Zusammenhang mit Registerbelegung
  1057.   behoben
  1058. - Fehlerbehandlung verbessert; nach -maxerror=n (default 10) Fehlern
  1059.   wird Uebersetzung abgebrochen (bei 0 wird nicht abgebrochen)
  1060. - -ansi unterdrueckt unwichtige Warnungen und Warnungen mit ANSI-Verletzung
  1061.   werden als Fehler behandelt
  1062. - Flags loeschen jetzt durch &=~
  1063. - Zuweisungen von Arrays werden korrekt(er) behandelt (cga68k)
  1064. - Zuweisungen von groesseren Typen geaendert, muss aber noch optimiert
  1065.   werden. (cga68k)
  1066. - falscher Returncode in alg_opt() korrigiert
  1067. - Behandlung von const-Konstanten korrigiert
  1068. - Meldung, wenn main() nicht int ist
  1069. - arithmetik mit void * nicht mehr erlaubt
  1070. - casting nach void erlaubt
  1071.  
  1072.  
  1073. Aenderungen seit V0.2e
  1074.  
  1075. - Nutzung von 680x0-Adressierungsarten eingebaut (cga68k)
  1076. - Schreibweise displ(ax) durch (displ,ax) ersetzt (cga68k)
  1077. - Nutzung von reg/freg; dadurch kein zusaetzlicher Pass noetig (cga68k)
  1078.  
  1079.  
  1080. Aenderungen seit V0.2d
  1081.  
  1082. - Typpruefung bei Zuweisungen verbessert und nun auch bei Initialisierungen
  1083. - freed free Register teilweise behoben (?)
  1084. - Deklarationen von Prototypen ohne Typ werden bemaekelt
  1085. - Abhanegigkeit in eigenen Include-Dateien behoben
  1086. - Fehler bei arithmetischen Operationen behoben (cga68k)
  1087. - falsche Fehlermeldung bei unsigned Typ als Schleifenbedingung
  1088. - / und % wird nun auch mit 68000 unterstuetzt (wenn auch ineffizient) (cga68k)
  1089. - Fehler bei ADDI2P und SUBIFP behoben
  1090. - Fehler (mit DREFOBJ) bei Zusammenfassung op x,y->reg;move reg->z behoben
  1091. - Optionen, die einen Parameter benoetigen, muessen jetzt -opt=parameter
  1092.   geschrieben werden, also z.B. vbcc -cpu=68020 file.c
  1093.   (das war noetig, um das Frontend und Wildcards zu vereinfachen)
  1094. - enumerations eingebaut; noch einfach ohne grosse Tests, Tags werden ignoriert
  1095. - arithmetische const Typen werden in Ausdruecken als Konstanten behandelt
  1096.  
  1097.  
  1098. Aenderungen seit V0.2c
  1099.  
  1100. - -noa4 Option hinzugekommen (cga68k)
  1101. - Fehler beim Vertauschen von COMPARE-Argumenten und mustrepeat behoben (cga68k)
  1102. - Fehler bei vorzeitiger Registerfreigabe bei POSTINC/POSTDEC behoben
  1103. - Fehler bei mehreren Variablendeklarationen mit Funktionen behoben
  1104. - Fehler bei dc float|double behoben (cga68k)
  1105. - Fehler bei sections und dc/ds behoben (cga68k)
  1106. - Fehler bei Rechnungen mit FP-Registern behoben (cga68k)
  1107. - diverse Fehler bei a op= b behoben
  1108. - jetzt hoffentlich immer korrekte Verwendung von lsl/lsr/asr (cga68k)
  1109. - vbcc hat sich endlich erfolgreich selbst kompiliert
  1110. - Fliesskommakonstanten eingebaut; Berechnung aber noch zu ungenau
  1111. - Deklaration fuer Bitfields eingebaut; werden aber noch als Integers behandelt
  1112. - Fehler bei interner Verarbeitung von Fliesskommazahlen behoben
  1113. - Deklarationen der Form unsigned a; extern a; etc. werden zugelassen
  1114. - Anfaenge einer eigenen C-Library
  1115.  
  1116.  
  1117. Volker (volker@vb.franken.de)
  1118.  
  1119.