<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic problem with changed behavior between compiler versions when using /fpscomp:logicals in Intel® Fortran Compiler</title>
    <link>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183516#M149490</link>
    <description>&lt;P&gt;I am working on updating the ifort compiler we use from 2011 to 2019.3 (the newest). As lots of water has flown in the Nile in the meantime, this is not straight forward.&amp;nbsp;&lt;/P&gt;&lt;P&gt;One issue I am facing is the different behavior of the option /fpscomp:logicals option. &lt;A href="https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-fpscomp" target="_blank"&gt;https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-fpscomp&lt;/A&gt;&lt;/P&gt;&lt;P&gt;In ifort 2011, if one assigned an integer value to a logical, it retained that value. In ifort 2019 it is truncated to the last bit only.&lt;/P&gt;&lt;P&gt;Here's a sample program:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;program logicaltest&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; logical :: lg&lt;BR /&gt;&amp;nbsp; &amp;nbsp; integer :: i&lt;BR /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; i = -1&lt;BR /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; lg = i&lt;BR /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; if (lg == 1) then&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print *, "got one!"&lt;BR /&gt;&amp;nbsp; &amp;nbsp; elseif (lg == 0) then&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print *, "got none!"&lt;BR /&gt;&amp;nbsp; &amp;nbsp; else &amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print *, "something else entirely!"&lt;BR /&gt;&amp;nbsp; &amp;nbsp; end if&amp;nbsp;&lt;BR /&gt;end program&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&amp;nbsp;&lt;BR /&gt;Here's what happens with the 2011 compiler (12.1.7.371 Build 20120928)&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;C:\work&amp;gt;ifort /nologo logicaltest.f90 &amp;amp;&amp;amp; logicaltest.exe&lt;BR /&gt;&amp;nbsp;something else entirely!&lt;/P&gt;&lt;P&gt;C:\work&amp;gt;ifort /nologo /fpscomp:logical logicaltest.f90 &amp;amp;&amp;amp; logicaltest.exe&lt;BR /&gt;&amp;nbsp;something else entirely!&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;I.e. the behavior with regards to assigning an integer value to a logical variable is the same irregardless of whether one uses /fpscomp:logical&lt;/P&gt;&lt;P&gt;With 2019.3 (19.0.3.203 Build 20190206) this is what happens:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;C:\work&amp;gt;ifort /nologo /fpscomp:logical logicaltest.f90 &amp;amp;&amp;amp; logicaltest.exe&lt;BR /&gt;&amp;nbsp;got one!&lt;/P&gt;&lt;P&gt;C:\work&amp;gt;ifort /nologo logicaltest.f90 &amp;amp;&amp;amp; logicaltest.exe&lt;BR /&gt;&amp;nbsp;something else entirely!&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&amp;nbsp;&lt;BR /&gt;In my opinion using logical variables to store integer values just should not be done. However, I we have several million lines of source code and having found a few cases where it is done I suspect there are many more.&lt;/P&gt;&lt;P&gt;Not using /fpscomp:logical is not an option due to our C code relying on this notion of truth (!= 0) and false (== 0).&lt;/P&gt;&lt;P&gt;Thus, my question: is there a command line switch for ifort that would make it keep the integer values assigned to logicals, as it previously did?&lt;BR /&gt;Or, is there a way to make the compiler issue a warning (or better yet, an error) when an integer is assigned to a logical variable? That would enable me to find all the cases and fix them.&lt;/P&gt;&lt;P&gt;Any other ideas are also highly appreciated.&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;Environment: windows, producing 64 bit executable&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 09 Apr 2019 07:34:09 GMT</pubDate>
    <dc:creator>Karanta__Antti</dc:creator>
    <dc:date>2019-04-09T07:34:09Z</dc:date>
    <item>
      <title>problem with changed behavior between compiler versions when using /fpscomp:logicals</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183516#M149490</link>
      <description>&lt;P&gt;I am working on updating the ifort compiler we use from 2011 to 2019.3 (the newest). As lots of water has flown in the Nile in the meantime, this is not straight forward.&amp;nbsp;&lt;/P&gt;&lt;P&gt;One issue I am facing is the different behavior of the option /fpscomp:logicals option. &lt;A href="https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-fpscomp" target="_blank"&gt;https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-fpscomp&lt;/A&gt;&lt;/P&gt;&lt;P&gt;In ifort 2011, if one assigned an integer value to a logical, it retained that value. In ifort 2019 it is truncated to the last bit only.&lt;/P&gt;&lt;P&gt;Here's a sample program:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;program logicaltest&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; logical :: lg&lt;BR /&gt;&amp;nbsp; &amp;nbsp; integer :: i&lt;BR /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; i = -1&lt;BR /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; lg = i&lt;BR /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; if (lg == 1) then&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print *, "got one!"&lt;BR /&gt;&amp;nbsp; &amp;nbsp; elseif (lg == 0) then&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print *, "got none!"&lt;BR /&gt;&amp;nbsp; &amp;nbsp; else &amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print *, "something else entirely!"&lt;BR /&gt;&amp;nbsp; &amp;nbsp; end if&amp;nbsp;&lt;BR /&gt;end program&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&amp;nbsp;&lt;BR /&gt;Here's what happens with the 2011 compiler (12.1.7.371 Build 20120928)&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;C:\work&amp;gt;ifort /nologo logicaltest.f90 &amp;amp;&amp;amp; logicaltest.exe&lt;BR /&gt;&amp;nbsp;something else entirely!&lt;/P&gt;&lt;P&gt;C:\work&amp;gt;ifort /nologo /fpscomp:logical logicaltest.f90 &amp;amp;&amp;amp; logicaltest.exe&lt;BR /&gt;&amp;nbsp;something else entirely!&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;I.e. the behavior with regards to assigning an integer value to a logical variable is the same irregardless of whether one uses /fpscomp:logical&lt;/P&gt;&lt;P&gt;With 2019.3 (19.0.3.203 Build 20190206) this is what happens:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;C:\work&amp;gt;ifort /nologo /fpscomp:logical logicaltest.f90 &amp;amp;&amp;amp; logicaltest.exe&lt;BR /&gt;&amp;nbsp;got one!&lt;/P&gt;&lt;P&gt;C:\work&amp;gt;ifort /nologo logicaltest.f90 &amp;amp;&amp;amp; logicaltest.exe&lt;BR /&gt;&amp;nbsp;something else entirely!&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&amp;nbsp;&lt;BR /&gt;In my opinion using logical variables to store integer values just should not be done. However, I we have several million lines of source code and having found a few cases where it is done I suspect there are many more.&lt;/P&gt;&lt;P&gt;Not using /fpscomp:logical is not an option due to our C code relying on this notion of truth (!= 0) and false (== 0).&lt;/P&gt;&lt;P&gt;Thus, my question: is there a command line switch for ifort that would make it keep the integer values assigned to logicals, as it previously did?&lt;BR /&gt;Or, is there a way to make the compiler issue a warning (or better yet, an error) when an integer is assigned to a logical variable? That would enable me to find all the cases and fix them.&lt;/P&gt;&lt;P&gt;Any other ideas are also highly appreciated.&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;Environment: windows, producing 64 bit executable&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 09 Apr 2019 07:34:09 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183516#M149490</guid>
      <dc:creator>Karanta__Antti</dc:creator>
      <dc:date>2019-04-09T07:34:09Z</dc:date>
    </item>
    <item>
      <title>For what it is worth, note</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183517#M149491</link>
      <description>&lt;P&gt;For what it is worth, note that the following are not allowed in standard Fortran: (i) assigning a logical variable &amp;nbsp;an integer value and (ii) comparing a logical variable to an integer expression. In fact, given your code, Fortran Powerstation 4.00 fails to compile your program:&lt;/P&gt;
