This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix PR47566
- From: "Ulrich Weigand" <uweigand at de dot ibm dot com>
- To: rguenther at suse dot de (Richard Guenther)
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Fri, 22 Jul 2011 16:11:04 +0200 (CEST)
- Subject: Re: [PATCH] Fix PR47566
Richard Guenther wrote:
> + /* { dg-lto-do run } */
> + /* { dg-lto-options { { -O0 -flto } } } */
> + /* { dg-extra-ld-options "-O2 -ffast-math -fuse-linker-plugin" } */
> + /* { dg-require-linker-plugin "" } */
> +
> + /* We require a linker plugin because otherwise we'd need to link
> + against libm which we are not sure here has cabs on all targets.
> + This is because collect2 invokes ld on the -O0 object code
> + which does not have folded cabs. */
> +
> + double cabs(_Complex double);
> + double __attribute__((used))
> + foo (_Complex double x, int b)
> + {
> + if (b)
> + x = 0;
> + return cabs(x);
> + }
> + int main() { return 0; }
Now that we have the linker plugin, this fails on spu-elf with:
/tmp/cce6KuRb.ltrans0.ltrans.o: In function `foo':
cce6KuRb.ltrans0.o:(.text+0x28): undefined reference to `sqrt'
because nothing links against libm. I'm a bit confused by the comment
above: even with the linker plugin, where should libm be pulled in?
Don't we need to use -lm on the linker line anyway?
Bye,
Ulrich
--
Dr. Ulrich Weigand
GNU Toolchain for Linux on System z and Cell BE
Ulrich.Weigand@de.ibm.com