diff options
author | Andrew Pinski <pinskia@gmail.com> | 2007-01-20 22:51:07 -0800 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2007-01-20 22:51:07 -0800 |
commit | d2f9f9a62d25b0d4f358952430664c76a86967e9 (patch) | |
tree | 082440aebef934d380dad11831fe7fc3c40506e4 | |
parent | 78681dbdee7e724104d79eca9fc0e2eaeaf8eae2 (diff) | |
download | gcc-d2f9f9a62d25b0d4f358952430664c76a86967e9.zip gcc-d2f9f9a62d25b0d4f358952430664c76a86967e9.tar.gz gcc-d2f9f9a62d25b0d4f358952430664c76a86967e9.tar.bz2 |
re PR objc/30479 (Precompiled headers don't seem to work with GNU ObjC)
2007-01-20 Andrew Pinski <pinskia@gmail.com>
PR objc/30479
* objc-act.c (hash_interface): Use IDENTIFIER_HASH_VALUE instead
of htab_hash_pointer.
(lookup_interface): Likewise.
(add_class): Likewise.
2007-01-20 Andrew Pinski <pinskia@gmail.com>
PR objc/30479
* objc.dg/pch: New directory.
* objc.dg/pch/pch.exp: New file.
* objc.dg/pch/interface-1.m: New test.
* objc.dg/pch/interface-1.hs: New include file.
* lib/objc.exp (objc_target_compile): Add
"-x objective-c-header" in front of the sources if this is
a precompiled header being compiled.
From-SVN: r121024
-rw-r--r-- | gcc/objc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/objc/objc-act.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/testsuite/lib/objc.exp | 5 | ||||
-rw-r--r-- | gcc/testsuite/objc.dg/pch/interface-1.hs | 4 | ||||
-rw-r--r-- | gcc/testsuite/objc.dg/pch/interface-1.m | 14 | ||||
-rw-r--r-- | gcc/testsuite/objc.dg/pch/pch.exp | 43 |
7 files changed, 88 insertions, 3 deletions
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index 0759c8d..f3aeb9b 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -1,3 +1,11 @@ +2007-01-20 Andrew Pinski <pinskia@gmail.com> + + PR objc/30479 + * objc-act.c (hash_interface): Use IDENTIFIER_HASH_VALUE instead + of htab_hash_pointer. + (lookup_interface): Likewise. + (add_class): Likewise. + 2007-01-02 Douglas Gregor <doug.gregor@gmail.com> * objc-act.c (objc_build_volatilized_type): Keep track of diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index bd79796..86bfd37 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -3298,7 +3298,7 @@ static hashval_t hash_interface (const void *p) { const struct interface_tuple *d = p; - return htab_hash_pointer (d->id); + return IDENTIFIER_HASH_VALUE (d->id); } static int @@ -3327,7 +3327,7 @@ lookup_interface (tree ident) { slot = (struct interface_tuple **) htab_find_slot_with_hash (interface_htab, ident, - htab_hash_pointer (ident), + IDENTIFIER_HASH_VALUE (ident), NO_INSERT); if (slot && *slot) i = (*slot)->class_name; @@ -6997,7 +6997,7 @@ add_class (tree class_name, tree name) interface_htab = htab_create_ggc (31, hash_interface, eq_interface, NULL); slot = (struct interface_tuple **) htab_find_slot_with_hash (interface_htab, name, - htab_hash_pointer (name), + IDENTIFIER_HASH_VALUE (name), INSERT); if (!*slot) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 07d2e5f..320c902 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,14 @@ +2007-01-20 Andrew Pinski <pinskia@gmail.com> + + PR objc/30479 + * objc.dg/pch: New directory. + * objc.dg/pch/pch.exp: New file. + * objc.dg/pch/interface-1.m: New test. + * objc.dg/pch/interface-1.hs: New include file. + * lib/objc.exp (objc_target_compile): Add + "-x objective-c-header" in front of the sources if this is + a precompiled header being compiled. + 2007-01-20 Roger Sayle <roger@eyesopen.com> * gfortran.dg/array_memcpy_3.f90: New test case. diff --git a/gcc/testsuite/lib/objc.exp b/gcc/testsuite/lib/objc.exp index 18cdfea..0336d3b 100644 --- a/gcc/testsuite/lib/objc.exp +++ b/gcc/testsuite/lib/objc.exp @@ -187,6 +187,11 @@ proc objc_target_compile { source dest type options } { lappend options "additional_flags=${objc_link_flags}" append ld_library_path ":${libobjc_dir}" } + if { $type == "precompiled_header" } { + # If we generating a precompiled header, we have say this is an + # objective-C header + set source [concat "-x objective-c-header" $source] + } lappend options "compiler=$OBJC_UNDER_TEST" set_ld_library_path_env_vars diff --git a/gcc/testsuite/objc.dg/pch/interface-1.hs b/gcc/testsuite/objc.dg/pch/interface-1.hs new file mode 100644 index 0000000..fe5255a --- /dev/null +++ b/gcc/testsuite/objc.dg/pch/interface-1.hs @@ -0,0 +1,4 @@ +@interface TestClass ++ (int) test; +@end + diff --git a/gcc/testsuite/objc.dg/pch/interface-1.m b/gcc/testsuite/objc.dg/pch/interface-1.m new file mode 100644 index 0000000..9bc7ef3 --- /dev/null +++ b/gcc/testsuite/objc.dg/pch/interface-1.m @@ -0,0 +1,14 @@ +#include "interface-1.h" + +@implementation TestClass ++ (int) test +{ + return 0; +} +@end + +int main (void) +{ + return [TestClass test]; +} + diff --git a/gcc/testsuite/objc.dg/pch/pch.exp b/gcc/testsuite/objc.dg/pch/pch.exp new file mode 100644 index 0000000..ad5697b --- /dev/null +++ b/gcc/testsuite/objc.dg/pch/pch.exp @@ -0,0 +1,43 @@ +# Copyright (C) 1997, 2002, 2003 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# GCC testsuite for precompiled header interaction, +# that uses the `dg.exp' driver. + +# Load support procs. +load_lib objc-dg.exp +load_lib dg-pch.exp + +# Initialize `dg'. +dg-init + +set old_dg_do_what_default "${dg-do-what-default}" + +# Main loop. +foreach test [lsort [glob -nocomplain $srcdir/$subdir/*.m]] { + global torture_without_loops + + # We don't try to use the loop-optimizing options, since they are highly + # unlikely to make any difference to PCH. However, we do want to + # add -O0 -g, since users who want PCH usually want debugging and quick + # compiles. + dg-pch $subdir $test [concat [list {-O0 -g}] $torture_without_loops] ".h" +} + +set dg-do-what-default "$old_dg_do_what_default" + +# All done. +dg-finish |