(* M2GenGCC.def convert the quadruples into GCC trees. Copyright (C) 2001-2023 Free Software Foundation, Inc. Contributed by Gaius Mulley . This file is part of GNU Modula-2. GNU Modula-2 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Modula-2; see the file COPYING3. If not see . *) DEFINITION MODULE M2GenGCC ; (* Title : M2GenGCC Author : Gaius Mulley System : UNIX (gm2) Date : Fri Jul 9 13:05:13 1999 Last edit : Fri Jul 9 13:05:13 1999 Description: provides an interface to GCC, essentially convert the internal quadruples of m2f into a GCC tree structure. *) FROM M2GCCDeclare IMPORT WalkAction ; FROM m2tree IMPORT Tree ; FROM m2linemap IMPORT location_t ; EXPORT QUALIFIED ConvertQuadsToTree, ResolveConstantExpressions, GetHighFromUnbounded, StringToChar, LValueToGenericPtr, ZConstToTypedConst, DoCopyString ; (* ConvertQuadsToTree - runs through the quadruple list, Start..End, and converts it into the GCC tree structure. *) PROCEDURE ConvertQuadsToTree (Start, End: CARDINAL) ; (* ResolveConstantExpressions - resolves constant expressions from the quadruple list. It returns TRUE if one or more constants were folded. When a constant symbol value is solved, the call back p(sym) is invoked. *) PROCEDURE ResolveConstantExpressions (p: WalkAction; start, end: CARDINAL) : BOOLEAN ; (* GetHighFromUnbounded - returns a Tree containing the value of param.HIGH. *) PROCEDURE GetHighFromUnbounded (location: location_t; dim, param: CARDINAL) : Tree ; (* StringToChar - if type=Char and str is a string (of size <= 1) then convert the string into a character constant. *) PROCEDURE StringToChar (t: Tree; type, str: CARDINAL) : Tree ; (* LValueToGenericPtr - returns a Tree representing symbol, sym. It coerces a lvalue into an internal pointer type *) PROCEDURE LValueToGenericPtr (location: location_t; sym: CARDINAL) : Tree ; (* ZConstToTypedConst - checks whether op1 and op2 are constants and coerces, t, appropriately. *) PROCEDURE ZConstToTypedConst (t: Tree; op1, op2: CARDINAL) : Tree ; (* DoCopyString - returns trees: t number of bytes to be copied (including the nul) op3t the string with the extra nul character providing it fits. *) PROCEDURE DoCopyString (tokenno: CARDINAL; VAR length, op3t: Tree; op1t, op3: CARDINAL) ; END M2GenGCC.