1. 选项文件
GCC8.2.0 中的各种选项说明都是保存在以.opt
为后缀的文件里,通用选项和其内部标记信息保存在gcc/common.opt
中,前端相关的选项和一些警告类型选项保存在gcc/c-family/c.opt
中。在.opt
选项列表中,每个选项单独占用一行,注释由分号(;)开头,对空格没有严格要求。例如:
2. 选项定义
- 选项名字通常以
“f”
、“m”
或“W”
开头 - 选项与选项之间空行分隔,选项区分大小写,且单词之间
“-”
连接(例如:fdefault-inline
) - 一般以
“f”
、“m”
开头的选项都有一个默认的“no-”
形式,分别用于选项的打开和关闭操作
3. 选项添加位置
在前端词法分析和预处理的时候主要涉及gcc/c/c-opts.c
文件中的c_common_handle_option
函数,该函数根据所给的-f
或-W
选项返回true或是false。
c_common_handle_option
函数中所使用的选项参数定义在libcpp/include/cpplib.h
头文件中的cpp_options struct
中。
选项的定义位置在c.opt
中。
具体添加步骤如下:
-
在
struct cpp_options
中:
-
在
c.opt
中:
-
在
c_common_handle_option
函数中:
-
在
c-opts.c
中根据选项的返回值判断是否执行对应优化代码(其中cc_type_xx为自己声明的函数,my_fun也是自己的相关实现代码):
-
在
Makefile.in
中的C_COMMON_OBJS
内添加C-family front ends对应源码的.o文件