&lt;PRE class="brush:fortran; class-name:dark;"&gt;Microsoft (R) Fortran PowerStation  Version 4.00
Copyright (C) Microsoft Corp 1982-1995. All rights reserved.

fpslog0.f90
fpslog0.f90(10): error FOR3041: operands to relational operator .EQ. are of incompatible data type
fpslog0.f90(12): error FOR3041: operands to relational operator .EQ. are of incompatible data type&lt;/PRE&gt;

&lt;P&gt;Ifort 2013SP1 as well as CVF 6.6, with or without /fpscomp:logicals, output&amp;nbsp;"something else entirely!"&lt;/P&gt;
&lt;P&gt;Any code, whether in Fortran or C, is non-portable if it&amp;nbsp;relies on a specific non-zero bit pattern for .TRUE.&lt;/P&gt;
&lt;P&gt;Instead of&amp;nbsp;&lt;STRONG&gt;if (lg == 1) then&lt;/STRONG&gt;, use &lt;STRONG&gt;if (lg) then&lt;/STRONG&gt;; instead of &lt;STRONG&gt;if (lg == 0)&lt;/STRONG&gt;, use &lt;STRONG&gt;if (.not. lg) then&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;You can catch instances of such misuse of logical variables by using the compiler option &lt;STRONG&gt;/stand:f95&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;The effort involved in fixing your code can be considerable, but I feel that it cannot be avoided. Some day, you may be building your code with a compiler that will refuse to accept such nonstandard usage, with no option to override that refusal.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 09 Apr 2019 11:02:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183517#M149491</guid>
      <dc:creator>mecej4</dc:creator>
      <dc:date>2019-04-09T11:02:45Z</dc:date>
    </item>
    <item>
      <title>Additionally, when comparing</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183518#M149492</link>
      <description>&lt;P&gt;Additionally, when comparing logicals, say A and B, use the logical operators&lt;/P&gt;&lt;P&gt;IF( A .EQV. B) .... ! when same&lt;BR /&gt;IF( A .NEQV. B) ... ! when different&lt;/P&gt;&lt;P&gt;Do not use .EQ. or == or&amp;nbsp;.NE. or&amp;nbsp;/= as these are arithmetic operators.&lt;/P&gt;&lt;P&gt;If you really insist on using arithmetic operators then the "proper" way is&lt;/P&gt;&lt;P&gt;IF( IAND(A, 1)&amp;nbsp;== IAND(B, 1)) ...&lt;/P&gt;&lt;P&gt;This is assuming the compiler (standards) do not complain about a logical in the intrinsic IAND.&lt;BR /&gt;If it does, then:&lt;/P&gt;&lt;P&gt;IF( IAND(TRANSFER(A, 1), 1)&amp;nbsp;== IAND(TRANSFER(B,1), 1)) ...&lt;/P&gt;&lt;P&gt;Your choice....&lt;/P&gt;&lt;P&gt;Jim Dempsey&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 09 Apr 2019 12:23:16 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183518#M149492</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2019-04-09T12:23:16Z</dc:date>
    </item>
    <item>
      <title>Quote:Karanta,Antti wrote:</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183519#M149493</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;Karanta,Antti wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In my opinion using logical variables to store integer values just should not be done. ..&lt;/P&gt;&lt;P&gt;Thus, my question: is there a command line switch for ifort that would make it keep the integer values assigned to logicals, as it previously did?&lt;BR /&gt;Or, is there a way to make the compiler issue a warning (or better yet, an error) when an integer is assigned to a logical variable? That would enable me to find all the cases and fix them. ..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have your tried&amp;nbsp;/warn:stderrors with your code?&lt;/P&gt;&lt;P&gt;&lt;A href="https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-warn" target="_blank"&gt;https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-warn&lt;/A&gt;&lt;/P&gt;
