[Bug c/57669] Incorrect floating point values with 32-bit compile

2013-06-21 Thread jtaylor.debian at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57669

Julian Taylor  changed:

   What|Removed |Added

 CC||jtaylor.debian at gmail dot com

--- Comment #1 from Julian Taylor  ---
looks like expected behavior to me, please read:
http://gcc.gnu.org/wiki/x87note

you may be able to get consistent results by using -mfpmath=sse
e.g. clang will always use amd64 mode even on 32 bit, thus probably the same
result.


[Bug c/57491] New: [ia64] internal compiler error: in ia64_split_tmode -O2, quadmath

2013-05-31 Thread jtaylor.debian at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57491

Bug ID: 57491
   Summary: [ia64] internal compiler error: in ia64_split_tmode
-O2, quadmath
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jtaylor.debian at gmail dot com

Created attachment 30236
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30236&action=edit
preprocessed files

when compiling fftw3 3.3.3 with quadmath on ia64 it fails with an internal
compiler error:

gcc-4.8 -std=gnu99 -DHAVE_CONFIG_H -I. -I../../.. -I../../../kernel
-I../../../rdft -I../../../rdft/scalar -D_FORTIFY_SOURCE=2 -g -O2 -Wformat
-Werror=format-security -O2 -MT r2cf_8.lo -MD -MP -MF .deps/r2cf_8.Tpo -c
r2cf_8.c  -fPIC -DPIC -o .libs/r2cf_8.o
r2cf_8.c: In function 'r2cf_8':
r2cf_8.c:83:1: internal compiler error: in ia64_split_tmode, at
config/ia64/ia64.c:1453
 }


the failure does not occur with -O1 or -O3, only with -O2

reproduceable with the attached .i file with:
gcc-4.8 -std=gnu99 -O2 r2cf_8.i -c -fPIC

the system is debian unstable with gcc-4.8 (4.8.0-9) which is according to the
package changelog SVN 20130529 (r199410)

$ gcc-4.8 -v
Using built-in specs.
COLLECT_GCC=gcc-4.8
COLLECT_LTO_WRAPPER=/usr/lib/gcc/ia64-linux-gnu/4.8/lto-wrapper
Target: ia64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.8.0-9'
--with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs
--enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.8 --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls
--with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libssp
--disable-libitm --disable-libsanitizer --enable-plugin --with-system-zlib
--enable-objc-gc --enable-multiarch --with-system-libunwind
--enable-checking=release --build=ia64-linux-gnu --host=ia64-linux-gnu
--target=ia64-linux-gnu
Thread model: posix
gcc version 4.8.0 (Debian 4.8.0-9)


[Bug other/57219] New: __builtin_isinf_sign source comments more restrictive than documentation

2013-05-08 Thread jtaylor.debian at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57219

 Bug #: 57219
   Summary: __builtin_isinf_sign source comments more restrictive
than documentation
Classification: Unclassified
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: trivial
  Priority: P3
 Component: other
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: jtaylor.deb...@gmail.com


in glibc bug [0] it is discussed to use __builtin_isinf_sign for C99 isinf.

The source code and the patch mail [1] for __builtin_isinf_sign document that
it returns -1, 0 or 1 as glibc isinf does.

The gcc documentation on the other hand only says it returns the sign of the
infinity.

To avoid confusion it would be good if the source code comment or the
documentation could be matched up to say the exact same thing.
Either that the value of the return is undefined (but keeps sign) or that it is
strictly define.

[0] http://sourceware.org/bugzilla/show_bug.cgi?id=15367
[1] http://gcc.gnu.org/ml/gcc-patches/2008-05/msg01067.html


[Bug c/57004] False warning: comparison is always true due to limited range of data type [-Wtype-limits]

2013-04-19 Thread jtaylor.debian at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57004



Julian Taylor  changed:



   What|Removed |Added



 CC||jtaylor.debian at gmail dot

   ||com



--- Comment #2 from Julian Taylor  2013-04-19 
12:41:28 UTC ---

you need to use -fsigned-char if your program expects signed chars on a machine

which defaults to unsigned chars (like ARM).


[Bug lto/56777] New: bad grammar in fwhole-program documentation

2013-03-29 Thread jtaylor.debian at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56777



 Bug #: 56777

   Summary: bad grammar in fwhole-program documentation

Classification: Unclassified

   Product: gcc

   Version: 4.9.0

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: lto

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: jtaylor.deb...@gmail.com





http://gcc.gnu.org/onlinedocs//gcc/Optimize-Options.html#Optimize-Options

-fwhole-program

...

In combination with -flto using this option should not be used.



it should probably be :



In combination with -flto this option should not be used.

or

This option should not be used in combination with -flto.


[Bug middle-end/56160] unnecessary additions in loop [x86, x86_64]

2013-01-31 Thread jtaylor.debian at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56160



Julian Taylor  changed:



   What|Removed |Added



Version|4.4.1   |4.8.0



--- Comment #4 from Julian Taylor  2013-01-31 
17:53:17 UTC ---

it is still the case in 4.8 svn r195604 (built on i586 fedora 11) and the

versions in between, 4.4 is the oldest I tested.


[Bug c/56160] unnecessary additions in loop [x86, x86_64]

2013-01-31 Thread jtaylor.debian at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56160



--- Comment #2 from Julian Taylor  2013-01-31 
10:47:54 UTC ---

these three lines is missing at the top of the attachment



#include 

#include 

#define UNLIKELY(x) __builtin_expect((x),0)


[Bug c/56160] unnecessary additions in loop [x86, x86_64]

2013-01-31 Thread jtaylor.debian at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56160



