Knowledge (XXG)

Portable C Compiler

Source 📝

450: 1041: 180: 1546: 866:
But that's never really been the agenda, see. Some people think we hate GNU code. But the thing is we hate large code, and buggy code that upstream does not maintain. That's the real problem… gcc gets about 5-6% slower every release, has new bugs, generates crappy code, and drives us nuts. This is
247:. It was very influential in its day, so much so that at the beginning of the 1980s, the majority of C compilers were based on it. Anders Magnusson and Peter A Jonsson restarted development of pcc in 2007, rewriting it extensively to support the 335:
The big benefit of it (apart from that it's BSD licensed, for license geeks) is that it is fast, 5-10 times faster than gcc, while still producing reasonable code. <...> t is also quite simple to
301:-generated parser and used a more general target machine model. Both compilers produced target-specific assembly language code which they then assembled to produce linkable object modules. 381:
asserts that pcc is not ready yet to be a gcc replacement, and the disposal of gcc is not top priority. On December 29, 2009, pcc became capable of building a functional x86
1073: 231:
Being one of the first compilers that could easily be adapted to output code for different computer architectures, the compiler had a long life span. It debuted in
1840: 1777: 297:, and relied on an optional machine-specific optimizer to improve the assembly language code it generated. In contrast, Johnson's pccm was based on a 1845: 361:
source tree. There had been some speculation that it might eventually be used to supplant the GNU C Compiler on BSD-based operating systems, though
1850: 431:
in 2012. Development on it had stalled and no maintainer had stepped up to develop it into something that could make a practical alternative to
777: 1066: 455: 846: 1792: 1748: 1386: 1550: 579: 536: 327:
A new version of pcc, based on the original by Steve Johnson, is maintained by Anders Magnusson. The compiler is provided under the
1584: 1367: 1276: 1059: 1728: 1485: 236: 1457: 1505: 1515: 1500: 1206: 532: 217: 71: 1462: 1191: 931: 684: 1510: 1216: 1113: 1108: 1103: 42: 1490: 1201: 1149: 1082: 800: 308: 290: 205: 128: 100: 304:
Later versions of PCC, known within Bell Labs as "QCC" and "RCC," supported other target architecture models.
1353: 1328: 501:
Proceedings of the 5th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages. Tucson, Arizona.
432: 1371: 1797: 1679: 1313: 463: 1698: 823: 1333: 1765: 1577: 1034: 260: 232: 154: 331:
and its development is funded by a non-profit organization called BSD Fund. According to Magnusson:
1343: 1305: 1196: 730: 123: 991: 976: 769: 1414: 1179: 961: 748: 711: 565: 514: 492: 209: 30: 880: 319:
return type (for functions that don't return any value), enumerations and structure assignment.
628:
The second ACM SIGPLAN conference on History of programming languages. Cambridge, Massachusetts
1247: 1242: 1211: 1154: 1144: 598: 575: 413: 312: 275: 854: 1855: 1769: 1743: 504: 138: 107: 1860: 1787: 1570: 1358: 1318: 1226: 885: 689: 544: 1376: 1046: 388:
pcc version 1.0 was released on 1 April 2011. As of this release, the compiler supports
1807: 1733: 1531: 1338: 1264: 1164: 1040: 619: 286: 244: 225: 179: 1834: 1812: 1716: 1434: 1424: 1363: 374: 271: 518: 1404: 1169: 279: 569: 1694: 1684: 1495: 623: 473: 428: 328: 268: 143: 1006: 574:. Unix Programmer's Manual, 7th edition, Volume 2. Holt, Rinehart and Winston. 1139: 1118: 445: 417: 37: 25: 602: 213: 116: 438:
The latest version of pcc, namely 1.1.0, was released on 10 December 2014.
509: 496: 1802: 1659: 1439: 1429: 1409: 1254: 1221: 1159: 1051: 773: 753: 639:
At the start of the decade, nearly every compiler was based on Johnson's
264: 201: 131: 1755: 1123: 939: 405: 401: 382: 378: 362: 354: 907: 658: 1817: 1706: 1674: 1669: 1664: 1625: 1609: 1594: 1562: 1394: 1291: 1286: 1093: 416:. Further development, including support for more architectures, and 397: 393: 366: 358: 350: 347: 294: 240: 282:
and performs more thorough validity checks than its contemporaries.
1480: 643:; by 1985 there were many independently-produced compiler products. 421: 1738: 1721: 1638: 1419: 1399: 1323: 1271: 1259: 468: 409: 370: 1782: 1711: 1643: 1281: 298: 112: 1566: 1055: 1098: 389: 248: 307:
The language that PCC implements is an extended version of
357:
source trees in September 2007, and later into the main
867:
just an attempt to see if something better can show up.
216:
in the mid-1970s, based in part on ideas proposed by
1764: 1693: 1652: 1618: 1602: 1524: 1471: 1448: 1385: 1304: 1235: 1178: 1132: 149: 137: 122: 106: 96: 70: 48: 36: 24: 16:
C compiler for Unix and Unix-like operating systems
770:"FreeBSD 10 To Use Clang Compiler, Deprecate GCC" 224:C compiler by Bell Labs... with the blessing of 333: 881:"Call for testing: pcc and the OpenBSD kernel" 1578: 1067: 653: 651: 8: 593: 591: 293:, incorporated specific knowledge about the 19: 200:- portable C compiler machine) is an early 1585: 1571: 1563: 1184: 1074: 1060: 1052: 1039: 497:"A portable compiler: theory and practice" 315:has called "Classic C", incorporating the 263:and improved diagnostic capabilities. The 178: 18: 749:"GCC Compiler Finally Supplanted by PCC?" 508: 801:"HEADS UP: Clang now the default on x86" 537:"A Portable Compiler for the Language C" 822:Joerg, Sonnenberger (17 October 2013). 484: 267:was designed so that only a few of its 571:A Tour Through the Portable C Compiler 424:front ends, is continuing as of 2022. 541:Master's Thesis. MIT, Cambridge, Mass 243:in 1994, when it was replaced by the 7: 685:"BSD Licensed PCC Compiler Imported" 456:Free and open-source software portal 396:processor architectures and runs on 624:"The development of the C language" 1841:C (programming language) compilers 780:from the original on 10 April 2015 346:This new version was added to the 14: 977:"Re: Story behind PCC's removal?" 799:Brooks, Davis (5 November 2012). 427:PCC was removed from the OpenBSD 285:The first C compiler, written by 77:1.1.0 / December 10, 2014 1545: 1544: 1005:Magnusson, Anders (2014-12-10). 906:Magnusson, Anders (2011-04-01). 847:"More on OpenBSD's new compiler" 768:Larabel, Michael (12 May 2012). 448: 373:as a potential replacement, and 1846:Free compilers and interpreters 1851:Software using the BSD license 729:Brownlee, David (2007-09-20). 1: 879:de Weerd, Paul (2009-12-29). 710:Moerbeek, Otto (2007-09-15). 278:. It is relatively robust to 220:in 1973, and "distributed as 975:Peter Hessler (2012-06-18). 938:. 2011-04-01. Archived from 259:Key features of pcc are its 962:"CVS: cvs.openbsd.org: src" 712:"CVS: cvs.openbsd.org: src" 683:Erdely, Mike (2007-09-15). 54:; 45 years ago 1877: 1458:Compatibility of C and C++ 990:Miod Vallat (2013-07-31). 960:Paul Irofti (2012-04-12). 845:Matzan, Jem (2007-10-15). 731:"CVS commit: src/dist/pcc" 603:Sibling rivalry: C and C++ 43:AT&T Bell Laboratories 1540: 1187: 1089: 663:pcc - portable c compiler 92: 66: 608:(Report). AT&T Labs. 291:recursive descent parser 433:GNU Compiler Collection 1463:Comparison with Pascal 1083:C programming language 992:"Compilers in OpenBSD" 824:"Importing LLVM/Clang" 464:Amsterdam Compiler Kit 344: 206:C programming language 510:10.1145/512760.512771 239:until the release of 79:; 9 years ago 932:"BSD Fund: pcc fund" 369:are both looking to 233:Seventh Edition Unix 1011:Portable C Compiler 912:Portable C Compiler 412:distributions, and 190:Portable C Compiler 21: 20:Portable C Compiler 1653:Notable subsystems 630:. pp. 201–208 620:Ritchie, Dennis M. 599:Stroustrup, Bjarne 210:Stephen C. Johnson 31:Stephen C. Johnson 26:Original author(s) 1828: 1827: 1560: 1559: 1300: 1299: 414:Microsoft Windows 313:Bjarne Stroustrup 276:machine-dependent 235:and shipped with 186: 185: 1868: 1619:Related projects 1603:Operating system 1587: 1580: 1573: 1564: 1548: 1547: 1185: 1180:Standard library 1076: 1069: 1062: 1053: 1043: 1038: 1037: 1035:Official website 1021: 1020: 1018: 1017: 1002: 996: 995: 987: 981: 980: 972: 966: 965: 957: 951: 950: 948: 947: 928: 922: 921: 919: 918: 903: 897: 896: 894: 893: 876: 870: 869: 863: 862: 853:. Archived from 842: 836: 835: 833: 831: 819: 813: 812: 810: 808: 796: 790: 789: 787: 785: 765: 759: 758: 745: 739: 738: 726: 720: 719: 707: 701: 700: 698: 697: 680: 674: 673: 671: 670: 655: 646: 645: 636: 635: 616: 610: 609: 607: 595: 586: 585: 562: 556: 555: 553: 552: 543:. Archived from 529: 523: 522: 512: 489: 458: 453: 452: 451: 342: 341:Anders Magnusson 318: 182: 177: 174: 172: 170: 168: 166: 164: 162: 160: 158: 156: 108:Operating system 87: 85: 80: 62: 60: 55: 22: 1876: 1875: 1871: 1870: 1869: 1867: 1866: 1865: 1831: 1830: 1829: 1824: 1760: 1689: 1648: 1614: 1598: 1591: 1561: 1556: 1536: 1520: 1473: 1467: 1451:other languages 1450: 1449:Comparison with 1444: 1381: 1319:Borland Turbo C 1296: 1236:Implementations 1231: 1174: 1128: 1085: 1080: 1047:Archive at TUHS 1033: 1032: 1029: 1024: 1015: 1013: 1007:"1.1.0 Release" 1004: 1003: 999: 989: 988: 984: 974: 973: 969: 959: 958: 954: 945: 943: 930: 929: 925: 916: 914: 905: 904: 900: 891: 889: 886:OpenBSD Journal 878: 877: 873: 860: 858: 844: 843: 839: 829: 827: 821: 820: 816: 806: 804: 798: 797: 793: 783: 781: 767: 766: 762: 747: 746: 742: 737:(Mailing list). 728: 727: 723: 718:(Mailing list). 709: 708: 704: 695: 693: 690:OpenBSD Journal 682: 681: 677: 668: 666: 657: 656: 649: 633: 631: 618: 617: 613: 605: 597: 596: 589: 582: 564: 563: 559: 550: 548: 531: 530: 526: 491: 490: 486: 482: 454: 449: 447: 444: 343: 340: 325: 323:Current version 316: 257: 192:(also known as 163:/20231212090621 153: 88: 83: 81: 78: 58: 56: 53: 49:Initial release 17: 12: 11: 5: 1874: 1872: 1864: 1863: 1858: 1853: 1848: 1843: 1833: 1832: 1826: 1825: 1823: 1822: 1821: 1820: 1810: 1805: 1800: 1795: 1790: 1785: 1780: 1778:802.11 drivers 1774: 1772: 1762: 1761: 1759: 1758: 1753: 1752: 1751: 1741: 1736: 1731: 1726: 1725: 1724: 1714: 1709: 1703: 1701: 1691: 1690: 1688: 1687: 1682: 1677: 1672: 1667: 1662: 1656: 1654: 1650: 1649: 1647: 1646: 1641: 1636: 1631: 1628: 1622: 1620: 1616: 1615: 1613: 1612: 1606: 1604: 1600: 1599: 1592: 1590: 1589: 1582: 1575: 1567: 1558: 1557: 1555: 1554: 1541: 1538: 1537: 1535: 1534: 1532:Dennis Ritchie 1528: 1526: 1522: 1521: 1519: 1518: 1513: 1508: 1503: 1498: 1493: 1488: 1483: 1477: 1475: 1469: 1468: 1466: 1465: 1460: 1454: 1452: 1446: 1445: 1443: 1442: 1437: 1432: 1427: 1422: 1417: 1412: 1407: 1402: 1397: 1391: 1389: 1383: 1382: 1380: 1379: 1374: 1361: 1356: 1351: 1346: 1341: 1336: 1331: 1326: 1321: 1316: 1310: 1308: 1302: 1301: 1298: 1297: 1295: 1294: 1289: 1284: 1279: 1274: 1269: 1268: 1267: 1257: 1252: 1251: 1250: 1239: 1237: 1233: 1232: 1230: 1229: 1224: 1219: 1214: 1209: 1207:Dynamic memory 1204: 1199: 1194: 1188: 1182: 1176: 1175: 1173: 1172: 1167: 1162: 1157: 1152: 1147: 1142: 1136: 1134: 1130: 1129: 1127: 1126: 1121: 1116: 1111: 1106: 1101: 1096: 1090: 1087: 1086: 1081: 1079: 1078: 1071: 1064: 1056: 1050: 1049: 1044: 1028: 1027:External links 1025: 1023: 1022: 997: 982: 967: 952: 923: 898: 871: 851:The Jem Report 837: 826:(Mailing list) 814: 803:(Mailing list) 791: 760: 740: 735:source-changes 721: 702: 675: 647: 611: 587: 580: 557: 524: 483: 481: 478: 477: 476: 471: 466: 460: 459: 443: 440: 385:kernel image. 338: 324: 321: 287:Dennis Ritchie 256: 253: 245:GNU C Compiler 226:Dennis Ritchie 184: 183: 151: 147: 146: 141: 135: 134: 126: 120: 119: 110: 104: 103: 98: 94: 93: 90: 89: 76: 74: 72:Stable release 68: 67: 64: 63: 50: 46: 45: 40: 34: 33: 28: 15: 13: 10: 9: 6: 4: 3: 2: 1873: 1862: 1859: 1857: 1854: 1852: 1849: 1847: 1844: 1842: 1839: 1838: 1836: 1819: 1816: 1815: 1814: 1811: 1809: 1806: 1804: 1801: 1799: 1796: 1794: 1791: 1789: 1786: 1784: 1781: 1779: 1776: 1775: 1773: 1771: 1767: 1763: 1757: 1754: 1750: 1747: 1746: 1745: 1742: 1740: 1737: 1735: 1732: 1730: 1727: 1723: 1720: 1719: 1718: 1715: 1713: 1710: 1708: 1705: 1704: 1702: 1700: 1696: 1692: 1686: 1683: 1681: 1678: 1676: 1673: 1671: 1668: 1666: 1663: 1661: 1658: 1657: 1655: 1651: 1645: 1642: 1640: 1637: 1635: 1632: 1629: 1627: 1624: 1623: 1621: 1617: 1611: 1608: 1607: 1605: 1601: 1596: 1588: 1583: 1581: 1576: 1574: 1569: 1568: 1565: 1553: 1552: 1543: 1542: 1539: 1533: 1530: 1529: 1527: 1523: 1517: 1514: 1512: 1509: 1507: 1504: 1502: 1499: 1497: 1494: 1492: 1489: 1487: 1484: 1482: 1479: 1478: 1476: 1470: 1464: 1461: 1459: 1456: 1455: 1453: 1447: 1441: 1438: 1436: 1435:Visual Studio 1433: 1431: 1428: 1426: 1425:GNOME Builder 1423: 1421: 1418: 1416: 1413: 1411: 1408: 1406: 1403: 1401: 1398: 1396: 1393: 1392: 1390: 1388: 1384: 1378: 1375: 1373: 1369: 1365: 1364:Visual Studio 1362: 1360: 1357: 1355: 1352: 1350: 1347: 1345: 1342: 1340: 1337: 1335: 1332: 1330: 1327: 1325: 1322: 1320: 1317: 1315: 1312: 1311: 1309: 1307: 1303: 1293: 1290: 1288: 1285: 1283: 1280: 1278: 1275: 1273: 1270: 1266: 1263: 1262: 1261: 1258: 1256: 1253: 1249: 1246: 1245: 1244: 1241: 1240: 1238: 1234: 1228: 1225: 1223: 1220: 1218: 1215: 1213: 1210: 1208: 1205: 1203: 1200: 1198: 1195: 1193: 1190: 1189: 1186: 1183: 1181: 1177: 1171: 1168: 1166: 1163: 1161: 1158: 1156: 1153: 1151: 1148: 1146: 1143: 1141: 1138: 1137: 1135: 1131: 1125: 1122: 1120: 1117: 1115: 1112: 1110: 1107: 1105: 1102: 1100: 1097: 1095: 1092: 1091: 1088: 1084: 1077: 1072: 1070: 1065: 1063: 1058: 1057: 1054: 1048: 1045: 1042: 1036: 1031: 1030: 1026: 1012: 1008: 1001: 998: 993: 986: 983: 978: 971: 968: 963: 956: 953: 942:on 2009-01-05 941: 937: 933: 927: 924: 913: 909: 908:"1.0 Release" 902: 899: 888: 887: 882: 875: 872: 868: 857:on 2012-01-04 856: 852: 848: 841: 838: 825: 818: 815: 802: 795: 792: 779: 775: 771: 764: 761: 756: 755: 750: 744: 741: 736: 732: 725: 722: 717: 713: 706: 703: 692: 691: 686: 679: 676: 664: 660: 659:"pcc history" 654: 652: 648: 644: 642: 629: 625: 621: 615: 612: 604: 600: 594: 592: 588: 583: 581:0-03-061743-X 577: 573: 572: 567: 566:Johnson, S.C. 561: 558: 547:on 2006-09-05 546: 542: 538: 534: 528: 525: 520: 516: 511: 506: 502: 498: 494: 493:Johnson, S.C. 488: 485: 479: 475: 472: 470: 467: 465: 462: 461: 457: 446: 441: 439: 436: 434: 430: 425: 423: 419: 415: 411: 407: 403: 399: 395: 391: 386: 384: 380: 376: 375:Theo de Raadt 372: 368: 364: 360: 356: 352: 349: 337: 332: 330: 322: 320: 314: 310: 305: 302: 300: 296: 292: 288: 283: 281: 280:syntax errors 277: 273: 270: 266: 262: 254: 252: 250: 246: 242: 238: 234: 229: 227: 223: 219: 215: 211: 207: 203: 199: 196:or sometimes 195: 191: 181: 176: 152: 148: 145: 142: 140: 136: 133: 130: 127: 125: 121: 118: 114: 111: 109: 105: 102: 99: 95: 91: 75: 73: 69: 65: 51: 47: 44: 41: 39: 35: 32: 29: 27: 23: 1695:File systems 1633: 1549: 1405:Code::Blocks 1377:Watcom C/C++ 1348: 1165:Preprocessor 1145:Header files 1014:. Retrieved 1010: 1000: 985: 970: 955: 944:. Retrieved 940:the original 935: 926: 915:. Retrieved 911: 901: 890:. Retrieved 884: 874: 865: 859:. Retrieved 855:the original 850: 840: 828:. Retrieved 817: 805:. Retrieved 794: 782:. Retrieved 763: 752: 743: 734: 724: 715: 705: 694:. Retrieved 688: 678: 667:. Retrieved 665:. 2010-06-21 662: 640: 638: 632:. Retrieved 627: 614: 570: 560: 549:. Retrieved 545:the original 540: 527: 500: 487: 437: 426: 387: 345: 334: 326: 306: 303: 284: 258: 230: 221: 197: 193: 189: 187: 38:Developer(s) 1685:Rump kernel 1496:Objective-C 1277:Windows CRT 936:bsdfund.org 757:2007-09-17. 716:openbsd-cvs 474:Open Watcom 429:source tree 329:BSD licence 261:portability 218:Alan Snyder 208:written by 144:BSD License 1835:Categories 1770:networking 1472:Descendant 1344:Norcroft C 1170:Data types 1119:Embedded C 1016:2022-04-22 946:2012-06-26 917:2011-12-17 892:2011-12-17 861:2011-12-17 696:2011-12-17 669:2012-06-26 634:2008-12-30 551:2006-07-19 533:Snyder, A. 503:: 97–104. 480:References 418:FORTRAN 77 408:, various 251:standard. 97:Written in 84:2014-12-10 1788:Bluetooth 1766:Firewalls 1717:disklabel 1474:languages 1306:Compilers 1248:libhybris 1150:Operators 1140:Functions 309:K&R C 289:, used a 214:Bell Labs 117:Unix-like 1803:IPFilter 1660:Veriexec 1551:Category 1525:Designer 1440:NetBeans 1430:KDevelop 1410:CodeLite 1255:dietlibc 1222:Variadic 1197:File I/O 1133:Features 830:23 April 807:23 April 784:23 April 778:Archived 774:Phoronix 622:(1993). 601:(2002). 568:(1981). 535:(1975). 519:14390804 495:(1978). 442:See also 339:—  265:compiler 255:Features 237:BSD Unix 204:for the 202:compiler 157:.archive 132:Compiler 1856:OpenBSD 1756:OpenZFS 1699:storage 1597:Project 1415:Eclipse 1368:Express 1124:MISRA C 406:FreeBSD 402:OpenBSD 383:OpenBSD 379:OpenBSD 363:FreeBSD 355:OpenBSD 336:port... 150:Website 139:License 82: ( 57: ( 1861:NetBSD 1818:pfsync 1707:bioctl 1675:envsys 1670:DTrace 1665:busdma 1630:netpgp 1626:pkgsrc 1610:NetBSD 1595:NetBSD 1395:Anjuta 1292:uClibc 1287:Newlib 1265:EGLIBC 1243:Bionic 1212:String 1160:Syntax 1155:String 1094:ANSI C 578:  517:  398:NetBSD 394:x86-64 367:NetBSD 359:NetBSD 351:pkgsrc 348:NetBSD 295:PDP-11 269:source 241:4.4BSD 165:/http: 1749:WAPBL 1739:tmpfs 1734:PUFFS 1722:fdisk 1639:tnftp 1506:Limbo 1420:Geany 1400:CLion 1324:Clang 1272:klibc 1260:glibc 1227:POSIX 606:(PDF) 515:S2CID 469:Clang 410:Linux 371:Clang 311:that 272:files 169:.ludd 167://pcc 1793:CARP 1783:ALTQ 1768:and 1729:LVM2 1712:CHFS 1697:and 1644:tcsh 1593:The 1516:Vala 1501:Alef 1387:IDEs 1354:SDCC 1282:musl 1217:Time 1202:Math 1192:Char 832:2015 809:2015 786:2015 576:ISBN 420:and 392:and 365:and 353:and 317:void 299:yacc 274:are 198:pccm 188:The 171:.ltu 161:/web 159:.org 124:Type 115:and 113:Unix 59:1979 52:1979 1808:NPF 1798:BPF 1744:UFS 1680:LKM 1634:pcc 1481:C++ 1372:C++ 1359:TCC 1349:PCC 1339:LCC 1334:ICC 1329:GCC 1314:ACK 1114:C23 1109:C17 1104:C11 1099:C99 641:pcc 505:doi 422:C++ 390:x86 377:of 249:C99 228:." 222:the 212:of 194:pcc 173:.se 155:web 1837:: 1813:PF 1511:Go 1486:C# 1370:, 1366:, 1009:. 934:. 910:. 883:. 864:. 849:. 776:. 772:. 754:/. 751:. 733:. 714:. 687:. 661:. 650:^ 637:. 626:. 590:^ 539:. 513:. 499:. 435:. 404:, 400:, 1586:e 1579:t 1572:v 1491:D 1075:e 1068:t 1061:v 1019:. 994:. 979:. 964:. 949:. 920:. 895:. 834:. 811:. 788:. 699:. 672:. 584:. 554:. 521:. 507:: 175:/ 129:C 101:C 86:) 61:)

Index

Original author(s)
Stephen C. Johnson
Developer(s)
AT&T Bell Laboratories
Stable release
C
Operating system
Unix
Unix-like
Type
C
Compiler
License
BSD License
web.archive.org/web/20231212090621/http://pcc.ludd.ltu.se/
Edit this at Wikidata
compiler
C programming language
Stephen C. Johnson
Bell Labs
Alan Snyder
Dennis Ritchie
Seventh Edition Unix
BSD Unix
4.4BSD
GNU C Compiler
C99
portability
compiler
source

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.