This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix warnings building pdp11 port
- From: Jeff Law <law at redhat dot com>
- To: Trevor Saunders <tbsaunde at tbsaunde dot org>
- Cc: "gcc-patches at gcc dot gnu dot org >> gcc-patches" <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 29 Sep 2015 12:33:21 -0600
- Subject: Re: [PATCH] Fix warnings building pdp11 port
- Authentication-results: sourceware.org; auth=none
- References: <560AC292 dot 3010608 at redhat dot com> <20150929181141 dot GA32422 at tsaunders-iceball dot corp dot tor1 dot mozilla dot com>
On 09/29/2015 12:11 PM, Trevor Saunders wrote:
On Tue, Sep 29, 2015 at 10:55:46AM -0600, Jeff Law wrote:
The pdp11 port fails to build with the trunk because of a warning.
Essentially VRP determines that the result of using BRANCH_COST is a
constant with the range [0..1]. That's always less than 4, 3 and the
various other magic constants used with BRANCH_COST and VRP issues a warning
about that comparison.
I expect we're going to be overhauling BRANCH_COST shortly. In the mean
time, this just revectors BRANCH_COST for the pdp11 into a function to
prevent VRP from collapsing the test and issuing the warning.
Yes, this means more code in the pdp11 cross compiler. I'm not terribly
concerned about that and I couldn't stand the idea of scattering diagnostic
push/pop stuff all over the place to make just the pdp11 port happy.
ENOPATCH, but it seems like that's the right direction anyway since it
makes it slightly easier to convert the macro to a hook ;)
Bah. Attached this time :-)
Yea, hookization was in the back of my mind when I made the final choice
to use a function call.
Jeff
commit c6fc406c69342fdcca25ee48294bd43dd90facc2
Author: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Tue Sep 29 16:56:04 2015 +0000
[PATCH] Fix warnings building pdp11 port
* config/pdp11/pdp11.c (pdp11_branch_cost): New function.
* config/pdp11/pdp11.h (BRANCH_COST): Call function rather than
inline macro expansion.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228259 138bc75d-0d04-0410-961f-82ee72b054a4
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 68149c4..13e930a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2015-09-29 Jeff Law <law@redhat.com>
+ * config/pdp11/pdp11.c (pdp11_branch_cost): New function.
+ * config/pdp11/pdp11.h (BRANCH_COST): Call function rather than
+ inline macro expansion.
+
* config/i386/t-interix (winnt-stubs.o): Fix compilation rule.
* config/sh/sh.c (gen_shl_and): Fix undefined left shift
diff --git a/gcc/config/pdp11/pdp11-protos.h b/gcc/config/pdp11/pdp11-protos.h
index 86c6da3..aca3d82 100644
--- a/gcc/config/pdp11/pdp11-protos.h
+++ b/gcc/config/pdp11/pdp11-protos.h
@@ -47,3 +47,4 @@ extern void output_ascii (FILE *, const char *, int);
extern void pdp11_asm_output_var (FILE *, const char *, int, int, bool);
extern void pdp11_expand_prologue (void);
extern void pdp11_expand_epilogue (void);
+extern int pdp11_branch_cost (void);
diff --git a/gcc/config/pdp11/pdp11.c b/gcc/config/pdp11/pdp11.c
index f0c2a5d..8eb37c6 100644
--- a/gcc/config/pdp11/pdp11.c
+++ b/gcc/config/pdp11/pdp11.c
@@ -1933,4 +1933,10 @@ pdp11_scalar_mode_supported_p (machine_mode mode)
return default_scalar_mode_supported_p (mode);
}
+int
+pdp11_branch_cost ()
+{
+ return (TARGET_BRANCH_CHEAP ? 0 : 1);
+}
+
struct gcc_target targetm = TARGET_INITIALIZER;
diff --git a/gcc/config/pdp11/pdp11.h b/gcc/config/pdp11/pdp11.h
index 1d947f3..8339f1c 100644
--- a/gcc/config/pdp11/pdp11.h
+++ b/gcc/config/pdp11/pdp11.h
@@ -660,8 +660,7 @@ extern rtx cc0_reg_rtx;
/* there is no point in avoiding branches on a pdp,
since branches are really cheap - I just want to find out
how much difference the BRANCH_COST macro makes in code */
-#define BRANCH_COST(speed_p, predictable_p) (TARGET_BRANCH_CHEAP ? 0 : 1)
-
+#define BRANCH_COST(speed_p, predictable_p) pdp11_branch_cost ()
#define COMPARE_FLAG_MODE HImode