Commit 7894073c by Steve Ellcey Committed by Steve Ellcey

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
parent 8f07a2aa
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> 2010-11-01 Nathan Froyd <froydnj@codesourcery.com>
PR tree-optimization/46259 PR tree-optimization/46259
...@@ -813,16 +813,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -813,16 +813,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define TARGET_DEFAULT_PACK_STRUCT 0 #define TARGET_DEFAULT_PACK_STRUCT 0
#endif #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 /* By default, the vtable entries are void pointers, the so the alignment
is the same as pointer alignment. The value of this macro specifies 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 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 ...@@ -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) #define STACK_CHECK_MAX_VAR_SIZE (STACK_CHECK_MAX_FRAME_SIZE / 100)
#endif #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 #ifndef SWITCHABLE_TARGET
#define SWITCHABLE_TARGET 0 #define SWITCHABLE_TARGET 0
#endif #endif
......
...@@ -798,6 +798,24 @@ __gcov_one_value_profiler (gcov_type *counters, gcov_type value) ...@@ -798,6 +798,24 @@ __gcov_one_value_profiler (gcov_type *counters, gcov_type value)
#endif #endif
#ifdef L_gcov_indirect_call_profiler #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. */ /* Tries to determine the most common value among its inputs. */
void void
__gcov_indirect_call_profiler (gcov_type* counter, gcov_type value, __gcov_indirect_call_profiler (gcov_type* counter, gcov_type value,
...@@ -807,7 +825,7 @@ __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 function may have multiple descriptors and we need to dereference
the descriptors to see if they point to the same function. */ the descriptors to see if they point to the same function. */
if (cur_func == callee_func if (cur_func == callee_func
|| (TARGET_VTABLE_USES_DESCRIPTORS && callee_func || (VTABLE_USES_DESCRIPTORS && callee_func
&& *(void **) cur_func == *(void **) callee_func)) && *(void **) cur_func == *(void **) callee_func))
__gcov_one_value_profiler_body (counter, value); __gcov_one_value_profiler_body (counter, value);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment