[m-rev.] diff: fix smart recompilation bug
Simon Taylor
stayl at cs.mu.OZ.AU
Tue Jul 30 02:28:52 AEST 2002
Estimated hours taken: 1.5
Branches: main
Fix a bug which caused a compiler abort when compiling
make_hlds.m with `--smart-recompilation'.
compiler/recompilation.m:
Don't attempt to record builtin items as used.
The bug was caused by attempting to record tuple
types as used when generating the unification
predicate for them.
tests/valid/Mmakefile:
tests/valid/tuple_eqv.m:
Test case.
Index: compiler/recompilation.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/recompilation.m,v
retrieving revision 1.5
diff -u -u -r1.5 recompilation.m
--- compiler/recompilation.m 20 Mar 2002 12:37:17 -0000 1.5
+++ compiler/recompilation.m 29 Jul 2002 13:05:56 -0000
@@ -364,6 +364,17 @@
).
recompilation__record_used_item(ItemType, Id, QualifiedId) -->
+ (
+ % Don't record builtin items (QualifiedId may be unqualified
+ % for predicates, functions and functors because they aren't
+ % qualified until after typechecking).
+ { ItemType \= predicate },
+ { ItemType \= function },
+ { ItemType \= functor },
+ { QualifiedId = unqualified(_) - _ }
+ ->
+ []
+ ;
ItemSet0 =^ used_items,
{ IdSet0 = extract_ids(ItemSet0, ItemType) },
{ QualifiedId = QualifiedName - Arity },
@@ -386,7 +397,8 @@
MatchingNames, IdSet) },
{ ItemSet = update_ids(ItemSet0, ItemType, IdSet) },
^ used_items := ItemSet
- ).
+ )
+ ).
recompilation__record_expanded_items(Item, ExpandedItems, Info0, Info) :-
( set__empty(ExpandedItems) ->
Index: tests/valid/Mmakefile
===================================================================
RCS file: /home/mercury1/repository/tests/valid/Mmakefile,v
retrieving revision 1.109
diff -u -u -r1.109 Mmakefile
--- tests/valid/Mmakefile 23 Jul 2002 13:34:03 -0000 1.109
+++ tests/valid/Mmakefile 29 Jul 2002 16:08:18 -0000
@@ -165,6 +165,7 @@
transitive_instance.m \
tricky_assert2.m \
tricky_ite.m \
+ tuple_eqv.m \
two_pragma_c_codes.m \
two_way_unif.m \
typeclass_inlining_bug.m \
@@ -321,6 +322,7 @@
MCFLAGS-simplify_bug = -O-1
MCFLAGS-simplify_bug2 = -O3
MCFLAGS-spurious_purity_warning = --halt-at-warn
+MCFLAGS-tuple_eqv = --smart-recompilation
MCFLAGS-two_way_unif = -O-1
MCFLAGS-type_inf_ambig_test = --infer-all
MCFLAGS-typeclass_det_warning = --halt-at-warn
Index: tests/valid/tuple_eqv.m
===================================================================
RCS file: tests/valid/tuple_eqv.m
diff -N tests/valid/tuple_eqv.m
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/valid/tuple_eqv.m 29 Jul 2002 16:07:26 -0000
@@ -0,0 +1,6 @@
+:- module tuple_eqv.
+
+:- interface.
+
+:- type t == {int, int}.
+
--------------------------------------------------------------------------
mercury-reviews mailing list
post: mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------
More information about the reviews
mailing list