Commit Graph

160 Commits

Author SHA1 Message Date
florian
45cda67f3f + first basically working (not all node types yet) dfa implementation determining life information
git-svn-id: trunk@7294 -
2007-05-06 21:33:39 +00:00
florian
9a0f769b2f * cleaned up set conversion
* fixed conversion of var sets

git-svn-id: trunk@6644 -
2007-02-25 16:29:39 +00:00
peter
f7a6c1e2ee * only allow pointer(integer) in fpc modes
git-svn-id: trunk@6598 -
2007-02-22 07:01:47 +00:00
peter
9a37c04131 * cardinal-cardinal is calculated using int64
* support pointer(int64) for all modes, this is needed to
    support pointer(cardinal+longint) and pointer(cardinal-cardinal)

git-svn-id: trunk@6586 -
2007-02-21 11:52:06 +00:00
yury
48e46f1c2e * Fixed error "Incompatible type for arg no. X: Got "Array Of Char", expected "Array Of PChar"" when passing values like ['1','2','3'] for "array of PChar" parameter.
+ Test added.

git-svn-id: trunk@6495 -
2007-02-15 19:43:35 +00:00
florian
a2ec2e72b6 * better hint about abstract methods (fixes 5098)
+ code generation for invoking dispinterface methods
* small dispinterface problems fixed

git-svn-id: trunk@5798 -
2007-01-03 19:14:31 +00:00
Jonas Maebe
2b9bdf2155 * fixed mantis 6631, 7322 and 7989: check parameters and return
types of interface methods implemented in a class

git-svn-id: trunk@5686 -
2006-12-22 19:50:52 +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
Jonas Maebe
d87f03eef5 - removed automatic int-string, string-int and int-array conversion for
macpas after discussion on macpascal mailing list. The only thing left
    is automatic conversion of constant strings of length 4 to 32 bit ints.
  * adapted tests to this
  * fixed FOUR_CHAR_CODE and FCC functions in MacPas unit for little
    endian
  + FourCharArray type in macpas unit wich can be used to typecast
    int's "back" to an array[1..4] of char (though the characters
    will be in reverse on little endian systems in that case)

git-svn-id: trunk@5154 -
2006-11-01 16:34:37 +00:00
peter
136d3e8d46 * refactor implemented interfaces
git-svn-id: trunk@5134 -
2006-10-31 22:38:49 +00:00
florian
5c9b39549a * fixed olevariant -> variant conversion
git-svn-id: trunk@5131 -
2006-10-31 19:45:08 +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
2dd6a91a9f + allow implicit type conversions of 4 byte integers to strings for
parameter matching in macpas mode

git-svn-id: trunk@4957 -
2006-10-18 18:14:54 +00:00
peter
6fa1b27add * openarray to openarray should still be equal for parameters
git-svn-id: trunk@4755 -
2006-09-30 10:21:18 +00:00
peter
0ddab0c161 * add cdo_parameter option for def_compare_ext that indicates that we
are comparing parameter lists
  * openarray and normal array are not compatible anymore when comparing
    parameters

git-svn-id: trunk@4754 -
2006-09-30 09:59:46 +00:00
Jonas Maebe
47eb589d54 * allow implicit conversions from/to packed char arrays under the
same conditions as from/two regular char arrays (since a packed
    char array is the same as a string in ISO Pascal)

git-svn-id: trunk@4468 -
2006-08-20 15:14:07 +00:00
florian
9e66674ff9 + first part of qwordbool implementation
git-svn-id: trunk@4462 -
2006-08-19 23:16:17 +00:00
Jonas Maebe
eccbc78e04 + support for bitpacked arrays:
+ use {$bitpacking on/+} to change the meaning of "packed"
      into "bitpacked" for arrays. This is the default for MacPas.
      You can also define individual arrays as "bitpacked", but
      this is not encouraged since this keyword is not known by
      other compilers and therefore makes your code unportable.
    + pack(unpackedarray,index,packedarray) to pack
      length(packedarray) elements starting at
      unpackedarray[index] into packedarray.
    + unpack(packedarray,unpackedarray,index) to unpack
      packedarray into unpackedarray, with the first
      element being stored at unpackedarray[index]
  * todo:
    * "open packed arrays" and rtti for packed arrays are not
      yet supported
    * gdb does not properly support bitpacked arrays

