无法从gcc';中找出/[ex]运算符;s-fdump树型万向节 在编译C++时使用-fDUDP树GIMPLE选项(GCC 4.6-1),得到代码中有以下功能的代码: std::_Vector_base<_Tp, _Alloc>::~_Vector_base() [with _Tp = int, _Alloc = std::allocator<int>] (struct _Vector_base * const this) { int * D.8482; long int D.8483; int * D.8484; long int D.8485; long int D.8486; long int D.8487; long unsigned int D.8488; int * D.8489; struct _Vector_impl * D.8490; { try { D.8482 = this->_M_impl._M_end_of_storage; D.8483 = (long int) D.8482; D.8484 = this->_M_impl._M_start; D.8485 = (long int) D.8484; D.8486 = D.8483 - D.8485; D.8487 = D.8486 /[ex] 4; D.8488 = (long unsigned int) D.8487; D.8489 = this->_M_impl._M_start; std::_Vector_base<int, std::allocator<int> >::_M_deallocate(this, D.8489, D.8488); } finally { D.8490 = &this->_M_impl; std::_Vector_base<int, std::allocator<int>::_Vector_impl::~_Vector_impl (D.8490); } } <D.8393>: } std::_Vector_base::~_Vector_base()[带_Tp=int,_Alloc=std::分配器](结构_Vector_base*const this) { int*D.8482; 长内特D.8483; int*D.8484; 长内特D.8485; 长内特D.8486; 长内特D.8487; 长无符号整数D.8488; 国际*D.8489; 结构向量impl*D.8490; { 尝试 { D.8482=这是存储的->\u M\u impl.\u M\u end\u; D.8483=(长整型)D.8482; D.8484=此->默认启动; D.8485=(长整型)D.8484; D.8486=D.8483-D.8485; D.8487=D.8486/[ex]4; D.8488=(长无符号整数)D.8487; D.8489=此->默认启动; std::_Vector_base::_M_deallocate(此,D.8489,D.8488); } 最后 { D.8490=&this->\u M\u impl; std::_Vector_base

无法从gcc';中找出/[ex]运算符;s-fdump树型万向节 在编译C++时使用-fDUDP树GIMPLE选项(GCC 4.6-1),得到代码中有以下功能的代码: std::_Vector_base<_Tp, _Alloc>::~_Vector_base() [with _Tp = int, _Alloc = std::allocator<int>] (struct _Vector_base * const this) { int * D.8482; long int D.8483; int * D.8484; long int D.8485; long int D.8486; long int D.8487; long unsigned int D.8488; int * D.8489; struct _Vector_impl * D.8490; { try { D.8482 = this->_M_impl._M_end_of_storage; D.8483 = (long int) D.8482; D.8484 = this->_M_impl._M_start; D.8485 = (long int) D.8484; D.8486 = D.8483 - D.8485; D.8487 = D.8486 /[ex] 4; D.8488 = (long unsigned int) D.8487; D.8489 = this->_M_impl._M_start; std::_Vector_base<int, std::allocator<int> >::_M_deallocate(this, D.8489, D.8488); } finally { D.8490 = &this->_M_impl; std::_Vector_base<int, std::allocator<int>::_Vector_impl::~_Vector_impl (D.8490); } } <D.8393>: } std::_Vector_base::~_Vector_base()[带_Tp=int,_Alloc=std::分配器](结构_Vector_base*const this) { int*D.8482; 长内特D.8483; int*D.8484; 长内特D.8485; 长内特D.8486; 长内特D.8487; 长无符号整数D.8488; 国际*D.8489; 结构向量impl*D.8490; { 尝试 { D.8482=这是存储的->\u M\u impl.\u M\u end\u; D.8483=(长整型)D.8482; D.8484=此->默认启动; D.8485=(长整型)D.8484; D.8486=D.8483-D.8485; D.8487=D.8486/[ex]4; D.8488=(长无符号整数)D.8487; D.8489=此->默认启动; std::_Vector_base::_M_deallocate(此,D.8489,D.8488); } 最后 { D.8490=&this->\u M\u impl; std::_Vector_base,c++,gcc,gimple,C++,Gcc,Gimple,/[ex]表示它是一个精确的除法表达式 根据GCC内部构件手册: 精确分区表达式 EXACT_DIV_EXPR代码用于表示整数除法,其中已知分子是分母的精确倍数。这允许后端在当前目标的TRUNC_DIV_EXPR、CEIL_DIV_EXPR和FLOOR_DIV_EXPR中选择速度更快的 我不打算将此作为回答,因为我没有支持文档,但我认为它有两个独立的标记/和[ex],第一个是除法,第二个是加宽运算符,使4表示与分子相同的类型。

/[ex]
表示它是一个精确的除法表达式

根据GCC内部构件手册:

精确分区表达式

EXACT_DIV_EXPR代码用于表示整数除法,其中已知分子是分母的精确倍数。这允许后端在当前目标的TRUNC_DIV_EXPR、CEIL_DIV_EXPR和FLOOR_DIV_EXPR中选择速度更快的


我不打算将此作为回答,因为我没有支持文档,但我认为它有两个独立的标记
/
[ex]
,第一个是除法,第二个是加宽运算符,使
4
表示与分子相同的类型。