[Bug web/60933] Please do not advertise outdated version of gmp, mpfr, mpc

2016-08-03 Thread bugfeed at online dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60933

--- Comment #15 from Leif Leonhardy  ---
(In reply to Richard Biener from comment #14)
> Fixed.

In trunk that is.


In GCC 6.1.0 we still have

$ egrep -iw 'gmp|mpfr|mpc' src/gcc-6.1.0/contrib/download_prerequisites 
MPFR=mpfr-2.4.2
GMP=gmp-4.3.2
MPC=mpc-0.8.1
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPFR.tar.bz2 || exit 1
tar xjf $MPFR.tar.bz2 || exit 1
ln -sf $MPFR mpfr || exit 1
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$GMP.tar.bz2 || exit 1
tar xjf $GMP.tar.bz2  || exit 1
ln -sf $GMP gmp || exit 1
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPC.tar.gz || exit 1
tar xzf $MPC.tar.gz || exit 1
ln -sf $MPC mpc || exit 1

(Same for GCC 4.9.4, released today.  And we of course keep getting reports
about 't-scan' failing in GMP 4.3.2 on gmp-bugs@...)

[Bug c/63484] misleading/obsolete -fdelete-null-pointer-checks documentation

2016-07-03 Thread bugfeed at online dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63484

Leif Leonhardy  changed:

   What|Removed |Added

 CC||bugfeed at online dot de

--- Comment #1 from Leif Leonhardy  ---
As of GCC 6.1.0, the documentation has slightly changed:

  -fdelete-null-pointer-checks

Assume that programs cannot safely dereference null pointers, and that no
code or data element resides at address zero. This option enables simple
constant folding optimizations at all optimization levels. In addition,
other
optimization passes in GCC use this flag to control global dataflow
analyses
that eliminate useless checks for null pointers; these assume that a memory
access to address zero always results in a trap, so that if a pointer is
checked after it has already been dereferenced, it cannot be null.

Note however that in some environments this assumption is not true. Use
-fno-delete-null-pointer-checks to disable this optimization for programs
that depend on that behavior.

This option is enabled by default on most targets. On Nios II ELF, it
defaults to off. On AVR and CR16, this option is completely disabled.

Passes that use the dataflow information are enabled independently at
different optimization levels.

[Bug web/60933] Please do not advertise outdated version of gmp, mpfr, mpc

2015-10-15 Thread bugfeed at online dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60933

--- Comment #11 from Leif Leonhardy  ---
(In reply to Jonathan Wakely from comment #2)
> We've had situations in the past where the minimum suggested versions work
> and the latest versions prevented GCC from building.
Well, in the past... ;-)


> The suggested versions
> are known to work and have been thoroughly tested, which might not be true
> of the latest versions.
Sure.

But note that this is not (or no longer) true for at least GMP 4.3.2, assuming
"works" includes "the library's test suite passes [when compiled] with GCC".  

I.e., GMP 4.3.2's test suite contains a subtle bug (fixed long ago, in all
later versions) that will cause a single test (t-scan) to fail when compiled
with GCC 4.8.0 and any later version; it only incidentally doesn't show up with
earlier ones.

While the bug doesn't affect the library code or GCC itself, it is annoying to
users building GCC as well, as most won't know until they report it to
gmp-bugs, which happens pretty often.  (In fact, the error message of course
asks them to do so.  And people are encouraged to run 'make check'.)


[Bug tree-optimization/56982] [4.8/4.9 Regression] Bad optimization with setjmp()

2013-04-17 Thread bugfeed at online dot de


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



--- Comment #10 from Leif Leonhardy  2013-04-18 
01:17:31 UTC ---

"One proposed requirement on setjmp is that it be usable like any other

function, that is, that it be callable in *any* expression context, and that

the expression evaluate correctly whether the return from setjmp is direct or

via a call to longjmp. Unfortunately, any implementation of setjmp as a

conventional called function cannot know enough about the calling environment

to save any temporary registers or dynamic stack locations used part way

through an expression evaluation. [...] The temporaries may be correct on the

initial call to setjmp, but are not likely to be on any return initiated by a

corresponding call to longjmp. These considerations dictated the constraint

that setjmp be called only from within fairly simple expressions, ones not

likely to need temporary storage.



An alternative proposal considered by the C89 Committee was to require that

implementations recognize that calling setjmp is a special case, and hence that

they take whatever precautions are necessary to restore the setjmp environment

properly upon a longjmp call. This proposal was rejected on grounds of

consistency: implementations are currently allowed to implement library

functions specially, but no other situations require special treatment."





