Developer Guide and Reference


GAP Message (Diagnostic ID 30534)


Add %s option for better type-based disambiguation analysis by the compiler if appropriate (the option will apply for the entire compilation). This will improve optimizations for the loop at line %d.


Use option
for the specified file. This option will help the compiler to optimize the loop at the specified line. You must verify that the ANSI rules are followed for the entire file. gcc assumes this property by default in default setting
; the Intel compiler does not. This option is particularly useful for C++ programs since it enables type-based disambiguation between pointers and other elemental datatypes (that in turn enables optimizations such as vectorization and parallelization).
enables or disables use of ANSI aliasing rules optimizations, and assert that the program adheres to these rules.
ANSI-aliasing rules are described in the Standards documentation:
  • C: ISO/IEC 9899, chapter 6.5 paragraph 7
  • C++: ISO/IEC 14882, chapter 3.10, paragraph 15
Consider the following:
#include <stddef.h>   template<typename T> class blocked_range { T my_begin; T my_end; public: blocked_range(); T begin() const {return my_begin;} T end() const {return my_end;} };   class ApplyMatAdd { double *const A, *const B, *const C; const size_t size; public: ApplyMatAdd(double *A_, double *B_, double *C_, size_t size_) : A(A_), B(B_), C(C_), size(size_) {} void operator()( const blocked_range<size_t>& range ) const; };   void ApplyMatAdd::operator()( const blocked_range<size_t>& range ) const { for (size_t i=range.begin(); i<range.end(); ++i) { for (size_t j=0; j<size; ++j) { C[i*size + j] = A[i*size + j] + B[i*size + j]; } } }
In this case, the compiler is unable to vectorize the innermost loop at setting
, the default.
If you determine it is safe to do so, you can compile the above example with the
option, which enables vectorization of the innermost loop.


Make sure that the semantics of this option are obeyed for the entire compilation.