2020-12-01 10:16 AEDT

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0000526mercuryBugpublic2020-11-30 13:35
Reporterwangp 
Assigned To 
PrioritynormalSeverityminorReproducibilityalways
StatusnewResolutionopen 
Product Version 
Target VersionFixed in Version 
Summary0000526: unused imports affected by opt-imported typeclass instances
DescriptionSome basic investigation of why warnings/bug412.m fails when intermodule optimisation is enabled.

The `io' module is considered used because polymorphism adds a typeclass info to the constant structure database due to opt-imported typeclass instances. Then const_struct_used_modules treats every constant structure as a use:

const_struct_used_modules(_ConstNum - ConstStruct, !UsedModules) :-
    % Every const_struct in the const_struct_db was put there because
    % it is used in module. None of the uses can be in the interface.
TagsNo tags attached.
Attached Files

-Relationships
+Relationships

-Notes

~0001124

zs (developer)

The obvious fix is to add a field to each entry to the const_struct_db
that says "does this entry come from the current module, or not?",
and then ignore the fields with "no" answers when it comes to computing
the set of used modules. The only nontrivial aspect I see is when
two or more const structs use a smaller const struct; the smaller
const struct should say "for this module" if any of its users also say so.

Do you see anything wrong with this approach?

~0001125

wangp (developer)

I think your approach should work.

(Sorry for the late response; the notification was caught by GMail's spam filter.)
+Notes

-Issue History
Date Modified Username Field Change
2020-11-11 11:34 wangp New Issue
2020-11-12 03:13 zs Note Added: 0001124
2020-11-30 13:35 wangp Note Added: 0001125
+Issue History