Mercury Bugs - mercury
View Issue Details
0000032mercuryBugpublic2007-12-14 18:372007-12-14 18:37
Reporterzs 
Assigned To 
PrioritynormalSeverityminorReproducibilityalways
StatusnewResolutionopen 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0000032: loop invariant optimization generates invalid HLDS
DescriptionThe bug can be reproduced by
   mmc -Cv check_typeclass.m -Dmost -d145 -d150 -O5
The stage 150 HLDS dump shows that the loop invariant predicate for the is_valid_instance_type predicate has the argument HeadVar__6 in the argument list *twice*, in both cases with the mode unique>>unique, even though the right thing for loop_inv to do would have been not to pass it at all (it is computed *before* the loop is entered).

I think loop_inv might be confused by the fact that the sixth position in the "loop" call is an unwanted output.
Additional InformationThis bug occurs with version 1.117 of check_typeclass.m. I have a diff to make is_valid_instance_type look nicer, but the version with the change does not tickle this bug.
TagsNo tags attached.
Attached Files

There are no notes attached to this issue.

Issue History
2007-12-14 18:37zsNew Issue