------- Comment #6 from tanaka at personal-media dot co dot jp  2006-06-23 
09:52 -------
Please answer my question again.

It can not be distinguished between a function, which specified 
__inline__ and an another function, which is not specified __inline__, 
after gcc-3.4.

This is sample.

/************ test.c ****************/
static __inline__ int inl_small( int a)
{
        return 2*a;
}

static int small(int a)
{
        return 2*a;
}

int main()
{
        int i;

        i = inl_small(2);
        i = small(i);
}
############ mk.rc ####################
#!/bin/sh
set -v

BD3_4_5='/work/te/tool/Linux-i686'
GCC3_4_5="$BD3_4_5/bin/gcc"

BD3_3_2='/work/te/tool/Linux-i686-3.3.2'
GCC3_3_2="$BD3_3_2/bin/gcc"

ODP="$BD3_3_2/bin/objdump -C -S --disassemble-zeroes"

$GCC3_4_5 -O2                       -c test.c -o 3_4_5_test_.o
$GCC3_4_5 -O2 -finline-functions    -c test.c -o 3_4_5_test_inf.o
$GCC3_4_5 -O2 -fno-inline-functions -c test.c -o 3_4_5_test_noinf.o
$GCC3_4_5 -O2 -fno-inline           -c test.c -o 3_4_5_test_noin.o

$GCC3_3_2 -O2                       -c test.c -o 3_3_2_test_.o
$GCC3_3_2 -O2 -finline-functions    -c test.c -o 3_3_2_test_inf.o
$GCC3_3_2 -O2 -fno-inline-functions -c test.c -o 3_3_2_test_noinf.o
$GCC3_3_2 -O2 -fno-inline           -c test.c -o 3_3_2_test_noin.o

$ODP 3_4_5_test_.o      > 3_4_5_test_.o.odp
$ODP 3_4_5_test_inf.o   > 3_4_5_test_inf.o.odp
$ODP 3_4_5_test_noinf.o > 3_4_5_test_noinf.o.odp
$ODP 3_4_5_test_noin.o  > 3_4_5_test_noin.o.odp

$ODP 3_3_2_test_.o      > 3_3_2_test_.o.odp
$ODP 3_3_2_test_inf.o   > 3_3_2_test_inf.o.odp
$ODP 3_3_2_test_noinf.o > 3_3_2_test_noinf.o.odp
$ODP 3_3_2_test_noin.o  > 3_3_2_test_noin.o.odp
######################################
Result is
----------------------------------------------------
gcc-3.3.2 -O2 
                        inl_small()     small()
                        inlined.        not inlined.
-finline-functions      inlined.        inlined.
-fno-inline-functions   inlined.        not inlined.
-fno-inline             not inlined.    not inlined.

----------------------------------------------------
gcc-3.4.5 -O2 
                        inl_small       small
                        inlined.        inlined.
-finline-functions      inlined.        inlined.
-fno-inline-functions   inlined.        inlined.
-fno-inline             not inlined.    not inlined.
----------------------------------------------------

It could be controlled to make a function inlined or not inlined,
according to specified __inline__ or not specified __inline__ 
before gcc-3.4.
But it can't after gcc-3.4.


I hope to confirm a conclusion.
That is to say, simple function is always integrated into their 
callers when it compiled with a option -O2, after gcc-3.4 isn't it?

Best regards.


-- 

tanaka at personal-media dot co dot jp changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |UNCONFIRMED
         Resolution|INVALID                     |


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

Reply via email to