[cfe-dev] Issues with traversal

josef maxim pohl josef.m.pohl at gmail.com
Tue Dec 6 11:19:05 PST 2011


Hi there,
So I have finally gotten back to working on my translation code which
attempts to walk an AST and create a new syntactic structure from the
nodes for later analysis. I have a few issues which I was hoping
someone could help solve.
Right now I have a simple little code example which I run this on:

#include <iostream>

int inone = 4;
const unsigned int b = 3;

int dosome(int a){
  int c = 3;
  a = a + 7;
  return a + c;
}

int main()
{
  int input = 5;
  dosome(input);
  std::cout<< "Hello World\n";
  for(int i = 0; i < 3; i++)
    {
      input += 5;
    }
  return 0;
}

1. The first issue is regarding the include statement at the top. In
general when I leave it I usually get some error about a header file
not being found or certain items not being found.

In file included from test.cpp:1:
In file included from /usr/include/c++/4.4.4/iostream:39:
In file included from /usr/include/c++/4.4.4/ostream:39:
In file included from /usr/include/c++/4.4.4/ios:38:
In file included from /usr/include/c++/4.4.4/iosfwd:41:
In file included from /usr/include/c++/4.4.4/bits/postypes.h:41:
In file included from /usr/include/c++/4.4.4/tr1/cwchar:46:
/usr/include/c++/4.4.4/tr1_impl/cwchar:37:14: error: no member named
'wcstof' in namespace 'std'
  using std::wcstof;
        ~~~~~^
/usr/include/c++/4.4.4/tr1_impl/cwchar:40:14: error: no member named
'vfwscanf' in namespace 'std'
  using std::vfwscanf;
        ~~~~~^

....

or from another error:
...
/usr/include/c++/4.4.4/bits/postypes.h:214:12: error: unknown type name 'bool'
    inline bool
             ^
....

I suspect that this is an initial configuration problem.  I have
included in my application a number of AddPath statements (to
...c++/4.4.4/...).
In my setup of clang I included the standard directories as well (to
/usr/include/linux , /usr/include/c++/4.4.4/ ...)
Is there something that I missing here?

2. The result of my rather little tree traversal code is approximately
250 MB in size.  Far be it from me to say that this is too big but it
does seem very large.  Is there possibly something off about my
configuration that would create such a binary? Here is my compile
command:

g++ example.cpp -g -o example.out `llvm-config --cxxflags`
-I/usr/local/include -I/usr/include -lclangFrontendTool
-lclangFrontend -lclangDriver -lclangSerialization -lclangCodeGen
-lclangParse -lclangSema -lclangAnalysis -lclangIndex -lclangRewrite
-lclangAST -lclangLex -lclangBasic `llvm-config --ldflags --libs`

I probably have a few things in there that are not needed and have
tried to cull a few of them. (I get compile errors.)  I did my initial
build with out the optimize switch. Would that make a difference here?

Thanks,
Josef



More information about the cfe-dev mailing list