For the dehydra plugin, we unfortunately have to delay processing certain types
until after their completion (see
http://hg.mozilla.org/rewriting-and-analysis/dehydra/file/1248fd227e7f/dehydra_plugin.c#l426).

We do this by saving the types in a vector and then processing them during
PLUGIN_FINISH_UNIT. I've created a minimal plugin which, when used to compile
sqlite3, demonstrates that a number of types have been mangled by this point.
Could they have been GCed?

Perhaps it's not safe to save types in this manner but it's strange that
sqlite3.c is the only file in the mozilla code base that causes this problem.

gcc version (4.5 branch tip):

Using built-in specs.
COLLECT_GCC=/home/ehren/gcc4.5/dist-4_5-branch/bin/gcc
COLLECT_LTO_WRAPPER=/home/ehren/gcc4.5/dist-4_5-branch/libexec/gcc/x86_64-unknown-linux-gnu/4.5.1/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-4_5-branch/configure --enable-checking
--disable-bootstrap CFLAGS='-g3 -O0' --enable-languages=c,c++
--enable-__cxa_atexit --disable-multilib
--prefix=/home/ehren/gcc4.5/dist-4_5-branch/ : (reconfigured)
../gcc-4_5-branch/configure --enable-checking --disable-bootstrap CFLAGS='-g3
-O0' --enable-languages=c,c++ --enable-__cxa_atexit --disable-multilib
--prefix=/home/ehren/gcc4.5/dist-4_5-branch/
Thread model: posix
gcc version 4.5.1 20100713 (prerelease) (GCC)

(I'll attach the plugin, sqlite3.i, and the plugin's output)


-- 
           Summary: structs saved (in a vector) during PLUGIN_FINISH_TYPE
                    are mangled by the time of PLUGIN_FINISH_UNIT
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: plugins
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: ehren dot m at gmail dot com


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

Reply via email to