mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-08 10:23:03 +00:00
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%.
101 lines
2.4 KiB
Plaintext
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
|
|
|
|
#---------------------------------------------------------------------------#
|