------- Comment #8 from eyal at geomage dot com 2008-02-07 12:16 ------- Hi Ira, Here is the compiler output for the real code. Crs/CEE_CRE_2DSearch.cpp:1285: note: create runtime check for data references *D.86651_134 and *D.86666_160 Crs/CEE_CRE_2DSearch.cpp:1285: note: create runtime check for data references *D.86651_134 and *D.86669_168 Crs/CEE_CRE_2DSearch.cpp:1285: note: create runtime check for data references *D.86655_139 and *D.86666_160 Crs/CEE_CRE_2DSearch.cpp:1285: note: create runtime check for data references *D.86655_139 and *D.86669_168 Crs/CEE_CRE_2DSearch.cpp:1285: note: create runtime check for data references *D.86658_145 and *D.86666_160 Crs/CEE_CRE_2DSearch.cpp:1285: note: create runtime check for data references *D.86658_145 and *D.86669_168 Crs/CEE_CRE_2DSearch.cpp:1285: note: create runtime check for data references *D.86661_151 and *D.86666_160 Crs/CEE_CRE_2DSearch.cpp:1285: note: create runtime check for data references *D.86661_151 and *D.86669_168 Crs/CEE_CRE_2DSearch.cpp:1285: note: created 8 versioning for alias checks.
I looked further in the output log and found the following: D.86666_160 = pTempSumPhase_Temp_cre_angle_27 + D.86665_159; D.86669_168 = pTempSum2Phase_Temp_cre_angle_32 + D.86665_159; D.86651_134 = pSum_78 + D.86650_133; D.86655_139 = pSum_78 + D.86654_138; D.86658_145 = pSum_G_106 + D.86650_133; D.86661_151 = pSum_G_106 + D.86654_138; D.86650_133 = D.86649_132 * 4 D.86649_132 = (long unsigned int) ittt_855; D.86654_138 = D.86653_137 * 4; D.86653_137 = (long unsigned int) ittt1_856; It seems it complaints about some relationship between pTempSum2Phase_Temp_cre_angle_32 and pTempSumPhase_Temp_cre_angle_27 and pSum_78 and pSum_G_106 Those vectors have nothing in common in the code. How do I make the compiler see there's no relationship? Here's the C++ code: void GCEE_CRE_2DSearch::Find( int i_rCee ) { float *pTempSumPhase_Temp_cre_angle = (float*) malloc (sizeof(float) *m_nSamples); float *pTempSum2Phase_Temp_cre_angle = (float*) malloc (sizeof(float) *m_nSamples); memset(pTempSumPhase_Temp_cre_angle,0,sizeof(float)* m_nSamples); memset(pTempSum2Phase_Temp_cre_angle,0,sizeof(float)* m_nSamples); float * pSum, *pSum_G; ..... ..... pSum = m_hiSearchQueue[i_trace]; pSum_G = m_hiSearchQueue[i_trace]; ..... ..... for( int it = itBegin, ittt = itBegin + sample_int, ittt1 = itBegin + sample_int + 1; it < itEnd; it++, ittt++, ittt1++ ) { float fSumValue = pSum[ ittt ] * w11; fSumValue += pSum[ ittt1 ] * w21; fSumValue += pSum_G[ ittt ] * w12; fSumValue += pSum_G[ ittt1 ] * w22; pTempSumPhase_Temp_cre_angle[ it ] += fSumValue; pTempSum2Phase_Temp_cre_angle[ it ] += fSumValue * fSumValue; } Thanks Eyal -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35117