diff options
author | Geoffrey Keating <geoffk@apple.com> | 2004-10-30 02:48:49 +0000 |
---|---|---|
committer | Geoffrey Keating <geoffk@gcc.gnu.org> | 2004-10-30 02:48:49 +0000 |
commit | 965a7e9092ffbec64865a95b016f731782d4b965 (patch) | |
tree | 6ee8ec5a78d0a562957eb1e05126f0ed0dbebf70 /gcc | |
parent | d2607dde2173bca67f29425a1a9a152167896a87 (diff) | |
download | gcc-965a7e9092ffbec64865a95b016f731782d4b965.zip gcc-965a7e9092ffbec64865a95b016f731782d4b965.tar.gz gcc-965a7e9092ffbec64865a95b016f731782d4b965.tar.bz2 |
darwin.h (ASM_SPEC): Simplify.
* config/i386/darwin.h (ASM_SPEC): Simplify.
(SUBTARGET_EXTRA_SPECS): Add darwin_subarch spec.
* config/rs6000/darwin.h (DARWIN_SUBARCH_SPEC): New.
(SUBTARGET_EXTRA_SPECS): Add darwin_subarch spec.
* config/darwin.h (LINK_COMMAND_SPEC): Don't pass -arch here.
(LINK_SPEC): Do pass -arch here. Handle -force_cpusubtype_ALL
in all cases. Pass the right -arch or -arch_only based on -mcpu.
(ASM_SPEC): Handle -force_cpusubtype_ALL.
* doc/invoke.texi (Darwin Options): Improve documentation for
Darwin linker (and libtool) switches.
From-SVN: r89877
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/config/darwin.h | 11 | ||||
-rw-r--r-- | gcc/config/i386/darwin.h | 13 | ||||
-rw-r--r-- | gcc/config/rs6000/darwin.h | 22 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 33 | ||||
-rw-r--r-- | gcc/tree-ssa-operands.c | 2 |
6 files changed, 68 insertions, 24 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6ac0249..2dd6438 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -43,6 +43,17 @@ 2004-10-29 Geoffrey Keating <geoffk@apple.com> + * config/i386/darwin.h (ASM_SPEC): Simplify. + (SUBTARGET_EXTRA_SPECS): Add darwin_subarch spec. + * config/rs6000/darwin.h (DARWIN_SUBARCH_SPEC): New. + (SUBTARGET_EXTRA_SPECS): Add darwin_subarch spec. + * config/darwin.h (LINK_COMMAND_SPEC): Don't pass -arch here. + (LINK_SPEC): Do pass -arch here. Handle -force_cpusubtype_ALL + in all cases. Pass the right -arch or -arch_only based on -mcpu. + (ASM_SPEC): Handle -force_cpusubtype_ALL. + * doc/invoke.texi (Darwin Options): Improve documentation for + Darwin linker (and libtool) switches. + * config/rs6000/darwin-fallback.c: Include <mach/thread_status.h>. 2004-10-29 Stan Shebs <shebs@apple.com> diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index 098caa2..83aa2dd 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -219,8 +219,6 @@ extern const char *darwin_fix_and_continue_switch; #define LINK_COMMAND_SPEC "\ %{!fdump=*:%{!fsyntax-only:%{!precomp:%{!c:%{!M:%{!MM:%{!E:%{!S:\ %{!Zdynamiclib:%(linker)}%{Zdynamiclib:/usr/bin/libtool} \ - %{!Zdynamiclib:-arch %(darwin_arch)} \ - %{Zdynamiclib:-arch_only %(darwin_arch)} \ %l %X %{d} %{s} %{t} %{Z} \ %{!Zdynamiclib:%{A} %{e*} %{m} %{N} %{n} %{r} %{u*} %{x} %{z}} \ %{@:-o %f%u.out}%{!@:%{o*}%{!o:-o a.out}} \ @@ -240,13 +238,14 @@ extern const char *darwin_fix_and_continue_switch; "%{static}%{!static:-dynamic} \ %{fgnu-runtime:%:replace-outfile(-lobjc -lobjc-gnu)}\ %{!Zdynamiclib: \ + %{Zforce_cpusubtype_ALL:-arch %(darwin_arch) -force_cpusubtype_ALL} \ + %{!Zforce_cpusubtype_ALL:-arch %(darwin_subarch)} \ %{Zbundle:-bundle} \ %{Zbundle_loader*:-bundle_loader %*} \ %{client_name*} \ %{compatibility_version*:%e-compatibility_version only allowed with -dynamiclib\ } \ %{current_version*:%e-current_version only allowed with -dynamiclib} \ - %{Zforce_cpusubtype_ALL:-force_cpusubtype_ALL} \ %{Zforce_flat_namespace:-force_flat_namespace} \ %{Zinstall_name*:%e-install_name only allowed with -dynamiclib} \ %{keep_private_externs} \ @@ -258,7 +257,8 @@ extern const char *darwin_fix_and_continue_switch; %{client_name*:%e-client_name not allowed with -dynamiclib} \ %{compatibility_version*} \ %{current_version*} \ - %{Zforce_cpusubtype_ALL:%e-force_cpusubtype_ALL not allowed with -dynamiclib} \ + %{Zforce_cpusubtype_ALL:-arch_only %(darwin_arch)} \ + %{!Zforce_cpusubtype_ALL: -arch_only %(darwin_subarch)} \ %{Zforce_flat_namespace:%e-force_flat_namespace not allowed with -dynamiclib} \ %{Zinstall_name*:-install_name %*} \ %{keep_private_externs:%e-keep_private_externs not allowed with -dynamiclib} \ @@ -332,7 +332,8 @@ extern const char *darwin_fix_and_continue_switch; /* #define ENDFILE_SPEC "" */ /* Default Darwin ASM_SPEC, very simple. */ -#define ASM_SPEC "-arch %(darwin_arch)" +#define ASM_SPEC "-arch %(darwin_arch) \ + %{Zforce_cpusubtype_ALL:-force_cpusubtype_ALL}" /* We use Dbx symbol format. */ diff --git a/gcc/config/i386/darwin.h b/gcc/config/i386/darwin.h index c7b583d..d36b511 100644 --- a/gcc/config/i386/darwin.h +++ b/gcc/config/i386/darwin.h @@ -45,16 +45,13 @@ Boston, MA 02111-1307, USA. */ %{g: %{!gfull: -feliminate-unused-debug-symbols %<gfull }}" #undef ASM_SPEC -#define ASM_SPEC "-arch i686 \ - -force_cpusubtype_ALL \ - %{Zforce_cpusubtype_ALL:-force_cpusubtype_ALL} \ - %{!Zforce_cpusubtype_ALL:%{mmmx:-force_cpusubtype_ALL}\ - %{msse:-force_cpusubtype_ALL}\ - %{msse2:-force_cpusubtype_ALL}}" +#define ASM_SPEC "-arch i686 -force_cpusubtype_ALL" #undef SUBTARGET_EXTRA_SPECS -#define SUBTARGET_EXTRA_SPECS \ - { "darwin_arch", "i686" }, +#define SUBTARGET_EXTRA_SPECS \ + { "darwin_arch", "i686" }, \ + { "darwin_subarch", "%{march=pentium3:pentIIm3;:i686}" }, + /* Use the following macro for any Darwin/x86-specific command-line option translation. */ diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h index ea4ef1a..50c7bd3 100644 --- a/gcc/config/rs6000/darwin.h +++ b/gcc/config/rs6000/darwin.h @@ -132,9 +132,29 @@ do { \ %{static: %{Zdynamic: %e conflicting code gen style switches are used}}\ %{!static:%{!mdynamic-no-pic:-fPIC}}" +#define DARWIN_SUBARCH_SPEC " \ + %{m64: ppc64} \ + %{!m64: \ + %{mcpu=601:ppc601; \ + mcpu=603:ppc603; \ + mcpu=603e:ppc603; \ + mcpu=604:ppc604; \ + mcpu=604e:ppc604e; \ + mcpu=740:ppc750; \ + mcpu=750:ppc750; \ + mcpu=G3:ppc750; \ + mcpu=7400:ppc7400; \ + mcpu=G4:ppc7400; \ + mcpu=7450:ppc7450; \ + mcpu=970:ppc970; \ + mcpu=power4:ppc970; \ + mcpu=G5:ppc970; \ + :ppc}}" + #undef SUBTARGET_EXTRA_SPECS #define SUBTARGET_EXTRA_SPECS \ - { "darwin_arch", "%{m64:ppc64} %{!m64:ppc}" }, + { "darwin_arch", "%{m64:ppc64;:ppc}" }, \ + { "darwin_subarch", DARWIN_SUBARCH_SPEC }, /* Output a .machine directive. */ #undef TARGET_ASM_FILE_START diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index c1d48ed..a43fd7f 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -7185,7 +7185,17 @@ Like @option{-sim}, but pass linker options to locate initialized data at @cindex Darwin options These options are defined for all architectures running the Darwin operating -system. They are useful for compatibility with other Mac OS compilers. +system. + +FSF GCC on Darwin does not create ``fat'' object files; it will create +an object file for the single architecture that it was built to +target. Apple's GCC on Darwin does create ``fat'' files if multiple +@option{-arch} options are used. + +The subtype of the file created (@var{ppc7400} or @var{ppc970} or +@var{i686}) is determined by the flag that specifies the ISA +that GCC is targetting, @option{-mcpu} or @option{-march}. The +@option{-force_cpusubtype_ALL} option can be used to override this. @table @gcctabopt @item -F@var{dir} @@ -7272,12 +7282,20 @@ See man ld(1) for more information. @item -bundle_loader @var{executable} @opindex bundle_loader -This specifies the @var{executable} that will be loading the build +This option specifies the @var{executable} that will be loading the build output file being linked. See man ld(1) for more information. -@item -allowable_client @var{client_name} -@itemx -arch_only +@item -dynamiclib +@opindex -dynamiclib +When passed this option, GCC will produce a dynamic library instead of +an executable when linking, using the Darwin @file{libtool} command. +@item -force_cpusubtype_ALL +@opindex -force_cpusubtype_ALL +This causes GCC's output file to have the @var{ALL} subtype, instead of +one controlled by the @option{-mcpu} or @option{-march} option. + +@item -allowable_client @var{client_name} @itemx -client_name @itemx -compatibility_version @itemx -current_version @@ -7286,11 +7304,9 @@ output file being linked. See man ld(1) for more information. @itemx -dylib_file @itemx -dylinker_install_name @itemx -dynamic -@itemx -dynamiclib @itemx -exported_symbols_list @itemx -filelist @itemx -flat_namespace -@itemx -force_cpusubtype_ALL @itemx -force_flat_namespace @itemx -headerpad_max_install_names @itemx -image_base @@ -7339,7 +7355,6 @@ output file being linked. See man ld(1) for more information. @itemx -whatsloaded @opindex allowable_client -@opindex arch_only @opindex client_name @opindex compatibility_version @opindex current_version @@ -7348,11 +7363,9 @@ output file being linked. See man ld(1) for more information. @opindex dylib_file @opindex dylinker_install_name @opindex dynamic -@opindex dynamiclib @opindex exported_symbols_list @opindex filelist @opindex flat_namespace -@opindex force_cpusubtype_ALL @opindex force_flat_namespace @opindex headerpad_max_install_names @opindex image_base @@ -7400,7 +7413,7 @@ output file being linked. See man ld(1) for more information. @opindex weak_reference_mismatches @opindex whatsloaded -These options are available for Darwin linker. Darwin linker man page +These options are passed to the Darwin linker. The Darwin linker man page describes them in detail. @end table diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c index 68acd7c..78e2a43 100644 --- a/gcc/tree-ssa-operands.c +++ b/gcc/tree-ssa-operands.c @@ -1623,6 +1623,8 @@ add_call_read_ops (tree stmt) { bitmap_iterator bi; + bi.ptr2 = NULL; + /* Otherwise, if the function is not pure, it may reference memory. Add a VUSE for .GLOBAL_VAR if it has been created. Otherwise, add a VUSE for each call-clobbered variable. See add_referenced_var for the |