mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-28 15:51:00 +08:00
gengtype-state.c (fatal_reading_state): Bring offline.
* gengtype-state.c (fatal_reading_state): Bring offline. * optabs.c (widening_optab_handler): Bring offline. * optabs.h (widening_optab_handler): Likewise. * final.c (get_attr_length_1): Likewise. From-SVN: r210896
This commit is contained in:
parent
e0e349f3f2
commit
4df199d153
@ -1,3 +1,10 @@
|
||||
2014-05-23 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
* gengtype-state.c (fatal_reading_state): Bring offline.
|
||||
* optabs.c (widening_optab_handler): Bring offline.
|
||||
* optabs.h (widening_optab_handler): Likewise.
|
||||
* final.c (get_attr_length_1): Likewise.
|
||||
|
||||
2014-05-23 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
* sched-int.h (sd_iterator_cond): Manually tail recurse.
|
||||
|
@ -391,11 +391,19 @@ Interprocedural points-to information is located in
|
||||
|
||||
@item Profiling
|
||||
|
||||
This pass rewrites the function in order to collect runtime block
|
||||
This pass instruments the function in order to collect runtime block
|
||||
and value profiling data. Such data may be fed back into the compiler
|
||||
on a subsequent run so as to allow optimization based on expected
|
||||
execution frequencies. The pass is located in @file{predict.c} and
|
||||
is described by @code{pass_profile}.
|
||||
execution frequencies. The pass is located in @file{tree-profile.c} and
|
||||
is described by @code{pass_ipa_tree_profile}.
|
||||
|
||||
@item Static profile estimation
|
||||
|
||||
This pass implements series of heuristics to guess propababilities
|
||||
of branches. The resulting predictions are turned into edge profile
|
||||
by propagating branches across the control flow graphs.
|
||||
The pass is located in @file{tree-profile.c} and is described by
|
||||
@code{pass_profile}.
|
||||
|
||||
@item Lower complex arithmetic
|
||||
|
||||
|
@ -371,7 +371,7 @@ init_insn_lengths (void)
|
||||
/* Obtain the current length of an insn. If branch shortening has been done,
|
||||
get its actual length. Otherwise, use FALLBACK_FN to calculate the
|
||||
length. */
|
||||
static inline int
|
||||
static int
|
||||
get_attr_length_1 (rtx insn, int (*fallback_fn) (rtx))
|
||||
{
|
||||
rtx body;
|
||||
|
@ -282,7 +282,7 @@ state_writer::state_writer ()
|
||||
|
||||
|
||||
/* Fatal message while reading state. */
|
||||
static inline void
|
||||
static void
|
||||
fatal_reading_state (struct state_token_st* tok, const char*msg)
|
||||
{
|
||||
if (tok)
|
||||
|
19
gcc/optabs.c
19
gcc/optabs.c
@ -297,6 +297,25 @@ widened_mode (enum machine_mode to_mode, rtx op0, rtx op1)
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Like optab_handler, but for widening_operations that have a
|
||||
TO_MODE and a FROM_MODE. */
|
||||
|
||||
enum insn_code
|
||||
widening_optab_handler (optab op, enum machine_mode to_mode,
|
||||
enum machine_mode from_mode)
|
||||
{
|
||||
unsigned scode = (op << 16) | to_mode;
|
||||
if (to_mode != from_mode && from_mode != VOIDmode)
|
||||
{
|
||||
/* ??? Why does find_widening_optab_handler_and_mode attempt to
|
||||
widen things that can't be widened? E.g. add_optab... */
|
||||
if (op > LAST_CONV_OPTAB)
|
||||
return CODE_FOR_nothing;
|
||||
scode |= from_mode << 8;
|
||||
}
|
||||
return raw_optab_handler (scode);
|
||||
}
|
||||
|
||||
/* Find a widening optab even if it doesn't widen as much as we want.
|
||||
E.g. if from_mode is HImode, and to_mode is DImode, and there is no
|
||||
direct HI->SI insn, then return SI->DI, if that exists.
|
||||
|
21
gcc/optabs.h
21
gcc/optabs.h
@ -144,6 +144,8 @@ extern enum insn_code find_widening_optab_handler_and_mode (optab,
|
||||
enum machine_mode,
|
||||
int,
|
||||
enum machine_mode *);
|
||||
extern enum insn_code widening_optab_handler (optab, enum machine_mode,
|
||||
enum machine_mode);
|
||||
|
||||
/* An extra flag to control optab_for_tree_code's behavior. This is needed to
|
||||
distinguish between machines with a vector shift that takes a scalar for the
|
||||
@ -275,25 +277,6 @@ convert_optab_handler (convert_optab op, enum machine_mode to_mode,
|
||||
return raw_optab_handler (scode);
|
||||
}
|
||||
|
||||
/* Like optab_handler, but for widening_operations that have a
|
||||
TO_MODE and a FROM_MODE. */
|
||||
|
||||
static inline enum insn_code
|
||||
widening_optab_handler (optab op, enum machine_mode to_mode,
|
||||
enum machine_mode from_mode)
|
||||
{
|
||||
unsigned scode = (op << 16) | to_mode;
|
||||
if (to_mode != from_mode && from_mode != VOIDmode)
|
||||
{
|
||||
/* ??? Why does find_widening_optab_handler_and_mode attempt to
|
||||
widen things that can't be widened? E.g. add_optab... */
|
||||
if (op > LAST_CONV_OPTAB)
|
||||
return CODE_FOR_nothing;
|
||||
scode |= from_mode << 8;
|
||||
}
|
||||
return raw_optab_handler (scode);
|
||||
}
|
||||
|
||||
/* Return the insn used to implement mode MODE of OP, or CODE_FOR_nothing
|
||||
if the target does not have such an insn. */
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user