So according to this (The C99 Rationale [1], page 139 ff., likewise the Single

UNIX Specification), here setjmp() is simply used in an invalid context (i.e.,

in an assignment statement). ;-)



Still, with -Og at least, GCC 4.8.0 produces wrong code even if setjmp() is

used in an "allowed" context (as in e.g. if (setjmp(...)>0) ..., or switch

(setjmp(...)) { ... }), and no matter whether n is declared volatile or not.





[1] http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf


[Bug c/53662] Cannot build static gcc on i686 linux gnu with -m64 support.

2012-11-25 Thread bugfeed at online dot de


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



Leif Leonhardy  changed:



   What|Removed |Added



 CC||bugfeed at online dot de



--- Comment #4 from Leif Leonhardy  2012-11-26 
04:01:07 UTC ---

(In reply to comment #2)

> (In reply to comment #1)

> > 

> > That means you need a 64-bit capable binutils.

> > 

> > Just a guess, but you might need to use --target=x86_64-unknown-linux-gnu to

> > make a cross compiler for x86_64, which will be multilib-capable by 
> > default. 

> > To do that you'll need a 64-bit binutils and 64-bit glibc.

> > 

> > This should really be dealt with on the gcc-help mailing list, I don't think

> > it's a bug.

> 

> Sorry, I meant that this might be bug in gcc bootstrap stage. As I said, I 
> have

> compiled binutils with --enable-multilib ... I could try --enable-64-bit-bfd

> tough.



That's not what you /could try/, that's what you *have to* do... ;-)



I.e., configure binutils with '--enable-64-bit-bfd --enable-targets=all'

(e.g.), otherwise the built 'gas' bails out on '--64'.





-leif





P.S.: I'm currently trying to build a "multilib" GCC 4.7.2 on a Pentium4

(a.k.a. i786), i.e., x86 system.  Build goes fine until libquadmath's

'configure' tries to *run* executables built with '-m64' (which of courseTM

cannot work).  No idea why it's attempting that -- probably because

host==build==target==pentium4-linux-gnu and it doesn't notice that we're

"cross-compiling" in the 64/ directory.  The other libs built just fine (e.g.

libssp).


[Bug rtl-optimization/48496] [4.7/4.8 Regression] 'asm' operand requires impossible reload

2012-04-09 Thread bugfeed at online dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48496

--- Comment #20 from Leif Leonhardy  2012-04-09 
16:42:38 UTC ---
(In reply to comment #16)
> It is time to do something as GCC 4.7 is quite hampered by this on IA-64.

Indeed.  Besides MPIR (hence presumably also GMP) and NTL, also MPFR, GMP-ECM,
PARI, FLINT and some other less prominent packages fail to build due to this
error (unless one specifies `-O0 ...`).


[Bug rtl-optimization/48496] [4.7/4.8 Regression] 'asm' operand requires impossible reload in libffi/src/ia64/ffi.c

2012-04-05 Thread bugfeed at online dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48496

--- Comment #15 from Leif Leonhardy  2012-04-05 
18:03:31 UTC ---
Just for the record:

Also MPIR 2.1.3, MPIR 2.4.0 and NTL 5.5.2 fail to build, with the same error
message ("error: ‘asm’ operand requires impossible reload").

Work-around for MPIR: Compile with (e.g.) '-O0 -finline-functions
-fschedule-insns', which of course is quite odd.


$ uname -rsm
Linux 2.6.16.46-0.12-default ia64

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-4.7.0/ia64-Linux-suse/libexec/gcc/ia64-unknown-linux-gnu/4.7.0/lto-wrapper
Target: ia64-unknown-linux-gnu
Configured with: /usr/local/gcc-4.7.0/src/gcc-4.7.0/configure
--enable-languages=c,c++,fortran --with-gnu-as
--with-as=/usr/local/binutils-2.22/ia64-Linux-suse-gcc-4.6.2/bin/as
--with-gnu-ld
--with-ld=/usr/local/binutils-2.22/ia64-Linux-suse-gcc-4.6.2/bin/ld
--with-gmp=/usr/local/mpir-2.5.1/ia64-Linux-suse-gcc-4.6.2
--with-mpfr=/usr/local/mpfr-3.1.0/ia64-Linux-suse-mpir-2.5.1-gcc-4.6.2
--with-mpc=/usr/local/mpc-0.9/ia64-Linux-suse-mpir-2.5.1-mpfr-3.1.0-gcc-4.6.2
--prefix=/usr/local/gcc-4.7.0/ia64-Linux-suse
Thread model: posix
gcc version 4.7.0 (GCC)