This is the mail archive of the gcc-prs@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]

Re: c/7153: bad operands for 'movsbl' error


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

From: Ben Liblit <liblit@eecs.berkeley.edu>
To: Eric Botcazou <ebotcazou@libertysurf.fr>
Cc: gcc-gnats@gcc.gnu.org
Subject: Re: c/7153: bad operands for 'movsbl' error
Date: Mon, 01 Jul 2002 12:18:04 -0700

 Thank you, Eric, for your speedy and expert diagnosis!  Unfortunatley,
 in my case, the problem is not so easily solved.  :-(
 
 The real code in which I am encountering this error is the product of an
 automatic transformation which adds logging of the values of local
 variables at a randomized subset of dynamic program points.  Right now,
 I don't do anything special to avoid logging uninitialized variables. 
 If I want to avoid this bug, I'd essentially need to reimplement the
 dataflow analysis used by gcc to identify uninitialized variables,
 including any and all special cases or quirks particular to gcc's
 definition of what exactly "uninitialized" means.
 
 Furthermore, the logging transformation is intended as a bug hunting
 tool, and some bugs may be caused by accessing uninitialized data: i.e.,
 if I filter out uninitialized variables, I miss a broad class of the
 bugs that the transformation is intended to detect.
 
 Hmm.
 
 > one of the optimization passes of the compiler (register movement)
 > implicitly expects variables to be set before being accessed
 
 Do we still want to consider that implicit expectation to be a gcc bug? 
 I'd say yes.  If the optimizer genuinely *cannot* be made to work with
 uninitialized data, then it should emit an error message (not just a
 warning) and refuse to continue.  Generating bogus assembly code is a
 poor diagnostic.


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