Boost logo

Boost :

From: Gabriel Dos Reis (gdr_at_[hidden])
Date: 2003-02-04 05:22:05


Vladimir Prus <ghost_at_[hidden]> writes:

| Gabriel Dos Reis wrote:
| > "Joel de Guzman" <djowel_at_[hidden]> writes:
| > | Hi,
| > | | I'm not sure if you are aware of this but g++ 2.95.3 cannot
| > | handle the casts:
| > | | g++ 2.95.3 [no STLport]
| > | C:/dev/boost/boost/mpl/integral_c.hpp:67: sorry, not implemented: `static_cast_expr' not supported
| > | by dump_expr
| > This means that the part of GCC-2.95.x compiler responsible for
| > pretty-printing "static_cast_expr" was not taught to do its homework.
|
| First of all, this looks like a major problem: looking at
| regressiong tests result for linux, I see that filesystem tests fail for
| that reason, and some other too -- 53% of tests fail.
|
| Further, I can't understand the following part of regression logs:
|
| operations_test / gcc
| [snip]
| /opt/gcc2/bin//g++ -c -Wall -ftemplate-depth-100 -g -O0
| -fno-inline -I"../libs/filesystem/test" -I
| "/home/boost/boost-regress/boost" -o
| "../libs/filesystem/test/bin/operations_test.test/gcc/debug/runtime-link-dynamic/operations_test.o"
| "/home/boost/boost-regress/boost/libs/filesystem/test/operations_test.cpp"
|
| operations_test / gcc2953
| [snip]
|
| Compiler output:
| [snip]
| /opt/gcc2/bin//g++ -c -Wall -ftemplate-depth-100 -g -O0
| -fno-inline -I"../libs/filesystem/test" -I
| "/home/boost/boost-regress/boost" -o
| "../libs/filesystem/test/bin/operations_test.test/gcc2953/debug/runtime-link-dynamic/operations_test.o"
| "/home/boost/boost-regress/boost/libs/filesystem/test/operations_test.cpp"

I must admit I'm neither familiar with Boost's regression testsuite,
so I would need your help to see what you don't understand.

| Is the same compiler invoked in both cases? This is very likely, because I've
| just build filesystem library with gcc3.2/Boost.Build2 without problems.
|
| BTW, Gabriel, why you say about "pretty-printing"? I though no
| RTL is pretty printed in default gcc settings...

No.

I'm not sure this is the right to discuss GCC initernals. But since
you asked: GCC mainly uses two data structures

   1) "tree" for anything that has to do with front-ends; i.e. source
       programs are parsed and represented as trees.

    2) "RTL" for middle-end and back-ends. Trees are translated from
       trees.

The routine dump_expr mentioned in the "sorry message" only deals with
trees ("static_cast_expr" is an instance of tree). What is happening
is that, somehow, that routine has been called to dump a static_cast
expression.

-- Gaby
 


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk