public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/10719: invalid code generated (x86, "int $5") with __builtin_va_arg(va, char);
@ 2003-05-09 20:46 Andrew Pinski
  0 siblings, 0 replies; 5+ messages in thread
From: Andrew Pinski @ 2003-05-09 20:46 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/10719; it has been noted by GNATS.

From: Andrew Pinski <pinskia@physics.uc.edu>
To: sb@biallas.net
Cc: Andrew Pinski <pinskia@physics.uc.edu>, gcc-gnats@gcc.gnu.org
Subject: Re: c/10719: invalid code generated (x86, "int $5") with __builtin_va_arg(va, char);
Date: Fri, 9 May 2003 16:43:05 -0400

 va_arg(va, char) is not valid code so it could produce anything, gcc 
 use `int $5' on x86 to make sure you know it is not valid.
 
 So you said it is not valid, it gives you a warning also so that is the 
 correct behavior aka not a bug.
 
 Can someone close this PR.
 
 Thanks,
 Andrew Pinski
 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: c/10719: invalid code generated (x86, "int $5") with __builtin_va_arg(va, char);
@ 2003-05-12 14:46 Joseph S. Myers
  0 siblings, 0 replies; 5+ messages in thread
From: Joseph S. Myers @ 2003-05-12 14:46 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/10719; it has been noted by GNATS.

From: "Joseph S. Myers" <jsm28@cam.ac.uk>
To: sbiallas@online-club.de
Cc: rth@gcc.gnu.org, gcc-bugs@gcc.gnu.org, sb@biallas.net, 
    gcc-gnats@gcc.gnu.org
Subject: Re: c/10719: invalid code generated (x86, "int $5") with
 __builtin_va_arg(va, char);
Date: Mon, 12 May 2003 15:45:24 +0100 (BST)

 On Mon, 12 May 2003 sbiallas@online-club.de wrote:
 
 > I can't agree with this: gcc shouldn't generate
 > invalid code on purpose. It knows there is an
 > error and should generate an error and not a
 > warning. The warning is misleading (it sounds like
 > gcc found a problem and corrected it) and will
 > probably not recognized.
 
 Please read the response to Defect Report #109.  This code only yields 
 undefined behavior if it is ever executed, and it might not be, so GCC 
 must not yield an error.  To quote the response:
 
    A conforming implementation must not fail to translate a strictly
    conforming program simply because _some_ possible execution of that
    program would result in undefined behavior.
 
 http://std.dkuug.dk/JTC1/SC22/WG14/www/docs/dr_109.html
 
 -- 
 Joseph S. Myers
 jsm28@cam.ac.uk


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: c/10719: invalid code generated (x86, "int $5") with __builtin_va_arg(va, char);
@ 2003-05-12 13:56 sbiallas
  0 siblings, 0 replies; 5+ messages in thread
From: sbiallas @ 2003-05-12 13:56 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/10719; it has been noted by GNATS.

From: sbiallas@online-club.de
To: rth@gcc.gnu.org, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org,
  nobody@gcc.gnu.org, sb@biallas.net, gcc-gnats@gcc.gnu.org
Cc:  
Subject: Re: c/10719: invalid code generated (x86, "int $5") with __builtin_va_arg(va, char);
Date: Mon, 12 May 2003 15:46:55 +0200 (MEST)

 >Not a bug.  This is in fact a feature.  As you
 note, the code
 >is bad and you should use "int".  There is no
 sensible code
 >that could be generated.
 
 I can't agree with this: gcc shouldn't generate
 invalid code on purpose. It knows there is an
 error and should generate an error and not a
 warning. The warning is misleading (it sounds like
 gcc found a problem and corrected it) and will
 probably not recognized.
 
 With the same attitude you could easily allow
 instantiating a class with abstract functions and
 segv when an abstract function is called.
 
 Additionally "int $5" is a very bad way of
 indicating bad code. This would for example
 trigger a "print screen" on DOS or could even be a
 syscall on other systems.
 
 Regards,
 Sebastian


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: c/10719: invalid code generated (x86, "int $5") with __builtin_va_arg(va, char);
@ 2003-05-12  3:03 rth
  0 siblings, 0 replies; 5+ messages in thread
From: rth @ 2003-05-12  3:03 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, sb

Synopsis: invalid code generated (x86, "int $5") with __builtin_va_arg(va, char);

State-Changed-From-To: open->closed
State-Changed-By: rth
State-Changed-When: Mon May 12 03:03:24 2003
State-Changed-Why:
    Not a bug.  This is in fact a feature.  As you note, the code
    is bad and you should use "int".  There is no sensible code
    that could be generated.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=10719


^ permalink raw reply	[flat|nested] 5+ messages in thread

* c/10719: invalid code generated (x86, "int $5") with __builtin_va_arg(va, char);
@ 2003-05-09 20:36 sb
  0 siblings, 0 replies; 5+ messages in thread
From: sb @ 2003-05-09 20:36 UTC (permalink / raw)
  To: gcc-gnats


>Number:         10719
>Category:       c
>Synopsis:       invalid code generated (x86, "int $5") with __builtin_va_arg(va, char);
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri May 09 20:36:01 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     sb@biallas.net
>Release:        gcc version 3.2.3 20030422 (Gentoo Linux 1.4 3.2.3, propolice)
>Organization:
>Environment:
Gentoo Linux 1.4 x86
>Description:
When using 

char b = __builtin_va_arg(va, char);

gcc incorrectly generates an "int $5" in assembly (x86).

(I know, that this is bad code and I should use "int" instead of "char)

Extract from disassembly:

[...]
pushl   %ebp
movl    %esp, %ebp
subl    $8, %esp
leal    12(%ebp), %eax
movl    %eax, -4(%ebp)
int     $5
[...]

This is obviously plain wrong.

This is reproduceable with versions 3.2.2 and 3.2.3 but not with 3.2.1
>How-To-Repeat:
run 
gcc -S -o cuda.s cuda.i
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="cuda.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="cuda.i"

dHlwZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKdHlwZWRlZiBfX2dudWNf
dmFfbGlzdCB2YV9saXN0OwoKdm9pZCBpbnQ1KGludCBuYiwgLi4uKQp7CiAgICAgICAgdmFfbGlz
dCB2YTsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KCh2YSksbmIpOwogICAgICAgIGNo
YXIgYiA9IF9fYnVpbHRpbl92YV9hcmcodmEsIGNoYXIpOwogICAgICAgIF9fYnVpbHRpbl92YV9l
bmQodmEpOwp9Cg==


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2003-05-12 14:46 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-09 20:46 c/10719: invalid code generated (x86, "int $5") with __builtin_va_arg(va, char); Andrew Pinski
  -- strict thread matches above, loose matches on Subject: below --
2003-05-12 14:46 Joseph S. Myers
2003-05-12 13:56 sbiallas
2003-05-12  3:03 rth
2003-05-09 20:36 sb

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).