--- Comment #1 from Julian Taylor  2013-01-31 
10:43:51 UTC ---

Created attachment 29313

  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29313

code


[Bug c/56160] New: unnecessary additions in loop [x86, x86_64]

2013-01-31 Thread jtaylor.debian at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56160



 Bug #: 56160

   Summary: unnecessary additions in loop [x86, x86_64]

Classification: Unclassified

   Product: gcc

   Version: 4.4.1

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: c

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: jtaylor.deb...@gmail.com





the attached code which does complex float multiplication using sse3 produces 4

unnecessary integer additions if the NaN fallback function comp_mult is inlined



the assembly for the loop generated with -msse3 -O3 -std=c99 in gcc 4.4, 4.6,

4.7 and 4.8 svn 195604 looks like this:

  28:0f 28 0e movaps (%esi),%xmm1

  2b:f3 0f 12 c1  movsldup %xmm1,%xmm0

  2f:8b 55 08 mov0x8(%ebp),%edx

  32:0f 28 13 movaps (%ebx),%xmm2

  35:f3 0f 16 c9  movshdup %xmm1,%xmm1

  39:0f 59 c2 mulps  %xmm2,%xmm0

  3c:0f c6 d2 b1  shufps $0xb1,%xmm2,%xmm2

  40:0f 59 ca mulps  %xmm2,%xmm1

  43:f2 0f d0 c1  addsubps %xmm1,%xmm0

  47:0f 29 04 fa  movaps %xmm0,(%edx,%edi,8)

  4b:0f c2 c0 04  cmpneqps %xmm0,%xmm0

  4f:0f 50 c0 movmskps %xmm0,%eax

  52:85 c0test   %eax,%eax

  54:75 1djne73  // inlined

comp_mult

  56:83 c7 02 add$0x2,%edi

  59:83 c6 10 add$0x10,%esi

  5c:83 c3 10 add$0x10,%ebx

  5f:83 c1 10 add$0x10,%ecx

  62:83 45 e4 10  addl   $0x10,-0x1c(%ebp)

  66:39 7d 14 cmp%edi,0x14(%ebp)

  69:7f bdjg 28 

...



the 4 adds for esi ebx ecx and ebp are completely unnecessary and reduce

performance by about 20% on my core2duo.

on amd64 it also creates to seemingly unnecessary additions but I did not test

the performance.



a way to coax gcc to emit proper code is to not allow it to inline the fallback

it then generates following good assembly with only one integer add:



  a8:0f 28 0c df  movaps (%edi,%ebx,8),%xmm1

  ac:f3 0f 12 c1  movsldup %xmm1,%xmm0

  b0:8b 45 08 mov0x8(%ebp),%eax

  b3:0f 28 14 de  movaps (%esi,%ebx,8),%xmm2

  b7:f3 0f 16 c9  movshdup %xmm1,%xmm1

  bb:0f 59 c2 mulps  %xmm2,%xmm0

  be:0f c6 d2 b1  shufps $0xb1,%xmm2,%xmm2

  c2:0f 59 ca mulps  %xmm2,%xmm1

  c5:f2 0f d0 c1  addsubps %xmm1,%xmm0

  c9:0f 29 04 d8  movaps %xmm0,(%eax,%ebx,8)

  cd:0f c2 c0 04  cmpneqps %xmm0,%xmm0

  d1:0f 50 c0 movmskps %xmm0,%eax

  d4:85 c0test   %eax,%eax

  d6:75 10jnee8  // non-inlined

comp_mult

  d8:83 c3 02 add$0x2,%ebx

  db:39 5d 14 cmp%ebx,0x14(%ebp)

  de:7f c8jg a8 

...


[Bug c++/56111] New: {float,double} complex not accepted by g++-4.8 anymore

2013-01-25 Thread jtaylor.debian at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56111



 Bug #: 56111

   Summary: {float,double} complex not accepted by g++-4.8 anymore

Classification: Unclassified

   Product: gcc

   Version: 4.8.0

Status: UNCONFIRMED

  Severity: normal

  Priority: P3

 Component: c++

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: jtaylor.deb...@gmail.com





the C99 float and double complex is not accepted by g++ 4.8 r195467 anymore in

c++98 or c++11.

Even though its technically not part of c++98 it worked in all gcc versions I

ever used.

Is this change intentional? It will break the compilation of a bunch of

scientific c++ software using C libraries.



$ cat test.c

#include 

int testing(float complex a);



int main()

{

float complex a = 1;

return testing(a);

}

$ gcc-4.7 test.c -c

$ gcc-4.8 test.c -c

$ g++-4.7 test.c -c



$ g++-4.8 test.c -c

test.c:2:27: error: expected ',' or '...' before 'a'

 int testing(float complex a);

   ^

test.c: In function 'int main()':

test.c:6:15: error: expected initializer before 'a'

 float complex a = 1;

   ^

test.c:7:16: error: 'a' was not declared in this scope

 return testing(a);

^

$ g++-4.8 -std=c++98 test.c -c

test.c:2:27: error: expected ',' or '...' before 'a'

 int testing(float complex a);

   ^

test.c: In function 'int main()':

test.c:6:15: error: expected initializer before 'a'

 float complex a = 1;

   ^

test.c:7:16: error: 'a' was not declared in this scope

 return testing(a);

^

$ g++-4.8 --version

g$-4.8 (Debian 4.8-20130123-1) 4.8.0 20130123 (experimental) [trunk revision

195400]

Copyright (C) 2013 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.





also reproduced with svn trunk r195467 built on a fedora 11 machine.

using ccomplex and -std=c++11 does not work either.