https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81985
Bug ID: 81985 Summary: several sanitizer undefined runtime errors in sanitized libgfortran Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libfortran Assignee: unassigned at gcc dot gnu.org Reporter: zeccav at gmail dot com Target Milestone: --- Host: x86_64-pc-linux-gnu Build: trunk 251201 ! test case mvbits_1.f90 ! several sanitizer undefined runtime errors in sanitized libgfortran ! must be compiled and run !../../../gcc/libgfortran/intrinsics/mvbits.c:48:30: runtime error: left shift of negative value -1 !../../../gcc/libgfortran/intrinsics/mvbits.c:48:30: runtime error: left shift of negative value -1 !../../../gcc/libgfortran/intrinsics/mvbits.c:46:61: runtime error: left shift of 1 by 31 places cannot be represented in type 'int' !../../../gcc/libgfortran/intrinsics/mvbits.c:46:50: runtime error: signed integer overflow: -2147483648 - 1 cannot be represented in type 'int' !../../../gcc/libgfortran/generated/pow_i4_i4.c:66:10: runtime error: signed integer overflow: 32768 * 65536 cannot be represented in type 'int' !../../../gcc/libgfortran/intrinsics/mvbits.c:48:30: runtime error: left shift of negative value -1 !../../../gcc/libgfortran/generated/pow_i4_i4.c:69:8: runtime error: signed integer overflow: 65536 * 65536 cannot be represented in type 'int' !../../../gcc/libgfortran/intrinsics/mvbits.c:46:61: runtime error: left shift of 1 by 63 places cannot be represented in type 'long int' !../../../gcc/libgfortran/intrinsics/mvbits.c:46:50: runtime error: signed integer overflow: -9223372036854775808 - 1 cannot be represented in type 'long int' !../../../gcc/libgfortran/generated/pow_i8_i8.c:66:10: runtime error: signed integer overflow: 2147483648 * 4294967296 cannot be represented in type 'long int' !../../../gcc/libgfortran/intrinsics/mvbits.c:48:30: runtime error: left shift of negative value -1 !../../../gcc/libgfortran/generated/pow_i8_i8.c:69:8: runtime error: signed integer overflow: 4294967296 * 4294967296 cannot be represented in type 'long int' implicit none integer(1) i1,j1 integer(2) i2,j2 integer(4) i4,j4 integer(8) i8,j8 integer ibits,n ibits=bit_size(1_1) do n=1,ibits i1=-1 call mvbits(1_1, 0,n,i1,0) j1=-1-2_1**n+2 if(i1.ne.j1)call abort enddo ibits=bit_size(1_2) do n=1,ibits i2=-1 call mvbits(1_2, 0,n,i2,0) j2=-1-2_2**n+2 if(i2.ne.j2)call abort enddo ibits=bit_size(1_4) do n=1,ibits i4=-1 call mvbits(1_4, 0,n,i4,0) j4=-1-2_4**n+2 if(i4.ne.j4)call abort enddo ibits=bit_size(1_8) do n=1,ibits i8=-1 call mvbits(1_8, 0,n,i8,0) j8=-1-2_8**n+2 if(i8.ne.j8)call abort enddo end