From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13342 invoked by alias); 14 Apr 2005 00:55:11 -0000 Mailing-List: contact java-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: java-prs-owner@gcc.gnu.org Received: (qmail 13268 invoked by uid 48); 14 Apr 2005 00:55:08 -0000 Date: Thu, 14 Apr 2005 00:55:00 -0000 From: "greenrd at greenrd dot org" To: java-prs@gcc.gnu.org Message-ID: <20050414005457.21016.greenrd@greenrd.org> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug java/21016] New: Indirect dispatch code generated when using -findirect-dispatch has wrong line numbers X-Bugzilla-Reason: CC X-SW-Source: 2005-q2/txt/msg00110.txt.bz2 List-Id: (This is superficially similar to bug 16439, in that it involves "synthetic code" being tagged with insufficiently precise line numbers.) Compiling the attached .class file with gcj -findirect-dispatch -shared -S -O0 -g WebappClassLoader.class results in the following (i386) assembly code for line 1578: .loc 1 1578 0 movl _CD_org_apache_catalina_loader_WebappClassLoader+200, %eax subl $12, %esp .LCFI2993: pushl %eax .LCFI2994: call _Jv_AllocObjectNoFinalizer addl $16, %esp .LCFI2995: movl %eax, -368(%ebp) movl -368(%ebp), %eax movl %eax, -364(%ebp) movl -364(%ebp), %eax movl %eax, -368(%ebp) movl 12(%ebp), %eax movl %eax, -272(%ebp) .loc 1 1651 0 movl -364(%ebp), %ecx movl _atable_org_apache_catalina_loader_WebappClassLoader+92, %eax movl %eax, %edx movl -272(%ebp), %eax subl $8, %esp .LCFI2996: pushl %eax .LCFI2997: pushl %ecx .LCFI2998: call *%edx addl $16, %esp .LCFI2999: .loc 1 1578 0 movl -368(%ebp), %eax subl $12, %esp .LCFI3000: pushl %eax .LCFI3001: call _Jv_Throw Note that while the start and end of this code block is correctly marked as being from line 1578, the middle (the indirect dispatch) is incorrectly marked as being from line 1651 (which happens to be the line number of the last statement in the method.) This causes line numbers in some stack traces to be incorrect. Original source file attached below. # gcj -v Using built-in specs. Reading specs from /usr/lib/gcc/i386-redhat-linux/4.0.0/libgcj.spec rename spec lib to liborig Target: i386-redhat-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-languages=c,c++,objc,java,f95,ada --enable-java-awt=gtk --host=i386-redhat-linux Thread model: posix gcc version 4.0.0 20050405 (Red Hat 4.0.0-0.40) -- Summary: Indirect dispatch code generated when using -findirect- dispatch has wrong line numbers Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: java AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: greenrd at greenrd dot org CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21016