git-svn-id: trunk@4449 -
2006-08-19 12:54:12 +00:00
peter
ac673f392c * typo in previous commit
git-svn-id: trunk@4392 -
2006-08-07 21:14:16 +00:00
peter
4bde345009 * fix check for openarray and single element
git-svn-id: trunk@4390 -
2006-08-07 20:36:18 +00:00
peter
a704cbf048 * never prefer conversion to formaldef
git-svn-id: trunk@4387 -
2006-08-07 19:50:52 +00:00
peter
38c0ae73da Merged revisions 2775,2788-2789 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r2775 | peter | 2006-03-05 22:43:30 +0100 (Sun, 05 Mar 2006) | 2 lines

  * merge ppu changes to keep ppus the same

........
r2788 | peter | 2006-03-06 12:59:14 +0100 (Mon, 06 Mar 2006) | 2 lines

  * Add TFPList and TFPObjectList

........
r2789 | peter | 2006-03-06 13:01:37 +0100 (Mon, 06 Mar 2006) | 2 lines

  * fix powerpc

........

git-svn-id: trunk@2790 -
2006-03-06 12:04:44 +00:00
Jonas Maebe
92c389aaeb * fixed web bug #4778 (explicit type casting of float to int in tp/delphi
keeps the bit pattern instead of converting)

git-svn-id: trunk@2509 -
2006-02-10 11:05:47 +00:00
peter
45176ea2a8 * split tstringtype for stringdef and stringconstnode
to prevent wrong typecasts

git-svn-id: trunk@2276 -
2006-01-13 17:20:27 +00:00
peter
95879fe8a7 * basic support for generic classes
git-svn-id: trunk@2020 -
2005-12-21 10:11:15 +00:00
peter
f9db030350 * fix overload choosing if both normal proc and proc of object are available
git-svn-id: trunk@1496 -
2005-10-19 07:56:08 +00:00
peter
09a0dff4da * prefer object->object over object->intf
git-svn-id: trunk@1491 -
2005-10-19 06:36:10 +00:00
peter
adfd36d189 * allow conststring to array of widechar
git-svn-id: trunk@1471 -
2005-10-18 12:27:43 +00:00
peter
89297d2c39 * move all stabs ($ifdef gdb) code to dbgstabs
git-svn-id: trunk@1255 -
2005-10-02 11:17:05 +00:00
peter
edf553a223 * string constants are now array of char until
they are converted to a specific string type

git-svn-id: trunk@1254 -
2005-10-02 11:08:58 +00:00
peter
f4c15f16bf * overload choosing for ansistring -> short/wide
git-svn-id: trunk@983 -
2005-08-30 06:55:10 +00:00
peter
da8c55b019 * overload choosing for array of char to widestring fixed
git-svn-id: trunk@979 -
2005-08-30 05:42:11 +00:00
peter
a24dc41f36 * don't prefer int const to pointer
git-svn-id: trunk@700 -
2005-07-19 12:22:32 +00:00
peter
86bf41f689 * prefer shortstring to ansistring over ansistring to shortstring
* don't prefer widestring to short/ansistring

git-svn-id: trunk@594 -
2005-07-06 13:09:50 +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
peter
218930cf11 * support open array to pointer 2005-04-04 16:30:07 +00:00
peter
a96693cee1 support (wide)char to pwidechar 2005-03-28 15:19:18 +00:00
florian
0ef8431a3f + made @(<formaldef>) assignment compatible with all pointer types 2005-03-13 11:42:48 +00:00
florian
737a81f30b + array -> dyn. array type cast 2005-03-11 21:55:43 +00:00
peter
e417e34496 * truncate log 2005-02-14 17:13:06 +00:00
florian
81c3feca81 + support for another explicit ugly delphi type cast added 2005-02-03 19:24:33 +00:00
florian
90d88ec1a5 * <class/interface>(<any ord. type>) in delphi mode allowed 2005-02-02 19:04:31 +00:00
peter
8f8e6f6809 * widestring patches from Alexey Barkovoy 2005-01-10 22:10:26 +00:00
florian
3cb0a53eca + compiler side of variant<->interface implemented 2005-01-07 21:14:21 +00:00
florian
7aa53f09cc * widechararray patch from Peter 2005-01-06 13:30:40 +00:00
florian
80af47489d + first batch of patches to support tdef.getcopy fully 2005-01-03 17:55:57 +00:00
peter
2b6456fe16 * procvar handling for tp procvar mode fixed
* proc to procvar moved from addrnode to typeconvnode
  * inlininginfo is now allocated only for inline routines that
    can be inlined, introduced a new flag po_has_inlining_info
2004-12-05 12:28:10 +00:00
peter
5f61be6b4d * prevent some IEs with delphi methodpointers 2004-11-29 17:32:56 +00:00
peter
1418add0e0 * don't allow pointer(ordinal) typecast in fpc mode, only allow it
for delphi and for internal use
2004-11-26 22:33:54 +00:00
peter
e740a66636 * tparaitem removed, use tparavarsym instead
* parameter order is now calculated from paranr value in tparavarsym
2004-11-15 23:35:30 +00:00
peter
6458bd0ce1 * tvarsym splitted 2004-11-08 22:09:58 +00:00
peter
91a00b5344 * procvar arguments need to be at least equal 2004-11-01 10:31:48 +00:00
peter
9f811b8bca * remove previous patch 2004-11-01 08:02:26 +00:00
peter
1c0b14c9f7 * only allow ordinal-pointer for same size 2004-10-31 22:05:25 +00:00
peter
c95a859f0a * generic tlocation
* move tlocation to cgutils
2004-10-31 21:45:02 +00:00
peter
e1278ec66f * prefer pchar-string over pchar-pointer 2004-09-21 15:52:35 +00:00
peter
35c07ed9ef * dynarr-pointer is allowed under delphi 2004-09-16 16:32:44 +00:00
florian
8a9758c5e2 * logs truncated 2004-06-20 08:55:28 +00:00
peter
73867aa44c * voidpointer can be converted to dynarray 2004-04-12 11:26:10 +00:00
peter
92203909b9 * use defs_equal when comparing pointer types 2004-03-04 17:22:32 +00:00
peter
44a2e03d81 * also compare calling convention in proc_to_procvar_equal 2004-03-03 22:02:16 +00:00
peter
05e0d83348 * operator overload chooses rewrite
* overload choosing is now generic and moved to htypechk
2004-02-24 16:12:39 +00:00
peter
da60da7f06 * allow real_2_real conversion for realconstn, fixes 2971 2004-02-15 12:18:22 +00:00
peter
3a3fdde6d1 * compare_defs_ext has now a options argument
* fixes for variants
2004-02-13 15:42:21 +00:00
daniel
d735071838 * Rtti generation moved to ncgutil
* Assmtai usage of symsym removed
  * operator overloading cleanup up
2004-02-04 22:15:15 +00:00
peter
2b02238e4a * prefere tobject-tobject over tobject-pointer 2004-01-31 14:50:54 +00:00
peter
c3b9e56e90 * give penalty in float-float conversion when precision is lost 2004-01-14 21:44:16 +00:00
florian
5f496817a0 * fixed webbug 2878 2004-01-06 02:17:44 +00:00
Jonas Maebe
2af569745c * if currency = int64, FPC_CURRENCY_IS_INT64 is defined
+ round and trunc for currency and comp if FPC_CURRENCY_IS_INT64 is
    defined
  * if currency = orddef, prefer currency -> int64/qword conversion over
    currency -> float conversions
  * optimized currency/currency if currency = orddef
  * TODO: write FPC_DIV_CURRENCY and FPC_MUL_CURRENCY routines to prevent
      precision loss if currency=int64 and bestreal = double
