Quantcast
Channel: Intel® Software - Intel® Visual Fortran Compiler for Windows*
Viewing all articles
Browse latest Browse all 5691

Internal Compiler Error with 15.0.1.148

$
0
0

Steve, Colleagues,

I installed Update 1 for release 15.0 and now several files containing multiple subroutines no longer compile. The code is stable, has not been modified in a very long time, and compiled without incident in the last version of 14 and with the initial release of 15.0.  I generate both IA32 and x64 versions. There is no compiler error generating the IA32 version. For the simple code I list below I get the following when I compile for x64:

EXPR_ABS.MS128(t204_425)
 FATAL ERROR   : Compiler Internal Error
ifort: error #10273: Fatal error in C:\PROGRA~1\Intel\CO8318~1\bin\ia32_intel64\fortcom, terminated by 0x2

subroutine shaft_planes( verts1, verts2, shaft_plane, num_planes )
real(4) verts1(3,4), verts2(3,4), testvector(3,4,4), edges1(3,4), edges2(3,4), shaft_plane(4,8), possible(3)
integer(4) num_planes

edges1 = cshift(verts1,1,2)-verts1
edges2 = cshift(verts2,1,2)-verts2
!test vectors: from verts1 to verts2
do i=1,4
	do j=1,4
		testvector(:,i,j)=verts2(:,j)-verts1(:,i)
	end do
end do
MaxNumPlanes = num_planes
num_planes = 0
! planes will be hinged on the 4 edges of verts1
do i=1,4
	!find a vertex of verts2 that forms bounding plane with edge i of verts1
	verts2_loop: &
	do j=1,4
		! proposed plane normal for edge i of verts1 forms the 3 coeffs of (x,y,z) in the plane equation
		possible(1) =  edges1(2,i)*testvector(3,i,j)-edges1(3,i)*testvector(2,i,j)
		possible(2) =-(edges1(1,i)*testvector(3,i,j)-edges1(3,i)*testvector(1,i,j))
		possible(3) =  edges1(1,i)*testvector(2,i,j)-edges1(2,i)*testvector(1,i,j)
		! reject vertex j of verts2 if it is colinear with edge i of verts1
		if( all(abs(possible) < 1.0e-4) ) cycle verts2_loop
		! if we get here, we have a valid shaft plane. calc constant coeff in plane equation
		num_planes = num_planes + 1
		possible = possible/sqrt( possible(1)**2+possible(2)**2+possible(3)**2 )
		shaft_plane(1:3,num_planes) = possible
		shaft_plane(4,num_planes) = dot_product( possible,verts1(:,i))
		exit
		!if we've filled the quota of planes, return
		if(num_planes==MaxNumPlanes) return
	end do verts2_loop
end do
return
end subroutine shaft_planes

With an infinity of putzing, I found that the offending line is 25; the test of the absolute values of all the components of the vector possible. If this line is commented out, the routine compiles.

I am running Win7 32 (but notice I'm producing code for x64) in Visual Studio 2010. I'm asking for full optimization. The settings I using result in the following command line for the compiler (as reported by VS):

 /nologo /debug:full /O3 /Qvec-threshold:0 /free /Qopenmp /Qopt-report:5 /Qopt-report-phase:openmp /fpe:0 /module:"Release 2.8x64 OMP\\" /object:"Release 2.8x64 OMP\\" /Fd"Release 2.8x64 OMP\vc100.pdb" /traceback /check:none /libs:static /threads /c

These settings are project-wide and since other routines are threaded, I have OpenMP 'on'. 

Optimization /O2 or /O3 triggers the internal error. If I disable optimization with /Od, there is no internal error. Can you verify this problem?  Should I return to the initial release of 15.0?

David


Viewing all articles
Browse latest Browse all 5691

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>