Attached testcase (delta didn't reduce it any further) produces several warnings, when compiled with -O2:
gcc -O2 -S render_1.ii render_1.ii: In function âint pov::create_ray(pov::RAY*, double, double, int)â: render_1.ii:6494: warning: canonical types differ for identical types double __complex__ and double __complex__ <complex_type 0xb77a2b60 type <real_type 0xb7ce06e8 double sizes-gimplified type_6 DF size <integer_cst 0xb7cc2420 constant invariant 64> unit size <integer_cst 0xb7cc2438 constant invariant 8> align 64 symtab 0 alias set 2 canonical type 0xb7ce06e8 precision 64 pointer_to_this <pointer_type 0xb7ce0820> reference_to_this <reference_type 0xb793b6e8>> DC size <integer_cst 0xb7cc24f8 type <integer_type 0xb7cd8068 bit_size_type> constant invariant 128> unit size <integer_cst 0xb7cc2510 type <integer_type 0xb7cd8000 unsigned int> constant invariant 16> align 64 symtab 0 alias set -1 canonical type 0xb77a2b60> <complex_type 0xb7ce0d68 complex double type <real_type 0xb7ce06e8 double sizes-gimplified type_6 DF size <integer_cst 0xb7cc2420 constant invariant 64> unit size <integer_cst 0xb7cc2438 constant invariant 8> align 64 symtab 0 alias set 2 canonical type 0xb7ce06e8 precision 64 pointer_to_this <pointer_type 0xb7ce0820> reference_to_this <reference_type 0xb793b6e8>> DC size <integer_cst 0xb7cc24f8 type <integer_type 0xb7cd8068 bit_size_type> constant invariant 128> unit size <integer_cst 0xb7cc2510 type <integer_type 0xb7cd8000 unsigned int> constant invariant 16> align 64 symtab 0 alias set -1 canonical type 0xb7ce0d68> render_1.ii:6494: warning: canonical types differ for identical types double __complex__ and double __complex__ <complex_type 0xb77a2b60 type <real_type 0xb7ce06e8 double sizes-gimplified type_6 DF size <integer_cst 0xb7cc2420 constant invariant 64> unit size <integer_cst 0xb7cc2438 constant invariant 8> align 64 symtab 0 alias set 2 canonical type 0xb7ce06e8 precision 64 pointer_to_this <pointer_type 0xb7ce0820> reference_to_this <reference_type 0xb793b6e8>> DC size <integer_cst 0xb7cc24f8 type <integer_type 0xb7cd8068 bit_size_type> constant invariant 128> unit size <integer_cst 0xb7cc2510 type <integer_type 0xb7cd8000 unsigned int> constant invariant 16> align 64 symtab 0 alias set -1 canonical type 0xb77a2b60> <complex_type 0xb7ce0d68 complex double type <real_type 0xb7ce06e8 double sizes-gimplified type_6 DF size <integer_cst 0xb7cc2420 constant invariant 64> unit size <integer_cst 0xb7cc2438 constant invariant 8> align 64 symtab 0 alias set 2 canonical type 0xb7ce06e8 precision 64 pointer_to_this <pointer_type 0xb7ce0820> reference_to_this <reference_type 0xb793b6e8>> DC size <integer_cst 0xb7cc24f8 type <integer_type 0xb7cd8068 bit_size_type> constant invariant 128> unit size <integer_cst 0xb7cc2510 type <integer_type 0xb7cd8000 unsigned int> constant invariant 16> align 64 symtab 0 alias set -1 canonical type 0xb7ce0d68> -- Summary: warning: canonical types differ for identical types double __complex__ and double __complex__ Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ubizjak at gmail dot com GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30666