&lt;PRE class="brush:plain; class-name:dark;"&gt;
C:\Temp&amp;gt;type x.f90
program logicaltest

    logical :: lg
    integer :: i

    i = -1

    lg = i

    if (lg == 1) then
       print *, "got one!"
    elseif (lg == 0) then
       print *, "got none!"
    else
       print *, "something else entirely!"
    end if
end program

C:\Temp&amp;gt;ifort /warn:stderrors x.f90
Intel(R) Visual Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, 
Version 19.0.3.203 Build 20190206
Copyright (C) 1985-2019 Intel Corporation.  All rights reserved.

ifort: command line warning #10249: /warn:stderrors sets /stand
x.f90(8): error #6192: Fortran 2003 does not allow this data type conversion.   &lt;I&gt;
    lg = i
---------^
x.f90(10): error #6192: Fortran 2003 does not allow this data type conversion.   [LG]
    if (lg == 1) then
--------^
x.f90(12): error #6192: Fortran 2003 does not allow this data type conversion.   [LG]
    elseif (lg == 0) then
------------^
compilation aborted for x.f90 (code 1)

C:\Temp&amp;gt;&lt;/I&gt;&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 09 Apr 2019 13:34:06 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183519#M149493</guid>
      <dc:creator>FortranFan</dc:creator>
      <dc:date>2019-04-09T13:34:06Z</dc:date>
    </item>
    <item>
      <title>Quote:Karaanta, Antti wrote:</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183520#M149494</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;Karanta, Antti wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;..&amp;nbsp;Not using /fpscomp:logical is not an option due to our C code relying on this notion of truth (!= 0) and false (== 0). ..&lt;/P&gt;&lt;P&gt;Any other ideas are also highly appreciated.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Will it be possible to elaborate a bit further&amp;nbsp;on your C code and its relevance to Fortran code?&amp;nbsp; Is it in connection with invoking functions from one language in the other and passing data as function parameters?&amp;nbsp; Or with coding styles, etc.?&lt;/P&gt;&lt;P&gt;If it's the first aspect, meaning calling C from Fortran and vice versa with calling Fortran from C and exchanging data and with your last point re: "Any other ideas are also highly appreciated," you may know modern Fortran with 2018 standard revision offers enhanced capabilities for interoperation with C which is fully supported by the Intel Fortran version you've in mind for your compiler upgrade (19.0&amp;nbsp;Update 3).&amp;nbsp; Something to consider for your code if this is relevant:&lt;/P&gt;&lt;P&gt;&lt;A href="https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-standard-fortran-and-c-interoperability" target="_blank"&gt;https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-standard-fortran-and-c-interoperability&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 09 Apr 2019 13:45:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183520#M149494</guid>
      <dc:creator>FortranFan</dc:creator>
      <dc:date>2019-04-09T13:45:00Z</dc:date>
    </item>
    <item>
      <title>The standards compliance</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183521#M149495</link>
      <description>&lt;P&gt;The standards compliance option /standard-semantics includes /fpscomp:logicals because the f2003 iso C interop specifies the interoperability of Fortran LOGICAL with C_INT&amp;nbsp;if() and if(!()).. (also, by inference, C++ bool).&amp;nbsp; The usage is portable and standard with any combination of C and Fortran compilers complying with f2003.&amp;nbsp; It's a puzzle as to why ifort would still require the command line option for compliance, and the /stand option to produce a diagnostic about the non-compliant usage, particularly if the limited default equivalence of logical and integer was introduced to support PowerStation.&lt;/P&gt;</description>
      <pubDate>Wed, 10 Apr 2019 14:34:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183521#M149495</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2019-04-10T14:34:10Z</dc:date>
    </item>
    <item>
      <title>The switch is required</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183522#M149496</link>
      <description>&lt;P&gt;The switch is required because the DEC heritage compilers, back at least to VAX FORTRAN, used an odd/even test for true/false. Changing the default would break existing code, though I'd guess that by this time there are few programs still dependent on the VAX behavior. PowerStation used the C method (that is, fpscomp:logicals - that's why the switch is named fpscomp!)&lt;/P&gt;</description>
      <pubDate>Wed, 10 Apr 2019 15:22:43 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183522#M149496</guid>
      <dc:creator>Steve_Lionel</dc:creator>
      <dc:date>2019-04-10T15:22:43Z</dc:date>
    </item>
    <item>
      <title>Hi,</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183523#M149497</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Thanks for all the answers and help! I was able to resovel the problem by using the following command line options to locate the offending code:&lt;/P&gt;&lt;P&gt;/fpscomp:logicals /stand:f18 /Qdiag-error:6192 /Qdiag-error:6188&lt;/P&gt;&lt;P&gt;The warnings here promoted to errors being:&lt;/P&gt;&lt;P&gt;"6192: Fortran 95 does not allow this data type conversion"&lt;BR /&gt;"6188: Fortran 2018 requires a LOGICAL data type in this context"&lt;/P&gt;&lt;P&gt;It took me a better part of a day to fix everything that came up. :)&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;To answer the questions posed:&lt;/P&gt;&lt;P&gt;The reason I took up our C code is due to interoperability and there being lots of calls back and forth passing all kinds of data, logicals included. Due to our long history, we have both "old school" C integration, i.e. just knowing what the functions will look like in when written in one language or another and then linking the results together and newer code using the BIND( C ), which does make things cleaner. We just have not gone through the effort of rewriting all the old code that is not using the iso c interoperability.&lt;/P&gt;&lt;P&gt;Thanks for all the tips on good programming practices. I very much agree with each and every one, and I think you are preaching to the choir here. :) The issue was to get a large code base containing all kinds of, well, interesting, code to work with the 2019.3 ifort compiler with minimal or at least reasonable effort.&lt;/P&gt;&lt;P&gt;The sample code I posted was simplified from a case I ran to in the code base, where logical variables were used to store integer values and relied to be able to do just that. A classic case of "if it is possible, someone will write code depending on it".&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;And thanks Steve for sharing the history of where the name fpscomp comes from. :D&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 11 Apr 2019 05:34:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-changed-behavior-between-compiler-versions-when/m-p/1183523#M149497</guid>
      <dc:creator>Karanta__Antti</dc:creator>
      <dc:date>2019-04-11T05:34:47Z</dc:date>
    </item>
  </channel>
</rss>

