[LLVMdev] How to avoid this transformation
Ricardo
rmivs-jygf at yahoo.com
Mon Apr 25 19:45:09 PDT 2005
Thanks, it works fine now
I tried -fno-default-inline before, but it is only for C++ programs
--Ricardo
--- Chris Lattner <sabre at nondot.org> wrote:
> On Mon, 25 Apr 2005, Ricardo wrote:
> > I am trying to compile a program to be used for Pool Allocation. The program tries to allocate
> > certain number of nodes inside a function that is called by main. The problem is that llvm-gcc
> > insists in "optimize" the function so that certain number of nodes are created in main and the
> > rest are created inside the original function. In this case the function is called with a
> minor
> > number of nodes two times. My question is: how to supress this transformation? I am compiling
> > using this line:
> >
> > llvm-gcc -o tree tree.c
> >
> > So that I am not enabling any optimization and I am not running either DSA or PoolAlloc. I use
> the
> > unoptimized .bc file generated and convert it either to .c or .ll and both formats exhibit
> this
> > behavior
>
> llvm-gcc is strange in that it runs optimizations even when not asked to.
> Try this:
>
> llvm-gcc -o tree tree.c -Wa,-disable-inlining -Wl,-disable-inlining
>
> -Chris
>
>
>
> > =======================
> > struct bintree
> > {
> > int data;
> > struct bintree *Left;
> > struct bintree *Right;
> > };
> >
> > void inorder_traversal(struct bintree *node)
> > {
> > if (node->Left != 0) inorder_traversal( node->Left );
> > printf("%d\t", node->data);
> > if (node->Right != 0) inorder_traversal( node->Right );
> > }
> >
> > struct bintree *make_tree(int level)
> > {
> > struct bintree *New = malloc ( sizeof ( struct bintree ) );
> > New->Left = level ? make_tree (level-1) : 0;
> > New->data = level;
> > New->Right = level ? make_tree (level-1) : 0;
> > return New;
> > }
> >
> > int main()
> > {
> > struct bintree *root;
> > root = make_tree(1000);
> > printf("\n");
> > inorder_traversal( root );
> > printf("\n");
> > return 0;
> > }
> > =======================
> >
>
> -Chris
>
> --
> http://nondot.org/sabre/
> http://llvm.cs.uiuc.edu/
>
More information about the llvm-dev
mailing list