2004-01-02 17:19:04 +00:00
daniel
23aa8e1cda * Automatic conversion from integer constants to pointer constants is no
longer done except in Delphi mode
2003-12-16 09:41:44 +00:00
michael
224a670b4a + Patch to prefer getpropinfo(ptypeinfo,name) over getpropinfo(tobject,name) when called with getpropinfo(aclass.classinfo) from Peter 2003-11-26 15:11:42 +00:00
peter
a3c14e9c2d * procvar default value support 2003-11-10 19:09:29 +00:00
florian
8b337fb5ef + type cast variant<->enum
* cnv. node second pass uses now as well helper wrappers
2003-11-04 22:30:15 +00:00
peter
19727a3609 * don't search for overloads in parents for constructors 2003-10-30 16:23:13 +00:00
florian
6906e33275 * fixed web bug #2129: explicit float casts in Delphi mode must be handled by the default code 2003-10-26 14:11:35 +00:00
florian
048fbd8228 * fixed 2729: overloading problem with methodvars and procvars 2003-10-14 12:23:06 +00:00
peter
fb81b7ebbb * old trgobj moved to x86/rgcpu and renamed to trgx86fpu
* tregisteralloctor renamed to trgobj
  * removed rgobj from a lot of units
  * moved location_* and reference_* to cgobj
  * first things for mmx register allocation
2003-10-10 17:48:13 +00:00
peter
e720d73bd9 * compare_paras() has a parameter to ignore hidden parameters
* cross unit overload searching ignores hidden parameters when
    comparing parameter lists. Now function(string):string is
    not overriden with procedure(string) which has the same visible
    parameter list
2003-10-07 21:14:32 +00:00
peter
c73704be10 * when comparing hidden parameters both must be hidden 2003-10-05 13:05:05 +00:00
peter
1a71e7e02b * set correct conversion for subranges 2003-10-05 12:57:11 +00:00
peter
3a3d710c47 * basics for x86 register calling 2003-09-09 21:03:17 +00:00
peter
93f683c63c * allow pointer(int64) in all modes 2003-06-03 21:02:08 +00:00
peter
047a066711 * procinlinenode removed
* aktexit2label removed, fast exit removed
  + tcallnode.inlined_pass_2 added
2003-05-26 21:17:17 +00:00
peter
92ee1804b6 * removed selfpointer_offset, vmtpointer_offset
* tvarsym.adjusted_address
  * address in localsymtable is now in the real direction
  * removed some obsolete globals
2003-05-15 18:58:53 +00:00
peter
1a2eedd767 * self moved to hidden parameter
* removed hdisposen,hnewn,selfn
2003-05-09 17:47:02 +00:00
peter
c21ca3dfa0 + added currency support based on int64
+ is_64bit for use in cg units instead of is_64bitint
  * removed cgmessage from n386add, replace with internalerrors
2003-04-23 20:16:03 +00:00
peter
7dae726270 * po_comp for proc to procvar fixed 2003-04-23 11:37:33 +00:00
peter
8da3f59d32 * vs_hidden released 2003-04-10 17:57:52 +00:00
peter
146c4ff510 * fix compare for unique types, they are allowed when they match
exact
2003-03-20 17:52:18 +00:00
peter
34de6782a5 * convert_l3 convertlevel added. This level is used for conversions
where information can be lost like converting widestring->ansistring
    or dword->byte
2003-01-16 22:13:51 +00:00
peter
00e2ee165b * merged methodpointer fixes from 1.0.x 2003-01-15 01:44:32 +00:00
peter
90473fa87f * constant string conversion fixed, it's now equal to both
shortstring, ansistring and the typeconvnode will return
    te_equal but still return convtype to change the constnode
2003-01-09 21:43:39 +00:00
peter
8423a146b0 * use int_to_int conversion for pointer/procvar/classref to int 2003-01-05 22:42:13 +00:00
florian
07110d20f9 + added proper support of type = type <type>; for simple types 2003-01-05 15:54:15 +00:00
peter
8b2dbde7c8 * fixed assignment operator checking for typecast 2003-01-03 17:16:04 +00:00
peter
50e870348b * varargs is not checked in proc->procvar for delphi 2002-12-29 18:15:19 +00:00
peter
bbf8bddbb4 * unit loading changed to first register units and load them
afterwards. This is needed to support uses xxx in yyy correctly
  * unit dependency check fixed
2002-12-29 14:57:50 +00:00
peter
39473f1e59 * procvar compare with 2 ints did not check the integer size 2002-12-27 15:26:12 +00:00