diff options
Diffstat (limited to 'poky/meta/recipes-devtools/gcc/gcc-7.3/0001-PR-rtl-optimization-83030.patch')
-rw-r--r-- | poky/meta/recipes-devtools/gcc/gcc-7.3/0001-PR-rtl-optimization-83030.patch | 272 |
1 files changed, 0 insertions, 272 deletions
diff --git a/poky/meta/recipes-devtools/gcc/gcc-7.3/0001-PR-rtl-optimization-83030.patch b/poky/meta/recipes-devtools/gcc/gcc-7.3/0001-PR-rtl-optimization-83030.patch deleted file mode 100644 index 71f7988ea..000000000 --- a/poky/meta/recipes-devtools/gcc/gcc-7.3/0001-PR-rtl-optimization-83030.patch +++ /dev/null @@ -1,272 +0,0 @@ -From f5c4a9440f15ccf6775659910a2014a5494ee86e Mon Sep 17 00:00:00 2001 -From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> -Date: Wed, 22 Nov 2017 21:43:22 +0000 -Subject: [PATCH] PR rtl-optimization/83030 * doc/rtl.texi (Flags - in an RTL Expression): Alphabetize, add entry for CROSSING_JUMP_P and - mention usage of 'jump' for JUMP_INSNs. (Insns): Delete entry for - REG_CROSSING_JUMP in register notes. * bb-reorder.c - (update_crossing_jump_flags): Do not test whether the CROSSING_JUMP_P flag - is already set before setting it. * cfgrtl.c (fixup_partition_crossing): - Likewise. * reorg.c (relax_delay_slots): Do not consider a - CROSSING_JUMP_P insn as useless. - -git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255083 138bc75d-0d04-0410-961f-82ee72b054a4 - -Upstream-Status: Backport - -This patch removes changes to Changelog from the original upstream patch. -This will help us avoid conflicts. - -Original backport to GCC 7.x by Amruta Pawar <Amruta.Pawar@kpit.com> - -Signed-off-by: Mark Hatle <mark.hatle@windriver.com> - ---- - gcc/bb-reorder.c | 5 +-- - gcc/cfgrtl.c | 3 +- - gcc/doc/rtl.texi | 129 ++++++++++++++++++++++++++++--------------------------- - gcc/reorg.c | 7 +-- - 5 files changed, 84 insertions(+), 72 deletions(-) - -diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c -index 55e6dc6..794283c 100644 ---- a/gcc/bb-reorder.c -+++ b/gcc/bb-reorder.c -@@ -2236,10 +2236,7 @@ update_crossing_jump_flags (void) - FOR_EACH_EDGE (e, ei, bb->succs) - if (e->flags & EDGE_CROSSING) - { -- if (JUMP_P (BB_END (bb)) -- /* Some flags were added during fix_up_fall_thru_edges, via -- force_nonfallthru_and_redirect. */ -- && !CROSSING_JUMP_P (BB_END (bb))) -+ if (JUMP_P (BB_END (bb))) - CROSSING_JUMP_P (BB_END (bb)) = 1; - break; - } -diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c -index d6e5ac0..a2ad075 100644 ---- a/gcc/cfgrtl.c -+++ b/gcc/cfgrtl.c -@@ -1334,8 +1334,7 @@ fixup_partition_crossing (edge e) - if (BB_PARTITION (e->src) != BB_PARTITION (e->dest)) - { - e->flags |= EDGE_CROSSING; -- if (JUMP_P (BB_END (e->src)) -- && !CROSSING_JUMP_P (BB_END (e->src))) -+ if (JUMP_P (BB_END (e->src))) - CROSSING_JUMP_P (BB_END (e->src)) = 1; - } - else if (BB_PARTITION (e->src) == BB_PARTITION (e->dest)) -diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi -index 21524f5..a58eedc 100644 ---- a/gcc/doc/rtl.texi -+++ b/gcc/doc/rtl.texi -@@ -565,6 +565,16 @@ that are used in certain types of expression. Most often they - are accessed with the following macros, which expand into lvalues. - - @table @code -+@findex CROSSING_JUMP_P -+@cindex @code{jump_insn} and @samp{/j} -+@item CROSSING_JUMP_P (@var{x}) -+Nonzero in a @code{jump_insn} if it crosses between hot and cold sections, -+which could potentially be very far apart in the executable. The presence -+of this flag indicates to other optimizations that this branching instruction -+should not be ``collapsed'' into a simpler branching construct. It is used -+when the optimization to partition basic blocks into hot and cold sections -+is turned on. -+ - @findex CONSTANT_POOL_ADDRESS_P - @cindex @code{symbol_ref} and @samp{/u} - @cindex @code{unchanging}, in @code{symbol_ref} -@@ -577,37 +587,6 @@ In either case GCC assumes these addresses can be addressed directly, - perhaps with the help of base registers. - Stored in the @code{unchanging} field and printed as @samp{/u}. - --@findex RTL_CONST_CALL_P --@cindex @code{call_insn} and @samp{/u} --@cindex @code{unchanging}, in @code{call_insn} --@item RTL_CONST_CALL_P (@var{x}) --In a @code{call_insn} indicates that the insn represents a call to a --const function. Stored in the @code{unchanging} field and printed as --@samp{/u}. -- --@findex RTL_PURE_CALL_P --@cindex @code{call_insn} and @samp{/i} --@cindex @code{return_val}, in @code{call_insn} --@item RTL_PURE_CALL_P (@var{x}) --In a @code{call_insn} indicates that the insn represents a call to a --pure function. Stored in the @code{return_val} field and printed as --@samp{/i}. -- --@findex RTL_CONST_OR_PURE_CALL_P --@cindex @code{call_insn} and @samp{/u} or @samp{/i} --@item RTL_CONST_OR_PURE_CALL_P (@var{x}) --In a @code{call_insn}, true if @code{RTL_CONST_CALL_P} or --@code{RTL_PURE_CALL_P} is true. -- --@findex RTL_LOOPING_CONST_OR_PURE_CALL_P --@cindex @code{call_insn} and @samp{/c} --@cindex @code{call}, in @code{call_insn} --@item RTL_LOOPING_CONST_OR_PURE_CALL_P (@var{x}) --In a @code{call_insn} indicates that the insn represents a possibly --infinite looping call to a const or pure function. Stored in the --@code{call} field and printed as @samp{/c}. Only true if one of --@code{RTL_CONST_CALL_P} or @code{RTL_PURE_CALL_P} is true. -- - @findex INSN_ANNULLED_BRANCH_P - @cindex @code{jump_insn} and @samp{/u} - @cindex @code{call_insn} and @samp{/u} -@@ -702,6 +681,29 @@ Stored in the @code{call} field and printed as @samp{/c}. - Nonzero in a @code{mem} if the memory reference holds a pointer. - Stored in the @code{frame_related} field and printed as @samp{/f}. - -+@findex MEM_READONLY_P -+@cindex @code{mem} and @samp{/u} -+@cindex @code{unchanging}, in @code{mem} -+@item MEM_READONLY_P (@var{x}) -+Nonzero in a @code{mem}, if the memory is statically allocated and read-only. -+ -+Read-only in this context means never modified during the lifetime of the -+program, not necessarily in ROM or in write-disabled pages. A common -+example of the later is a shared library's global offset table. This -+table is initialized by the runtime loader, so the memory is technically -+writable, but after control is transferred from the runtime loader to the -+application, this memory will never be subsequently modified. -+ -+Stored in the @code{unchanging} field and printed as @samp{/u}. -+ -+@findex PREFETCH_SCHEDULE_BARRIER_P -+@cindex @code{prefetch} and @samp{/v} -+@cindex @code{volatile}, in @code{prefetch} -+@item PREFETCH_SCHEDULE_BARRIER_P (@var{x}) -+In a @code{prefetch}, indicates that the prefetch is a scheduling barrier. -+No other INSNs will be moved over it. -+Stored in the @code{volatil} field and printed as @samp{/v}. -+ - @findex REG_FUNCTION_VALUE_P - @cindex @code{reg} and @samp{/i} - @cindex @code{return_val}, in @code{reg} -@@ -731,6 +733,37 @@ The same hard register may be used also for collecting the values of - functions called by this one, but @code{REG_FUNCTION_VALUE_P} is zero - in this kind of use. - -+@findex RTL_CONST_CALL_P -+@cindex @code{call_insn} and @samp{/u} -+@cindex @code{unchanging}, in @code{call_insn} -+@item RTL_CONST_CALL_P (@var{x}) -+In a @code{call_insn} indicates that the insn represents a call to a -+const function. Stored in the @code{unchanging} field and printed as -+@samp{/u}. -+ -+@findex RTL_PURE_CALL_P -+@cindex @code{call_insn} and @samp{/i} -+@cindex @code{return_val}, in @code{call_insn} -+@item RTL_PURE_CALL_P (@var{x}) -+In a @code{call_insn} indicates that the insn represents a call to a -+pure function. Stored in the @code{return_val} field and printed as -+@samp{/i}. -+ -+@findex RTL_CONST_OR_PURE_CALL_P -+@cindex @code{call_insn} and @samp{/u} or @samp{/i} -+@item RTL_CONST_OR_PURE_CALL_P (@var{x}) -+In a @code{call_insn}, true if @code{RTL_CONST_CALL_P} or -+@code{RTL_PURE_CALL_P} is true. -+ -+@findex RTL_LOOPING_CONST_OR_PURE_CALL_P -+@cindex @code{call_insn} and @samp{/c} -+@cindex @code{call}, in @code{call_insn} -+@item RTL_LOOPING_CONST_OR_PURE_CALL_P (@var{x}) -+In a @code{call_insn} indicates that the insn represents a possibly -+infinite looping call to a const or pure function. Stored in the -+@code{call} field and printed as @samp{/c}. Only true if one of -+@code{RTL_CONST_CALL_P} or @code{RTL_PURE_CALL_P} is true. -+ - @findex RTX_FRAME_RELATED_P - @cindex @code{insn} and @samp{/f} - @cindex @code{call_insn} and @samp{/f} -@@ -765,21 +798,6 @@ computation performed by this instruction, i.e., one that - This flag is required for exception handling support on targets with RTL - prologues. - --@findex MEM_READONLY_P --@cindex @code{mem} and @samp{/u} --@cindex @code{unchanging}, in @code{mem} --@item MEM_READONLY_P (@var{x}) --Nonzero in a @code{mem}, if the memory is statically allocated and read-only. -- --Read-only in this context means never modified during the lifetime of the --program, not necessarily in ROM or in write-disabled pages. A common --example of the later is a shared library's global offset table. This --table is initialized by the runtime loader, so the memory is technically --writable, but after control is transferred from the runtime loader to the --application, this memory will never be subsequently modified. -- --Stored in the @code{unchanging} field and printed as @samp{/u}. -- - @findex SCHED_GROUP_P - @cindex @code{insn} and @samp{/s} - @cindex @code{call_insn} and @samp{/s} -@@ -879,14 +897,6 @@ Stored in the @code{volatil} field and printed as @samp{/v}. - Most uses of @code{SYMBOL_REF_FLAG} are historic and may be subsumed - by @code{SYMBOL_REF_FLAGS}. Certainly use of @code{SYMBOL_REF_FLAGS} - is mandatory if the target requires more than one bit of storage. -- --@findex PREFETCH_SCHEDULE_BARRIER_P --@cindex @code{prefetch} and @samp{/v} --@cindex @code{volatile}, in @code{prefetch} --@item PREFETCH_SCHEDULE_BARRIER_P (@var{x}) --In a @code{prefetch}, indicates that the prefetch is a scheduling barrier. --No other INSNs will be moved over it. --Stored in the @code{volatil} field and printed as @samp{/v}. - @end table - - These are the fields to which the above macros refer: -@@ -974,6 +985,8 @@ In a @code{set}, 1 means it is for a return. - - In a @code{call_insn}, 1 means it is a sibling call. - -+In a @code{jump_insn}, 1 means it is a crossing jump. -+ - In an RTL dump, this flag is represented as @samp{/j}. - - @findex unchanging -@@ -3887,16 +3900,6 @@ multiple targets; the last label in the insn (in the highest numbered - insn-field) goes into the @code{JUMP_LABEL} field and does not have a - @code{REG_LABEL_TARGET} note. @xref{Insns, JUMP_LABEL}. - --@findex REG_CROSSING_JUMP --@item REG_CROSSING_JUMP --This insn is a branching instruction (either an unconditional jump or --an indirect jump) which crosses between hot and cold sections, which --could potentially be very far apart in the executable. The presence --of this note indicates to other optimizations that this branching --instruction should not be ``collapsed'' into a simpler branching --construct. It is used when the optimization to partition basic blocks --into hot and cold sections is turned on. -- - @findex REG_SETJMP - @item REG_SETJMP - Appears attached to each @code{CALL_INSN} to @code{setjmp} or a -diff --git a/gcc/reorg.c b/gcc/reorg.c -index 5914af6..77f3fe7 100644 ---- a/gcc/reorg.c -+++ b/gcc/reorg.c -@@ -3360,10 +3360,11 @@ relax_delay_slots (rtx_insn *first) - } - - /* See if we have a simple (conditional) jump that is useless. */ -- if (! INSN_ANNULLED_BRANCH_P (delay_jump_insn) -- && ! condjump_in_parallel_p (delay_jump_insn) -+ if (!CROSSING_JUMP_P (delay_jump_insn) -+ && !INSN_ANNULLED_BRANCH_P (delay_jump_insn) -+ && !condjump_in_parallel_p (delay_jump_insn) - && prev_active_insn (as_a<rtx_insn *> (target_label)) == insn -- && ! BARRIER_P (prev_nonnote_insn (as_a<rtx_insn *> (target_label))) -+ && !BARRIER_P (prev_nonnote_insn (as_a<rtx_insn *> (target_label))) - /* If the last insn in the delay slot sets CC0 for some insn, - various code assumes that it is in a delay slot. We could - put it back where it belonged and delete the register notes, --- -1.8.5.6 - |