PR target/55143: undefined reference to `c_default_pointer_mode'
diff mbox

Message ID 1428607654-16888-1-git-send-email-rep.dot.nop@gmail.com
State New
Headers show

Commit Message

Bernhard Reutner-Fischer April 9, 2015, 7:27 p.m. UTC
gcc/ChangeLog:

2015-04-08  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>

	PR target/55143
	* c/c-tree.h (c_default_pointer_mode): Move declaration ...
	* c-family/c-common.h (c_default_pointer_mode): ... here.
	* c/c-decl.c (c_default_pointer_mode): Move definition ...
	* c-family/c-common.c (c_default_pointer_mode): ... here.

---

Ok for trunk?

Fixes all-gcc for ia64-hp-vms which previously failed with:

g++   -g -O2 -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE  -fno-exceptions -fno-rtti \
  -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings \
  -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic \
  -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror \
  -fno-common  -DHAVE_CONFIG_H -static-libstdc++ -static-libgcc  -o cc1 \
  c/c-lang.o c-family/stub-objc.o attribs.o c/c-errors.o c/c-decl.o \
  c/c-typeck.o c/c-convert.o c/c-aux-info.o c/c-objc-common.o c/c-parser.o \
  c/c-array-notation.o c-family/c-common.o c-family/c-cppbuiltin.o \
  c-family/c-dump.o c-family/c-format.o c-family/c-gimplify.o \
  c-family/c-lex.o c-family/c-omp.o c-family/c-opts.o c-family/c-pch.o \
  c-family/c-ppoutput.o c-family/c-pragma.o c-family/c-pretty-print.o \
  c-family/c-semantics.o c-family/c-ada-spec.o c-family/c-cilkplus.o \
  c-family/array-notation-common.o c-family/cilk.o c-family/c-ubsan.o \
  vms-c.o default-c.o \
          cc1-checksum.o libbackend.a main.o tree-browser.o libcommon-target.a \
  libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a libcommon.a \
  ../libcpp/libcpp.a   ../libbacktrace/.libs/libbacktrace.a \
  ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a \
   -L/obj.x86_64/gcc.config-list/ia64-hp-vms/./isl/.libs \
   -lisl -lmpc -lmpfr -lgmp -rdynamic -ldl  -L../zlib -lz
g++   -g -O2 -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE  -fno-exceptions -fno-rtti \
  -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings \
  -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic \
  -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror \
  -fno-common  -DHAVE_CONFIG_H -static-libstdc++ -static-libgcc  -o cc1plus \
              cp/cp-lang.o c-family/stub-objc.o cp/call.o cp/decl.o cp/expr.o \
  cp/pt.o cp/typeck2.o cp/class.o cp/decl2.o cp/error.o cp/lex.o cp/parser.o \
  cp/ptree.o cp/rtti.o cp/typeck.o cp/cvt.o cp/except.o cp/friend.o cp/init.o \
  cp/method.o cp/search.o cp/semantics.o cp/tree.o cp/repo.o cp/dump.o \
  cp/optimize.o cp/mangle.o cp/cp-objcp-common.o cp/name-lookup.o \
  cp/cxx-pretty-print.o cp/cp-cilkplus.o cp/cp-gimplify.o \
  cp/cp-array-notation.o cp/lambda.o cp/vtable-class-hierarchy.o \
  cp/constexpr.o cp/cp-ubsan.o attribs.o incpath.o c-family/c-common.o \
  c-family/c-cppbuiltin.o c-family/c-dump.o c-family/c-format.o \
  c-family/c-gimplify.o c-family/c-lex.o c-family/c-omp.o c-family/c-opts.o \
  c-family/c-pch.o c-family/c-ppoutput.o c-family/c-pragma.o \
  c-family/c-pretty-print.o c-family/c-semantics.o c-family/c-ada-spec.o \
  c-family/c-cilkplus.o c-family/array-notation-common.o c-family/cilk.o \
  c-family/c-ubsan.o vms-c.o default-c.o cc1plus-checksum.o libbackend.a \
  main.o tree-browser.o libcommon-target.a libcommon.a ../libcpp/libcpp.a \
  ../libdecnumber/libdecnumber.a libcommon.a ../libcpp/libcpp.a \
  ../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a \
  ../libdecnumber/libdecnumber.a  \
  -L/obj.x86_64/gcc.config-list/ia64-hp-vms/./isl/.libs \
  -lisl -lmpc -lmpfr -lgmp -rdynamic -ldl  -L../zlib -lz
vms-c.o: In function `handle_pragma_pointer_size(char const*)':
vms-c.c:(.text+0x5ad): undefined reference to `c_default_pointer_mode'
vms-c.c:(.text+0x5c2): undefined reference to `c_default_pointer_mode'
vms-c.c:(.text+0x5da): undefined reference to `c_default_pointer_mode'
vms-c.c:(.text+0x5f8): undefined reference to `c_default_pointer_mode'
vms-c.o: In function `vms_c_common_override_options()':
vms-c.c:(.text+0x9ec): undefined reference to `c_default_pointer_mode'
vms-c.o:vms-c.c:(.text+0xa02): more undefined references to `c_default_pointer_mode' follow
collect2: error: ld returned 1 exit status
make[2]: *** [cc1plus] Error 1
---
 gcc/c-family/c-common.c |    4 ++++
 gcc/c-family/c-common.h |    4 ++++
 gcc/c/c-decl.c          |    4 ----
 gcc/c/c-tree.h          |    4 ----
 4 files changed, 8 insertions(+), 8 deletions(-)

Comments

Jakub Jelinek April 9, 2015, 7:41 p.m. UTC | #1
On Thu, Apr 09, 2015 at 09:27:34PM +0200, Bernhard Reutner-Fischer wrote:
> gcc/ChangeLog:
> 
> 2015-04-08  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
> 
> 	PR target/55143
> 	* c/c-tree.h (c_default_pointer_mode): Move declaration ...
> 	* c-family/c-common.h (c_default_pointer_mode): ... here.
> 	* c/c-decl.c (c_default_pointer_mode): Move definition ...
> 	* c-family/c-common.c (c_default_pointer_mode): ... here.

The ChangeLog is certainly wrong, as both c and c-family have their own
ChangeLog files, so you really can't write it using ... on both sides.

	Jakub
Bernhard Reutner-Fischer April 9, 2015, 7:57 p.m. UTC | #2
On 9 April 2015 at 21:41, Jakub Jelinek <jakub@redhat.com> wrote:
> On Thu, Apr 09, 2015 at 09:27:34PM +0200, Bernhard Reutner-Fischer wrote:
>> gcc/ChangeLog:
>>
>> 2015-04-08  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
>>
>>       PR target/55143
>>       * c/c-tree.h (c_default_pointer_mode): Move declaration ...
>>       * c-family/c-common.h (c_default_pointer_mode): ... here.
>>       * c/c-decl.c (c_default_pointer_mode): Move definition ...
>>       * c-family/c-common.c (c_default_pointer_mode): ... here.
>
> The ChangeLog is certainly wrong, as both c and c-family have their own
> ChangeLog files, so you really can't write it using ... on both sides.

So.. modulo leading tabs:
gcc/c/ChangeLog:

2015-04-09  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>

        PR target/55143
        * c-decl.c (c_default_pointer_mode): Remove definition.
        * c-tree.h (c_default_pointer_mode): Remove declaration.

gcc/c-family/ChangeLog:

2015-04-09  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>

        PR target/55143
        * c-common.c (c_default_pointer_mode): Add definition.
        * c-common.h (c_default_pointer_mode): Add declaration.

Ok for trunk?
thanks,
Jakub Jelinek April 9, 2015, 8:09 p.m. UTC | #3
On Thu, Apr 09, 2015 at 09:57:29PM +0200, Bernhard Reutner-Fischer wrote:
> On 9 April 2015 at 21:41, Jakub Jelinek <jakub@redhat.com> wrote:
> > On Thu, Apr 09, 2015 at 09:27:34PM +0200, Bernhard Reutner-Fischer wrote:
> >> gcc/ChangeLog:
> >>
> >> 2015-04-08  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
> >>
> >>       PR target/55143
> >>       * c/c-tree.h (c_default_pointer_mode): Move declaration ...
> >>       * c-family/c-common.h (c_default_pointer_mode): ... here.
> >>       * c/c-decl.c (c_default_pointer_mode): Move definition ...
> >>       * c-family/c-common.c (c_default_pointer_mode): ... here.
> >
> > The ChangeLog is certainly wrong, as both c and c-family have their own
> > ChangeLog files, so you really can't write it using ... on both sides.
> 
> So.. modulo leading tabs:
> gcc/c/ChangeLog:
> 
> 2015-04-09  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
> 
>         PR target/55143
>         * c-decl.c (c_default_pointer_mode): Remove definition.
>         * c-tree.h (c_default_pointer_mode): Remove declaration.
> 
> gcc/c-family/ChangeLog:
> 
> 2015-04-09  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
> 
>         PR target/55143
>         * c-common.c (c_default_pointer_mode): Add definition.
>         * c-common.h (c_default_pointer_mode): Add declaration.
> 
> Ok for trunk?

The c_default_pointer_mode is very ugly hack, but guess at least for now it
is ok for trunk.

	Jakub
Tristan Gingold April 10, 2015, 5:42 a.m. UTC | #4
On 09/04/15 22:09, Jakub Jelinek wrote:

 > The c_default_pointer_mode is very ugly hack, but guess at least for
 > now it is ok for trunk.
>
> 	Jakub

Could you suggest a better approach ?

Tristan.
Jakub Jelinek April 10, 2015, 6:28 a.m. UTC | #5
On Fri, Apr 10, 2015 at 07:42:23AM +0200, Tristan Gingold wrote:
> On 09/04/15 22:09, Jakub Jelinek wrote:
> 
> > The c_default_pointer_mode is very ugly hack, but guess at least for
> > now it is ok for trunk.
> >
> >	Jakub
> 
> Could you suggest a better approach ?

Perhaps a target hook (maybe just a variable in the target hooks)?

	Jakub
Bernhard Reutner-Fischer April 10, 2015, 7:56 a.m. UTC | #6
On 10 April 2015 at 08:28, Jakub Jelinek <jakub@redhat.com> wrote:
> On Fri, Apr 10, 2015 at 07:42:23AM +0200, Tristan Gingold wrote:
>> On 09/04/15 22:09, Jakub Jelinek wrote:
>>
>> > The c_default_pointer_mode is very ugly hack, but guess at least for
>> > now it is ok for trunk.
>> >
>> >     Jakub
>>
>> Could you suggest a better approach ?
>
> Perhaps a target hook (maybe just a variable in the target hooks)?

I leave that to the maintainers to fix properly.

The workaround was now committed as r221968 to trunk to unbreak
the build of ia64-hp-vms in config-list.mk.

thanks,

Patch
diff mbox

diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c
index 456c619..7fe7fa6 100644
--- a/gcc/c-family/c-common.c
+++ b/gcc/c-family/c-common.c
@@ -67,6 +67,10 @@  along with GCC; see the file COPYING3.  If not see
 
 cpp_reader *parse_in;		/* Declared in c-pragma.h.  */
 
+/* Mode used to build pointers (VOIDmode means ptr_mode).  */
+
+machine_mode c_default_pointer_mode = VOIDmode;
+
 /* The following symbols are subsumed in the c_global_trees array, and
    listed here individually for documentation purposes.
 
diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h
index 5b2c5ab..cabf452 100644
--- a/gcc/c-family/c-common.h
+++ b/gcc/c-family/c-common.h
@@ -358,6 +358,10 @@  struct c_common_resword
   const unsigned int disable   : 16;
 };
 
+/* Mode used to build pointers (VOIDmode means ptr_mode).  */
+
+extern machine_mode c_default_pointer_mode;
+
 /* Extra cpp_ttype values for C++.  */
 
 /* A token type for template-ids.  If a template-id is processed while
diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c
index e1741f1..e28a294 100644
--- a/gcc/c/c-decl.c
+++ b/gcc/c/c-decl.c
@@ -168,10 +168,6 @@  static int warn_about_return_type;
 
 static bool undef_nested_function;
 
-/* Mode used to build pointers (VOIDmode means ptr_mode).  */
-
-machine_mode c_default_pointer_mode = VOIDmode;
-
 /* If non-zero, implicit "omp declare target" attribute is added into the
    attribute lists.  */
 int current_omp_declare_target_attribute;
diff --git a/gcc/c/c-tree.h b/gcc/c/c-tree.h
index c879bc7..7a72665 100644
--- a/gcc/c/c-tree.h
+++ b/gcc/c/c-tree.h
@@ -671,10 +671,6 @@  extern int current_function_returns_null;
 
 extern int current_function_returns_abnormally;
 
-/* Mode used to build pointers (VOIDmode means ptr_mode).  */
-
-extern machine_mode c_default_pointer_mode;
-
 /* In c-decl.c */
 
 /* Tell the binding oracle what kind of binding we are looking for.  */