On 01/07/11 10:46, Richard Guenther wrote:
You could add this logic to the tree-tailcall.c pass. I suppose what you
really want is no dominating call rather than only a single call in total.
Yes, that's true. I am currently porting the backend to 4.6.1 so I might
do the changes in tree-tail
On Fri, Jul 1, 2011 at 11:41 AM, Paulo J. Matos wrote:
> On 01/07/11 10:31, Richard Guenther wrote:
>>
>> It is being done because the edges are not kept up-to-date. There is
>> no other way to find callees but to walk all statements. I also do not
>> see a good reason why you would want to use
On 01/07/11 10:31, Richard Guenther wrote:
It is being done because the edges are not kept up-to-date. There is
no other way to find callees but to walk all statements. I also do not
see a good reason why you would want to use the number of callees
of a function to decide whether to emit sibca
On Fri, Jul 1, 2011 at 11:10 AM, Paulo J. Matos wrote:
>
>
> On 01/07/11 09:38, Paulo J. Matos wrote:
>
>> In GCC4.4 function test presents 2 callees foo() and bar() and the
>> sibcall is not done. In GCC4.5 the sibcall is done (but shouldn't)
>> because callees in cgraph is 0x0. I wonder if this
On 01/07/11 09:38, Paulo J. Matos wrote:
In GCC4.4 function test presents 2 callees foo() and bar() and the
sibcall is not done. In GCC4.5 the sibcall is done (but shouldn't)
because callees in cgraph is 0x0. I wonder if this information is not
available anymore at this point and if there's so
Hi,
In TARGET_FUNCTION_OK_FOR_SIBCALL I use the number of callees of the
current_function_decl to decide if a sibcall should be done.
I have:
int aaa[9];
__attribute__ ((noinline))
int *foo(void) { return aaa; }
__attribute__ ((noinline))
void bar(int *a) { a[0] = 0x1234; }
void test(void)