2003-09-21 Andrew Pinski <pinskia@physics.uc.edu>
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 22 Sep 2003 07:18:09 +0000 (07:18 +0000)
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 22 Sep 2003 07:18:09 +0000 (07:18 +0000)
        PR target/12281
        * config/darwin.c (machopic_validate_stub_or_non_lazy_ptr): Call
        mark_referenced instead of setting TREE_SYMBOL_REFERENCED.

2003-09-21  Andrew Pinski  <pinskia@physics.uc.edu>

        PR target/12281
        * gcc.c-torture/compile/20030921-1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71648 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/darwin.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/20030921-1.c [new file with mode: 0644]

index b66b5e4..b67008f 100644 (file)
@@ -1,3 +1,9 @@
+2003-09-21  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR target/12281
+       * config/darwin.c (machopic_validate_stub_or_non_lazy_ptr): Call
+       mark_referenced instead of setting TREE_SYMBOL_REFERENCED.
+
 2003-09-22  Olivier Hainque  <hainque@act-europe.fr>
 
        PR target/9786
index faa9739..4e1c45c 100644 (file)
@@ -398,12 +398,12 @@ machopic_validate_stub_or_non_lazy_ptr (const char *name, int validate_stub)
             original symbol as being referenced.  */
           TREE_USED (temp) = 1;
          if (TREE_CODE (TREE_VALUE (temp)) == IDENTIFIER_NODE)
-           TREE_SYMBOL_REFERENCED (TREE_VALUE (temp)) = 1;
+           mark_referenced (TREE_VALUE (temp));
          real_name = IDENTIFIER_POINTER (TREE_VALUE (temp));
          real_name = darwin_strip_name_encoding (real_name);
          id2 = maybe_get_identifier (real_name);
          if (id2)
-           TREE_SYMBOL_REFERENCED (id2) = 1;
+           mark_referenced (id2);
        }
 }
 
index 5c9c984..a061186 100644 (file)
@@ -1,3 +1,8 @@
+2003-09-21  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR target/12281
+       * gcc.c-torture/compile/20030921-1.c: New test.
+
 2003-09-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
 
        * g++.dg/opt/reg-stack2.C: New test.
diff --git a/gcc/testsuite/gcc.c-torture/compile/20030921-1.c b/gcc/testsuite/gcc.c-torture/compile/20030921-1.c
new file mode 100644 (file)
index 0000000..8199dc6
--- /dev/null
@@ -0,0 +1,10 @@
+/* PR 12281  The darwin back-end was causing the function 
+   f is not being emitted. TREE_SYMBOL_REFERENCED was being set
+   instead of calling mark_referenced.  */
+
+
+static void f(void);
+void g(void (*x) (void)){x();}
+static inline void f(void){}
+void h(){g(f);}
+int main(){h();return 0;}