target/10340: Vararg functions, -fPIC and invalid assembly on i686-pc-linux-gnu

harinath@cs.umn.edu harinath@cs.umn.edu
Mon Apr 7 19:06:00 GMT 2003


>Number:         10340
>Category:       target
>Synopsis:       Vararg functions, -fPIC and invalid assembly on i686-pc-linux-gnu
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Apr 07 19:06:02 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     harinath@cs.umn.edu
>Release:        gcc version 3.4 20030404 (experimental)
>Organization:
>Environment:
i686-pc-linux-gnu
>Description:
Compiling the following simple program:

  static struct { int i; int j; } s;
  int fnV (int, ...);
  void fnA (void)
  {
    fnV(s.j, fnV(s.j));
  }

with -fPIC -O1 or -fPIC -O2 gives:

  $  gcc -c -fPIC -O1 foo.c
  /tmp/ccxT9xXg.s: Assembler messages:
  /tmp/ccxT9xXg.s:13: Error: suffix or operands invalid for `lea'

The assemblers I tried were

  GNU assembler version 2.12.90.0.1 (i386-linux) using BFD version 2.12.90.0.1 20020307 Debian/GNU Linux
  GNU assembler version 2.13.90 (i686-pc-linux-gnu) using BFD version 2.13.90 20030407
>How-To-Repeat:
gcc -c -fPIC -O1 foo.c
gcc -c -fPIC -O2 foo.c
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-csrc; name="foo.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="foo.c"

c3RhdGljIHN0cnVjdCB7IGludCBpOyBpbnQgajsgfSBzOwoKaW50IGZuViAoaW50LCAuLi4pOwp2
b2lkIGZuQSAodm9pZCkKewogIGZuVihzLmosIGZuVihzLmopKTsKfQo=



More information about the Gcc-bugs mailing list