1227825Stheraven(*
2227825Stheraven    Copyright David C. J. Matthews 2018-19
3227825Stheraven
4227825Stheraven    This library is free software; you can redistribute it and/or
5227825Stheraven    modify it under the terms of the GNU Lesser General Public
6227825Stheraven    License version 2.1 as published by the Free Software Foundation.
7227825Stheraven    
8227825Stheraven    This library is distributed in the hope that it will be useful,
9227825Stheraven    but WITHOUT ANY WARRANTY; without even the implied warranty of
10227825Stheraven    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11227825Stheraven    Lesser General Public License for more details.
12227825Stheraven    
13227825Stheraven    You should have received a copy of the GNU Lesser General Public
14227825Stheraven    License along with this library; if not, write to the Free Software
15227825Stheraven    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
16227825Stheraven*)
17227825Stheraven
18227825Stheravensignature X86ICODEOPTSIG =
19227825Stheravensig
20227825Stheraven    type extendedBasicBlock and basicBlock and regProperty
21227825Stheraven
22227825Stheraven    datatype optimise = Changed of basicBlock vector * regProperty vector | Unchanged
23227825Stheraven    
24227825Stheraven    val optimiseICode:
25227825Stheraven        { code: extendedBasicBlock vector, pregProps: regProperty vector, ccCount: int,
26227825Stheraven          debugSwitches: Universal.universal list } -> optimise
27227825Stheraven
28227825Stheraven    structure Sharing:
29227825Stheraven    sig
30        type extendedBasicBlock = extendedBasicBlock
31        and basicBlock = basicBlock
32        and regProperty = regProperty
33        and optimise = optimise
34    end
35end;
36