defaults.h (TARGET_VTABLE_USES_DESCRIPTORS): Move under ifdef GCC_INSN_FLAGS_H.
2010-11-01 Steve Ellcey <sje@cup.hp.com> * defaults.h (TARGET_VTABLE_USES_DESCRIPTORS): Move under ifdef GCC_INSN_FLAGS_H. * libgcov.c (__gcov_indirect_call_profiler): Set VTABLE_USES_DESCRIPTORS if TARGET_VTABLE_USES_DESCRIPTORS is defined and use in place of TARGET_VTABLE_USES_DESCRIPTORS. From-SVN: r166145
This commit is contained in:
parent
8f07a2aa35
commit
7894073c2f
3 changed files with 37 additions and 11 deletions
|
@ -1,3 +1,11 @@
|
|||
2010-11-01 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
* defaults.h (TARGET_VTABLE_USES_DESCRIPTORS): Move under ifdef
|
||||
GCC_INSN_FLAGS_H.
|
||||
* libgcov.c (__gcov_indirect_call_profiler): Set
|
||||
VTABLE_USES_DESCRIPTORS if TARGET_VTABLE_USES_DESCRIPTORS is
|
||||
defined and use in place of TARGET_VTABLE_USES_DESCRIPTORS.
|
||||
|
||||
2010-11-01 Nathan Froyd <froydnj@codesourcery.com>
|
||||
|
||||
PR tree-optimization/46259
|
||||
|
|
|
@ -813,16 +813,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|||
#define TARGET_DEFAULT_PACK_STRUCT 0
|
||||
#endif
|
||||
|
||||
/* By default, the C++ compiler will use function addresses in the
|
||||
vtable entries. Setting this nonzero tells the compiler to use
|
||||
function descriptors instead. The value of this macro says how
|
||||
many words wide the descriptor is (normally 2). It is assumed
|
||||
that the address of a function descriptor may be treated as a
|
||||
pointer to a function. */
|
||||
#ifndef TARGET_VTABLE_USES_DESCRIPTORS
|
||||
#define TARGET_VTABLE_USES_DESCRIPTORS 0
|
||||
#endif
|
||||
|
||||
/* By default, the vtable entries are void pointers, the so the alignment
|
||||
is the same as pointer alignment. The value of this macro specifies
|
||||
the alignment of the vtable entry in bits. It should be defined only
|
||||
|
@ -1381,6 +1371,16 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|||
#define STACK_CHECK_MAX_VAR_SIZE (STACK_CHECK_MAX_FRAME_SIZE / 100)
|
||||
#endif
|
||||
|
||||
/* By default, the C++ compiler will use function addresses in the
|
||||
vtable entries. Setting this nonzero tells the compiler to use
|
||||
function descriptors instead. The value of this macro says how
|
||||
many words wide the descriptor is (normally 2). It is assumed
|
||||
that the address of a function descriptor may be treated as a
|
||||
pointer to a function. */
|
||||
#ifndef TARGET_VTABLE_USES_DESCRIPTORS
|
||||
#define TARGET_VTABLE_USES_DESCRIPTORS 0
|
||||
#endif
|
||||
|
||||
#ifndef SWITCHABLE_TARGET
|
||||
#define SWITCHABLE_TARGET 0
|
||||
#endif
|
||||
|
|
|
@ -798,6 +798,24 @@ __gcov_one_value_profiler (gcov_type *counters, gcov_type value)
|
|||
#endif
|
||||
|
||||
#ifdef L_gcov_indirect_call_profiler
|
||||
|
||||
/* By default, the C++ compiler will use function addresses in the
|
||||
vtable entries. Setting TARGET_VTABLE_USES_DESCRIPTORS to nonzero
|
||||
tells the compiler to use function descriptors instead. The value
|
||||
of this macro says how many words wide the descriptor is (normally 2),
|
||||
but it may be dependent on target flags. Since we do not have access
|
||||
to the target flags here we just check to see if it is set and use
|
||||
that to set VTABLE_USES_DESCRIPTORS to 0 or 1.
|
||||
|
||||
It is assumed that the address of a function descriptor may be treated
|
||||
as a pointer to a function. */
|
||||
|
||||
#ifdef TARGET_VTABLE_USES_DESCRIPTORS
|
||||
#define VTABLE_USES_DESCRIPTORS 1
|
||||
#else
|
||||
#define VTABLE_USES_DESCRIPTORS 0
|
||||
#endif
|
||||
|
||||
/* Tries to determine the most common value among its inputs. */
|
||||
void
|
||||
__gcov_indirect_call_profiler (gcov_type* counter, gcov_type value,
|
||||
|
@ -807,7 +825,7 @@ __gcov_indirect_call_profiler (gcov_type* counter, gcov_type value,
|
|||
function may have multiple descriptors and we need to dereference
|
||||
the descriptors to see if they point to the same function. */
|
||||
if (cur_func == callee_func
|
||||
|| (TARGET_VTABLE_USES_DESCRIPTORS && callee_func
|
||||
|| (VTABLE_USES_DESCRIPTORS && callee_func
|
||||
&& *(void **) cur_func == *(void **) callee_func))
|
||||
__gcov_one_value_profiler_body (counter, value);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue