1445
1452
$Log: ncgflw.pas,v $
1446
Revision 1.95 2004/03/29 14:43:47 peter
1447
* cleaner temp get/unget for exceptions
1449
Revision 1.94 2004/03/02 00:36:33 olle
1450
* big transformation of Tai_[const_]Symbol.Create[data]name*
1452
Revision 1.93 2004/02/27 10:21:05 florian
1454
+ refaddr to treference added
1455
+ refsymbol to treference added
1456
* top_local stuff moved to an extra record to save memory
1458
* tppufile.get/putint64/aint implemented
1460
Revision 1.92 2004/02/12 15:54:03 peter
1461
* make extcycle is working again
1463
Revision 1.91 2004/02/05 18:28:37 peter
1464
* x86_64 fixes for opsize
1466
Revision 1.90 2004/01/31 17:45:17 peter
1467
* Change several $ifdef i386 to x86
1468
* Change several OS_32 to OS_INT/OS_ADDR
1470
Revision 1.89 2004/01/12 22:11:38 peter
1471
* use localalign info for alignment for locals and temps
1472
* sparc fpu flags branching added
1473
* moved powerpc copy_valye_openarray to generic
1475
Revision 1.88 2004/01/01 17:23:16 florian
1476
* fixed wrong temp. usage in generic exception handling
1478
Revision 1.87 2003/12/06 01:15:22 florian
1479
* reverted Peter's alloctemp patch; hopefully properly
1481
Revision 1.86 2003/12/03 23:13:20 peter
1482
* delayed paraloc allocation, a_param_*() gets extra parameter
1483
if it needs to allocate temp or real paralocation
1484
* optimized/simplified int-real loading
1486
Revision 1.85 2003/10/17 14:38:32 peter
1487
* 64k registers supported
1488
* fixed some memory leaks
1490
Revision 1.84 2003/10/10 17:48:13 peter
1491
* old trgobj moved to x86/rgcpu and renamed to trgx86fpu
1492
* tregisteralloctor renamed to trgobj
1493
* removed rgobj from a lot of units
1494
* moved location_* and reference_* to cgobj
1495
* first things for mmx register allocation
1497
Revision 1.83 2003/10/09 21:31:37 daniel
1498
* Register allocator splitted, ans abstract now
1500
Revision 1.82 2003/10/01 20:34:48 peter
1501
* procinfo unit contains tprocinfo
1502
* cginfo renamed to cgbase
1503
* moved cgmessage to verbose
1504
* fixed ppc and sparc compiles
1506
Revision 1.81 2003/09/23 17:56:05 peter
1507
* locals and paras are allocated in the code generation
1508
* tvarsym.localloc contains the location of para/local when
1509
generating code for the current procedure
1511
Revision 1.80 2003/09/10 08:31:47 marco
1512
* Patch from Peter for paraloc
1514
Revision 1.79 2003/09/07 22:09:35 peter
1515
* preparations for different default calling conventions
1518
Revision 1.78 2003/09/03 15:55:00 peter
1519
* NEWRA branch merged
1521
Revision 1.77 2003/09/03 11:18:36 florian
1522
* fixed arm concatcopy
1523
+ arm support in the common compiler sources added
1524
* moved some generic cg code around
1528
Revision 1.76.2.4 2003/09/02 17:48:28 peter
1529
* first process all parameters for raise before pushing the values
1531
Revision 1.76.2.3 2003/08/31 21:07:44 daniel
1532
* callparatemp ripped
1534
Revision 1.76.2.2 2003/08/29 17:28:59 peter
1535
* next batch of updates
1537
Revision 1.76.2.1 2003/08/27 20:23:55 peter
1538
* remove old ra code
1540
Revision 1.76 2003/08/24 21:38:43 olle
1541
* made FPC_RAISEEXCEPTION compatible with MacOS
1543
Revision 1.75 2003/08/10 17:25:23 peter
1544
* fixed some reported bugs
1546
Revision 1.74 2003/08/09 18:56:54 daniel
1547
* cs_regalloc renamed to cs_regvars to avoid confusion with register
1549
* Some preventive changes to i386 spillinh code
1551
Revision 1.73 2003/07/23 11:01:14 jonas
1552
* several rg.allocexplicitregistersint/rg.deallocexplicitregistersint
1553
pairs round calls to helpers
1555
Revision 1.72 2003/06/13 21:19:30 peter
1556
* current_procdef removed, use current_procinfo.procdef instead
1558
Revision 1.71 2003/06/09 14:38:52 jonas
1559
* fixed for callparatemp
1561
Revision 1.70 2003/06/09 12:23:30 peter
1562
* init/final of procedure data splitted from genentrycode
1563
* use asmnode getposition to insert final at the correct position
1564
als for the implicit try...finally
1566
Revision 1.69 2003/06/07 18:57:04 jonas
1567
+ added freeintparaloc
1568
* ppc get/freeintparaloc now check whether the parameter regs are
1569
properly allocated/deallocated (and get an extra list para)
1570
* ppc a_call_* now internalerrors if pi_do_call is not yet set
1571
* fixed lot of missing pi_do_call's
1573
Revision 1.68 2003/06/03 21:11:09 peter
1574
* cg.a_load_* get a from and to size specifier
1575
* makeregsize only accepts newregister
1576
* i386 uses generic tcgnotnode,tcgunaryminus
1578
Revision 1.67 2003/06/01 21:38:06 peter
1579
* getregisterfpu size parameter added
1580
* op_const_reg size parameter added
1583
Revision 1.66 2003/05/30 23:57:08 peter
1584
* more sparc cleanup
1585
* accumulator removed, splitted in function_return_reg (called) and
1586
function_result_reg (caller)
1588
Revision 1.65 2003/05/30 18:55:21 jonas
1589
* fixed several regvar related bugs for non-i386. make cycle with -Or now
1592
Revision 1.64 2003/05/26 21:17:17 peter
1593
* procinlinenode removed
1594
* aktexit2label removed, fast exit removed
1595
+ tcallnode.inlined_pass_2 added
1597
Revision 1.63 2003/05/23 14:27:35 peter
1598
* remove some unit dependencies
1599
* current_procinfo changes to store more info
1601
Revision 1.62 2003/05/17 13:30:08 jonas
1602
* changed tt_persistant to tt_persistent :)
1603
* tempcreatenode now doesn't accept a boolean anymore for persistent
1604
temps, but a ttemptype, so you can also create ansistring temps etc
1606
Revision 1.61 2003/05/16 14:33:31 peter
1609
Revision 1.60 2003/05/13 19:14:41 peter
1611
* inherited result code check moven to pexpr
1613
Revision 1.59 2003/05/11 21:37:03 peter
1614
* moved implicit exception frame from ncgutil to psub
1615
* constructor/destructor helpers moved from cobj/ncgutil to psub
1617
Revision 1.58 2003/04/30 15:45:35 florian
1618
* merged more x86-64/i386 code
1620
Revision 1.57 2003/04/29 07:29:14 michael
1621
+ Patch from peter to fix wrong pushing of ansistring function results in open array
1623
Revision 1.56 2003/04/27 11:21:33 peter
1624
* aktprocdef renamed to current_procinfo.procdef
1625
* procinfo renamed to current_procinfo
1626
* procinfo will now be stored in current_module so it can be
1628
* gen_main_procsym changed to create_main_proc and release_main_proc
1629
to also generate a tprocinfo structure
1630
* fixed unit implicit initfinal
1632
Revision 1.55 2003/04/22 23:50:22 peter
1633
* firstpass uses expectloc
1634
* checks if there are differences between the expectloc and
1635
location.loc from secondpass in EXTDEBUG
1637
Revision 1.54 2003/04/17 07:50:24 daniel
1638
* Some work on interference graph construction
1640
Revision 1.53 2003/04/06 21:11:23 olle
1641
* changed newasmsymbol to newasmsymboldata for data symbols
1643
Revision 1.52 2003/03/28 19:16:56 peter
1644
* generic constructor working for i386
1645
* remove fixed self register
1646
* esi added as address register for i386
1648
Revision 1.51 2003/02/19 22:00:14 daniel
1649
* Code generator converted to new register notation
1650
- Horribily outdated todo.txt removed
1652
Revision 1.50 2003/02/15 22:17:38 carl
1653
* bugfix of FPU emulation code
1655
Revision 1.49 2003/01/08 18:43:56 daniel
1656
* Tregister changed into a record
1658
Revision 1.48 2003/01/03 09:51:58 daniel
1659
* Compiler now cycles with var_notification
1661
Revision 1.47 2003/01/02 15:29:25 daniel
1662
* Some debugging on for loop optimization
1664
Revision 1.46 2002/12/31 09:55:58 daniel
1665
+ Notification implementation complete
1666
+ Add for loop code optimization using notifications
1667
results in 1.5-1.9% speed improvement in nestloop benchmark
1668
Optimization incomplete, compiler does not cycle yet with
1669
notifications enabled.
1671
Revision 1.45 2002/11/28 11:17:01 florian
1672
* loop node flags from node flags splitted
1674
Revision 1.44 2002/11/25 17:43:17 peter
1675
* splitted defbase in defutil,symutil,defcmp
1676
* merged isconvertable and is_equal into compare_defs(_ext)
1677
* made operator search faster by walking the list only once
1679
Revision 1.43 2002/09/30 07:00:45 florian
1680
* fixes to common code to get the alpha compiler compiled applied
1682
Revision 1.42 2002/09/07 15:25:02 peter
1683
* old logs removed and tabs fixed
1685
Revision 1.41 2002/09/01 18:47:00 peter
1686
* assignn check in exitnode changed to use a separate boolean as the
1687
assignn can be changed to a calln
1689
Revision 1.40 2002/09/01 14:41:47 peter
1690
* increase refcount in exit(arg) for arg
1692
Revision 1.39 2002/08/24 18:41:52 peter
1693
* fixed wrong label in jump of except block (was also in n386flw wrong)
1694
* fixed wrong pushing of raise parameters
1695
* fixed wrong compare in finally
1697
Revision 1.38 2002/08/23 16:14:48 peter
1699
* tt_noreuse temp type added that will be used in genentrycode
1701
Revision 1.37 2002/08/19 19:36:43 peter
1702
* More fixes for cross unit inlining, all tnodes are now implemented
1703
* Moved pocall_internconst to po_internconst because it is not a
1704
calling type at all and it conflicted when inlining of these small
1705
functions was requested
1707
Revision 1.36 2002/08/15 15:15:55 carl
1708
* jmpbuf size allocation for exceptions is now cpu specific (as it should)
1709
* more generic nodes for maths
1710
* several fixes for better m68k support
1712
Revision 1.35 2002/08/13 18:01:52 carl
1713
* rename swatoperands to swapoperands
1714
+ m68k first compilable version (still needs a lot of testing):
1715
assembler generator, system information , inline
1718
Revision 1.34 2002/08/11 14:32:26 peter
1719
* renamed current_library to objectlibrary
1721
Revision 1.33 2002/08/11 13:24:11 peter
1722
* saving of asmsymbols in ppu supported
1723
* asmsymbollist global is removed and moved into a new class
1724
tasmlibrarydata that will hold the info of a .a file which
1725
corresponds with a single module. Added librarydata to tmodule
1726
to keep the library info stored for the module. In the future the
1727
objectfiles will also be stored to the tasmlibrarydata class
1728
* all getlabel/newasmsymbol and friends are moved to the new class
1730
Revision 1.32 2002/08/09 19:10:59 carl
1731
* fixed generic exception management
1733
Revision 1.31 2002/08/04 19:06:41 carl
1734
+ added generic exception support (still does not work!)
1735
+ more documentation
1737
Revision 1.30 2002/07/27 19:53:51 jonas
1738
+ generic implementation of tcg.g_flags2ref()
1739
* tcg.flags2xxx() now also needs a size parameter
1741
Revision 1.29 2002/07/25 17:56:29 carl
1742
+ FPURESULTREG -> FPU_RESULT_REG
1744
Revision 1.28 2002/07/21 06:58:49 daniel
1745
* Changed booleans into flags
1747
Revision 1.27 2002/07/20 12:54:53 daniel
1748
* Optimized the code generated for for nodes. The shootout/nestloop benchmark
1749
now runs 5% faster on my computer.
1751
Revision 1.26 2002/07/20 11:57:54 florian
1752
* types.pas renamed to defbase.pas because D6 contains a types
1753
unit so this would conflicts if D6 programms are compiled
1754
+ Willamette/SSE2 instructions to assembler added
1756
Revision 1.25 2002/07/20 11:15:51 daniel
1757
* The for node does a check if the first comparision can be skipped. I moved
1758
the check from the second pass to the resulttype pass. The advantage is
1759
that the state tracker can now decide to skip the first comparision too.
1761
Revision 1.24 2002/07/20 08:14:24 daniel
1762
* Loops should not be aligned when optimizing for size
1764
Revision 1.23 2002/07/19 11:41:35 daniel
1765
* State tracker work
1766
* The whilen and repeatn are now completely unified into whilerepeatn. This
1767
allows the state tracker to change while nodes automatically into
1769
* Resulttypepass improvements to the notn. 'not not a' is optimized away and
1770
'not(a>b)' is optimized into 'a<=b'.
1771
* Resulttypepass improvements to the whilerepeatn. 'while not a' is optimized
1772
by removing the notn and later switchting the true and falselabels. The
1773
same is done with 'repeat until not a'.
1775
Revision 1.22 2002/07/04 20:43:01 florian
1776
* first x86-64 patches
1453
Revision 1.104 2005/02/14 17:13:06 peter
1456
Revision 1.103 2005/01/31 16:16:21 peter
1457
* for-node cleanup, checking for uninitialzed from and to values