Commit Graph

79 Commits

Author SHA1 Message Date
florian
637976e83f * patch by Marģers to unify internal error numbers, resolves #37888
git-svn-id: trunk@47103 -
2020-10-13 19:59:01 +00:00
florian
28f25b2df0 * reworked usage of tcgnotnode.handle_locjump
git-svn-id: trunk@46275 -
2020-08-05 21:15:32 +00:00
yury
1b3a3a7983 * Removed lot of unused local vars. It is useful to turn on the notes in options. :)
git-svn-id: trunk@44053 -
2020-01-28 18:45:33 +00:00
florian
ccf409c8a0 * use 64 bit code page in tppcshlshrnode.pass_generate_code for all 64 bit types,
resolves #33582

git-svn-id: trunk@43795 -
2019-12-25 22:11:31 +00:00
Jonas Maebe
281b3ad276 * fix case completeness and unreachable code warnings in compiler that would
be introduced by the next commit

git-svn-id: trunk@42046 -
2019-05-12 14:29:03 +00:00
Jonas Maebe
0fc1fd6ac1 * replaced current_procinfo.currtrue/falselabel with storing the true/false
labels of LOC_JUMP in the node's location. This generates some extra jumps
    for short circuit boolean and/or-expressions if optimizations are off, but
    with optimisations enabled the generated code is the same (except for JVM
    because the jump threading optimisation isn't enabled there yet).

git-svn-id: trunk@31431 -
2015-08-27 18:28:57 +00:00
Jonas Maebe
10b2ea3b1b * use handle_locjump() instead of local inlined version
git-svn-id: trunk@31430 -
2015-08-27 18:28:52 +00:00
Károly Balogh
6122db7d40 * fix warnings when compiling the compiler with DFA optimizer enabled on PowerPC
git-svn-id: trunk@28501 -
2014-08-20 14:31:36 +00:00
sergei
9593cece03 * powerpc: implement cg.a_mul_reg_reg_pair method and switch to generic code for division by constants.
git-svn-id: trunk@27976 -
2014-06-15 16:33:08 +00:00
florian
d2aa35e9de * throw an internal error if code generation depends on expectloc but expectloc and real loc do not match
git-svn-id: trunk@22073 -
2012-08-13 15:02:55 +00:00
Jonas Maebe
92b4c84dae * fixed 'int64 shl/shr 0' on ppc32
git-svn-id: trunk@21841 -
2012-07-10 09:24:26 +00:00
Jonas Maebe
edd42aa42a * moved subsetref/reg and bit_set/test support from cgobj to hlcgobj for
future use by high level code generator targets
   o this in turn required that all a_load*_loc* methods are called via
     hlcg rather than via cg, since a location can be a subsetref/reg and
     and those are no longer handled in tcg
   o that then required moving several force_location_* routines into
     thlcg because they use a_load_loc*, but did not take tdef size
     parameters (which are required by the thlcg a_load_loc* routines)
   o the only practical consequence is that from now on, you have to
     use hlcg.location_force_mem/reg() (fpureg not yet) and
     hlcg.gen_load_loc_cgpara() instead of the removed versions from ncgutil,
     and hlcg.a_load*loc*() instead of cg.a_load*loc* if a subsetref/reg
     might be involved

git-svn-id: trunk@21287 -
2012-05-13 12:33:10 +00:00
Jonas Maebe
4d12a8b1ba * fixed not(qwordbool): take all 64 bits into account, not only the
lower 32 ones

git-svn-id: trunk@19920 -
2011-12-30 12:09:43 +00:00
florian
4868b09844 * patch by alexvin to replace $ifopt by $push/$pop, resolves #20332
git-svn-id: trunk@19239 -
2011-09-25 21:19:50 +00:00
Jonas Maebe
5175a5ee07 * handle LOC_SUBSETREG,LOC_CSUBSETREG,LOC_SUBSETREF,LOC_CSUBSETREF in
unaryminus code (a.o., fixes compiler crash with test/terecs6 on
    darwin/ppc32 under certain circumstances:
    http://www.freepascal.org/testsuite/cgi-bin/testsuite.cgi?action=3&run1id=74027&run2id=74101&testfileid=3838 )

git-svn-id: trunk@16650 -
2010-12-28 23:52:25 +00:00
Jonas Maebe
a23630260b + "weakexternal" support for imported procedures and variables.
the syntax is exactly the same as for "external", except for
    the keyword. It is currently only active for Darwin targets.
    It should also work at least for Linux targets, but only with
    the GNU assembler (which is why it is not activated there)
  + test for this functionality

git-svn-id: trunk@12009 -
2008-11-01 18:38:32 +00:00
daniel
573aa1cd34 * Make powerpc compile again.
git-svn-id: trunk@7642 -
2007-06-13 11:05:15 +00:00
daniel
9adb202a92 * Rework the constexprint to allow operations from low(int64) to high(qword).
+ Some initial work on a formaldef which also carries the typinfo of a parameter.

git-svn-id: trunk@7639 -
2007-06-13 07:41:18 +00:00
Jonas Maebe
e815b923d5 * a_loadfpu_* gets two size parameters: fromsize and tosize
* fixed downsizing the precision of floating point values
  * floating point constants are now treated using only the minimal
    precision required (e.g. 2.0 is now a single, 1.1 extended etc)
    (Delphi compatible)

git-svn-id: trunk@5927 -
2007-01-12 18:33:51 +00:00
Jonas Maebe
198a0008d0 * fixed -currency after r5896
git-svn-id: trunk@5914 -
2007-01-12 09:52:07 +00:00
Jonas Maebe
e2193b1540 * fixed mixing of longint/dword to avoid 64 bit conversion
git-svn-id: trunk@5788 -
2007-01-02 18:32:59 +00:00
Jonas Maebe
5522cbd7cd * fixed typo which caused overflow checks not to be turned off when
calculating magic division constants

git-svn-id: trunk@5316 -
2006-11-10 20:53:50 +00:00
peter
658c46b903 * remove tdictionary and tindexarray
* symtables based on TFPHashObjectList and TFPObjectList
  * rename torddef.typ to torddef.ordtype
  * rename tfloatdef.typ to tfloatdef.floattype
  * rename tdef.deftype to tdef.typ
  * remove obsolete browser code, browcol is kept so the ide
    can still be compiled

git-svn-id: trunk@5192 -
2006-11-03 00:30:30 +00:00
florian
85d63d9fa9 * settings refactored
git-svn-id: trunk@5094 -
2006-10-30 18:02:58 +00:00
peter
3078a1927f * remove ttype
* rename old ttype variables *type to *def
  * rename resulttypepass to pass_typecheck
  * rename pass_2 to pass_generate_code

git-svn-id: trunk@5077 -
2006-10-29 22:19:39 +00:00
Jonas Maebe
1f42ee201b + support for bitpacked records, except for:
* rtti
    * typed constants

git-svn-id: trunk@4489 -
2006-08-23 15:44:13 +00:00
Jonas Maebe
63123d3c62 * don't reuse loc_register
git-svn-id: trunk@4426 -
2006-08-15 15:20:32 +00:00
peter
b7fe6797bf Merged revisions 2921-2922,2925 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r2921 | peter | 2006-03-15 08:35:00 +0100 (Wed, 15 Mar 2006) | 2 lines

  * pass ObjectWriter to ObjectOuput

........
r2922 | peter | 2006-03-15 12:40:30 +0100 (Wed, 15 Mar 2006) | 2 lines

  * refactor asmdata

........
r2925 | peter | 2006-03-15 16:09:39 +0100 (Wed, 15 Mar 2006) | 3 lines

  * add cfi to asmdata
  * move asmlist, asmcfi, asmdata to own unit

........

git-svn-id: trunk@2932 -
2006-03-16 08:52:22 +00:00
Jonas Maebe
7f247e9305 * fix and suppress some rangecheck/overflow errors (regarding calculation
of magic constants for changing division into multiplication)

git-svn-id: trunk@2653 -
2006-02-20 11:01:38 +00:00
peter
a3ab2053c9 * support multiple asmlabel types, renamed getlabel to
getjumplabel and added type para to getlabel for specific types
  * moved lineinfo generation from assemble and aggas to dbgstabs

git-svn-id: trunk@1120 -
2005-09-18 21:16:10 +00:00
Jonas Maebe
fdc8c1c0ae * replace divisions by constants with a combination of mul, shift, add from
the ppc compiler writers guide
  + test program for above optimization
  (both by Thomas Schatzl)

git-svn-id: trunk@912 -
2005-08-21 18:35:15 +00:00
Jonas Maebe
0f8e019c44 * fixed web bug tw4078 + added test
git-svn-id: trunk@414 -
2005-06-15 16:46:03 +00:00
fpc
790a4fe2d3 * log and id tags removed
git-svn-id: trunk@42 -
2005-05-21 09:42:41 +00:00
fpc
50778076c3 initial import
git-svn-id: trunk@1 -
2005-05-16 18:37:41 +00:00
Jonas Maebe
a5c94ddccd * removed some unused variables 2005-03-25 21:55:43 +00:00
peter
e417e34496 * truncate log 2005-02-14 17:13:06 +00:00
Jonas Maebe
4f53d8367d * introduced bug (x shl 65 = x shl 1 when shifting with a constant, but
still 0 otherwise) to pass tshlshr
2004-12-06 17:53:43 +00:00
peter
c95a859f0a * generic tlocation
* move tlocation to cgutils
2004-10-31 21:45:02 +00:00
peter
d19663f3a8 * save standard registers moved to tcgobj 2004-10-25 15:36:47 +00:00
peter
65c3ba277c * ungetregister is now only used for cpuregisters, renamed to
ungetcpuregister
  * renamed (get|unget)explicitregister(s) to ..cpuregister
  * removed location-release/reference_release
2004-09-25 14:23:54 +00:00
florian
8a9758c5e2 * logs truncated 2004-06-20 08:55:28 +00:00
Jonas Maebe
c2efd86268 + integer division-by-zero detection support for ppc
+ compilerproc FPC_DIVBYZERO
2004-01-01 17:58:16 +00:00
Jonas Maebe
8be1033511 * (64 bit int) shl/shr (value > 63) := 0 2003-12-31 18:12:23 +00:00
Jonas Maebe
8953ed5494 * fixed tnotnode for < 32 bit quantities 2003-12-28 23:49:30 +00:00
florian
6a01a7b4a6 * compilation of the powerpc compiler fixed 2003-10-17 01:22:08 +00:00
peter
70fe77ca7c * procinfo unit contains tprocinfo
* cginfo renamed to cgbase
  * moved cgmessage to verbose
  * fixed ppc and sparc compiles
2003-10-01 20:34:48 +00:00
peter
c05cf49b35 * removed empty cga unit 2003-09-03 19:39:16 +00:00
peter
601160a0e3 * powerpc compiles again 2003-09-03 19:35:24 +00:00
Jonas Maebe
642d0f923b * ppc compiles with -dnewra, haven't tried to compile anything with it
yet though
2003-06-14 22:32:43 +00:00
Jonas Maebe
68b629fd16 * fixed small bug where a location was set to LOC_CREGISTER instead of
LOC_REGISTER
2003-06-08 18:20:02 +00:00