Files
mercury/scripts/final_grade_options.sh-subr
Zoltan Somogyi 478cf3d8d4 Remove the implication from .debug to .tr.
Estimated hours taken: 1
Branches: main

compiler/handle_options.m:
scripts/final_grade_options.sh-subr.m:
	Remove the implication from .debug to .tr. This implication is no
	longer appropriate, since we now have both .tr and .trseg versions
	of trailing, and .trseg is the more useful one. However, since .tr
	is still used, replacing the implication with one from .debug to
	.trseg is not appropriate either.

	Removing the implication yields an executable size reduction of 6.8%,
	and speedup of 10%.
2009-06-04 07:48:21 +00:00

101 lines
2.4 KiB
Plaintext

#---------------------------------------------------------------------------#
# Copyright (C) 1998-2002, 2004-2007, 2009 The University of Melbourne.
# This file may only be copied under the terms of the GNU General
# Public License - see the file COPYING in the Mercury distribution.
#---------------------------------------------------------------------------#
#
# final_grade_options.sh-subr:
# An `sh' subroutine for handling implications between grade-related
# options. Used by the `ml', `mgnuc' and `c2init' scripts.
#
# The code here should be inserted after a script's option-parsing
# loop.
#
# IMPORTANT: any changes to the handling of grades here may also require
# changes to compiler/handle_options.m.
#
# This file should only use the shell variables initialized by
# init_grade_options.sh-subr.
#
#---------------------------------------------------------------------------#
use_minimal_model=false
case $use_minimal_model_stack_copy in
true)
use_minimal_model=true
;;
esac
case $use_minimal_model_own_stacks in
true)
use_minimal_model=true
;;
esac
#
# .tr grade is not compatible with .*mm*
# (see comment in runtime/mercury_tabling.c for rationale)
#
case $use_trail,$use_minimal_model in true,true)
echo "trailing and minimal model tabling are not compatible" 1>&2
exit 1 ;;
esac
#
# .exts grade is not compatible with .stseg
# (they are alternative ways of doing the same thing)
#
case $extend_stacks,$stack_segments in true,true)
echo "--extend-stacks-when-needed and --stack-segments are not compatible" 1>&2
exit 1 ;;
esac
#
# --decl-debug implies --debug
#
case $decl_debug in true)
debug=true ;;
esac
#
# --target asm, IL or Java implies --high-level-code
#
case $target in asm|il|java)
highlevel_code=true ;;
esac
#
# --target IL or Java implies --high-level-data
#
case $target in il|java)
highlevel_data=true ;;
esac
#
# --target IL or Java or Erlang implies --gc automatic
#
case $target in il|java|erlang)
gc_method=automatic ;;
esac
#
# --high-level-code disables the use of low-level gcc extensions
#
case $highlevel_code in true)
non_local_gotos=false
asm_labels=false
global_regs=false
;;
esac
#
# --use-regions-debug and --use-regions-profiling aren't meaningful
# without --use-regions
#
case $use_regions in false)
use_regions_debug=false
use_regions_profiling=false
;;
esac
#---------------------------------------------------------------------------#