This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/25399] New: Another bogus 'clobbered by longjmp' message


(I don't think this is the same as any of the similar bugs, although I could be
wrong.)
In this case the field assignments cover all of u, so none of it is actually
live across
the call, but dataflow can't figure this out.  

While this bogus warning is the only visible effect I know of, fixing this
would also
decrease register pressure and might result in improved code quality in some
cases.

 struct ss { unsigned short a; unsigned short b; };
 union uu { unsigned int all; struct ss parts; };
#include <setjmp.h>

extern void bar(union uu);
extern void baz();

void foo() {
  for(;;)
  {
    union uu u;
    jmp_buf env;
    u.parts.a = 0;
    u.parts.b = 0;
    bar(u);
    if (setjmp(env)==0)
      baz();
    else
      baz();
  }
}


-- 
           Summary: Another bogus 'clobbered by longjmp' message
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: dalej at gcc dot gnu dot org
 GCC build triplet: powerpc-apple-darwin8.0.0
  GCC host triplet: powerpc-apple-darwin8.0.0
GCC target triplet: powerpc-apple-darwin8.0.0


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]