On x86-64 linux, in stage 2, I get: c++ -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Wold-style-definition -Wmissing-format-attribute -fno-common -DHAVE_CONFIG_H -o f951 \ fortran/arith.o fortran/array.o fortran/bbt.o fortran/check.o fortran/data.o fortran/decl.o fortran/dump-parse-tree.o fortran/error.o fortran/expr.o fortran/interface.o fortran/intrinsic.o fortran/io.o fortran/iresolve.o fortran/match.o fortran/matchexp.o fortran/misc.o fortran/module.o fortran/openmp.o fortran/options.o fortran/parse.o fortran/primary.o fortran/resolve.o fortran/scanner.o fortran/simplify.o fortran/st.o fortran/symbol.o fortran/convert.o fortran/dependency.o fortran/f95-lang.o fortran/trans.o fortran/trans-array.o fortran/trans-common.o fortran/trans-const.o fortran/trans-decl.o fortran/trans-expr.o fortran/trans-intrinsic.o fortran/trans-io.o fortran/trans-openmp.o fortran/trans-stmt.o fortran/trans-types.o llvm-main.o tree-browser.o libbackend.a ../libcpp/libcpp.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMBitReader.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMipo.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMBitWriter.a /home/duncan/LLVM/llvm-objects/Debug/lib/LLVMX86.o /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMSelectionDAG.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMCodeGen.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMScalarOpts.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMTransformUtils.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMipa.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMAnalysis.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMTarget.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMCore.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMSupport.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMSystem.a attribs.o stub-objc.o stub-c.o -lmpfr -lgmp ../libcpp/libcpp.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a -L/home/duncan/LLVM/llvm-objects/Debug/lib -lpthread -ldl -lm libbackend.a(dwarf2out.o): In function `add_type_attribute': (.text+0x1ffb3): undefined reference to `invoke_impl_ptr_type' libbackend.a(llvm-backend.o): In function `createOptimizationPasses': /home/duncan/LLVM/gcc-4.2.llvm-objects/gcc/../../gcc-4.2.llvm/gcc/llvm-backend.cpp:384: undefined reference to `flag_no_builtin' Duncan.
> libbackend.a(dwarf2out.o): In function `add_type_attribute': > (.text+0x1ffb3): undefined reference to `invoke_impl_ptr_type' > libbackend.a(llvm-backend.o): In function `createOptimizationPasses': > /home/duncan/LLVM/gcc-4.2.llvm-objects/gcc/../../gcc-4.2.llvm/gcc/llvm-backend.cpp:384: undefined reference to `flag_no_builtin'Same problem when building Ada. Ciao, Duncan.
On Wednesday 30 July 2008 18:13:27 Duncan Sands wrote:> On x86-64 linux, in stage 2, I get: > > c++ -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Wold-style-definition -Wmissing-format-attribute -fno-common -DHAVE_CONFIG_H -o f951 \ > fortran/arith.o fortran/array.o fortran/bbt.o fortran/check.o fortran/data.o fortran/decl.o fortran/dump-parse-tree.o fortran/error.o fortran/expr.o fortran/interface.o fortran/intrinsic.o fortran/io.o fortran/iresolve.o fortran/match.o fortran/matchexp.o fortran/misc.o fortran/module.o fortran/openmp.o fortran/options.o fortran/parse.o fortran/primary.o fortran/resolve.o fortran/scanner.o fortran/simplify.o fortran/st.o fortran/symbol.o fortran/convert.o fortran/dependency.o fortran/f95-lang.o fortran/trans.o fortran/trans-array.o fortran/trans-common.o fortran/trans-const.o fortran/trans-decl.o fortran/trans-expr.o fortran/trans-intrinsic.o fortran/trans-io.o fortran/trans-openmp.o fortran/trans-stmt.o fortran/trans-types.o llvm-main.o tree-browser.o libbackend.a ../libcpp/libcpp.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMBitReader.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMipo.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMBitWriter.a /hom! > e/duncan/LLVM/llvm-objects/Debug/lib/LLVMX86.o /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMSelectionDAG.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMCodeGen.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMScalarOpts.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMTransformUtils.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMipa.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMAnalysis.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMTarget.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMCore.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMSupport.a /home/duncan/LLVM/llvm-objects/Debug/lib/libLLVMSystem.a attribs.o stub-objc.o stub-c.o -lmpfr -lgmp ../libcpp/libcpp.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a -L/home/duncan/LLVM/llvm-objects/Debug/lib -lpthread -ldl -lm > libbackend.a(dwarf2out.o): In function `add_type_attribute': > (.text+0x1ffb3): undefined reference to `invoke_impl_ptr_type' > libbackend.a(llvm-backend.o): In function `createOptimizationPasses': > /home/duncan/LLVM/gcc-4.2.llvm-objects/gcc/../../gcc-4.2.llvm/gcc/llvm-backend.cpp:384: undefined reference to `flag_no_builtin'This one (with Ada): libbackend.a(dwarf2out.o): In function `modified_type_die': gcc/../../gcc-4.2.llvm/gcc/dwarf2out.c:8617: undefined reference to `c_language' Seems to be due to placing C language specific stuff in a generic file. Take a look (dwarf2out.c): +/* APPLE LOCAL radar 5811943 - Fix type of pointers to Blocks */ +/* APPLE LOCAL Radar 5741731, typedefs used in '@try' blocks */ +#include "c-common.h" ^ Including a C language header!!! ... + /* APPLE LOCAL begin Radar 5741731, typedefs used in '@try' blocks */ + if (is_volatile_type + && c_dialect_objc () + && lookup_attribute ("objc_volatilized", TYPE_ATTRIBUTES (type))) + { + is_volatile_type = 0; + if (TYPE_NAME (type) && TREE_TYPE (TYPE_NAME (type))) + type = TREE_TYPE (TYPE_NAME (type)); + } + /* APPLE LOCAL end Radar 5741731, typedefs used in '@try' blocks */ ^ Using a C language method (c_dialect_objc)!!! How about something like this instead (I have no idea if this works): Index: gcc-4.2.llvm/gcc/dwarf2out.c ==================================================================--- gcc-4.2.llvm.orig/gcc/dwarf2out.c 2008-07-30 20:37:22.000000000 +0200 +++ gcc-4.2.llvm/gcc/dwarf2out.c 2008-07-30 20:38:20.000000000 +0200 @@ -69,9 +69,6 @@ #include "hashtab.h" #include "cgraph.h" #include "input.h" -/* APPLE LOCAL radar 5811943 - Fix type of pointers to Blocks */ -/* APPLE LOCAL Radar 5741731, typedefs used in '@try' blocks */ -#include "c-common.h" #ifdef DWARF2_DEBUGGING_INFO static void dwarf2out_source_line (unsigned int, const char *); @@ -4099,6 +4096,7 @@ static inline dw_die_ref get_AT_ref (dw_die_ref, enum dwarf_attribute); static bool is_c_family (void); static bool is_cxx (void); +static bool is_objc (void); static bool is_java (void); static bool is_fortran (void); static bool is_ada (void); @@ -5493,6 +5491,16 @@ return lang == DW_LANG_C_plus_plus || lang == DW_LANG_ObjC_plus_plus; } +/* Return TRUE if the language is objc. */ + +static inline bool +is_objc (void) +{ + unsigned int lang = get_AT_unsigned (comp_unit_die, DW_AT_language); + + return lang == DW_LANG_ObjC; +} + /* Return TRUE if the language is Fortran. */ static inline bool @@ -8615,7 +8623,7 @@ /* APPLE LOCAL begin Radar 5741731, typedefs used in '@try' blocks */ if (is_volatile_type - && c_dialect_objc () + && is_objc () && lookup_attribute ("objc_volatilized", TYPE_ATTRIBUTES (type))) { is_volatile_type = 0;
On Jul 30, 2008, at 11:39 AM, Duncan Sands wrote:> On Wednesday 30 July 2008 18:13:27 Duncan Sands wrote: >> On x86-64 linux, in stage 2, I get: >> >> c++ -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict- >> prototypes -Wmissing-prototypes -pedantic -Wno-long-long -Wno- >> variadic-macros -Wno-overlength-strings -Wold-style-definition - >> Wmissing-format-attribute -fno-common -DHAVE_CONFIG_H -o f951 \ >> fortran/arith.o fortran/array.o fortran/bbt.o >> fortran/check.o fortran/data.o fortran/decl.o fortran/dump-parse- >> tree.o fortran/error.o fortran/expr.o fortran/interface.o fortran/ >> intrinsic.o fortran/io.o fortran/iresolve.o fortran/match.o fortran/ >> matchexp.o fortran/misc.o fortran/module.o fortran/openmp.o fortran/ >> options.o fortran/parse.o fortran/primary.o fortran/resolve.o >> fortran/scanner.o fortran/simplify.o fortran/st.o fortran/symbol.o >> fortran/convert.o fortran/dependency.o fortran/f95-lang.o fortran/ >> trans.o fortran/trans-array.o fortran/trans-common.o fortran/trans- >> const.o fortran/trans-decl.o fortran/trans-expr.o fortran/trans- >> intrinsic.o fortran/trans-io.o fortran/trans-openmp.o fortran/trans- >> stmt.o fortran/trans-types.o llvm-main.o tree-browser.o >> libbackend.a ../libcpp/libcpp.a /home/duncan/LLVM/llvm-objects/ >> Debug/lib/libLLVMBitReader.a /home/duncan/LLVM/llvm-objects/Debug/ >> lib/libLLVMipo.a /home/duncan/LLVM/llvm-objects/Debug/lib/ >> libLLVMBitWriter.a /hom! >> e/duncan/LLVM/llvm-objects/Debug/lib/LLVMX86.o /home/duncan/LLVM/ >> llvm-objects/Debug/lib/libLLVMSelectionDAG.a /home/duncan/LLVM/llvm- >> objects/Debug/lib/libLLVMCodeGen.a /home/duncan/LLVM/llvm-objects/ >> Debug/lib/libLLVMScalarOpts.a /home/duncan/LLVM/llvm-objects/Debug/ >> lib/libLLVMTransformUtils.a /home/duncan/LLVM/llvm-objects/Debug/ >> lib/libLLVMipa.a /home/duncan/LLVM/llvm-objects/Debug/lib/ >> libLLVMAnalysis.a /home/duncan/LLVM/llvm-objects/Debug/lib/ >> libLLVMTarget.a /home/duncan/LLVM/llvm-objects/Debug/lib/ >> libLLVMCore.a /home/duncan/LLVM/llvm-objects/Debug/lib/ >> libLLVMSupport.a /home/duncan/LLVM/llvm-objects/Debug/lib/ >> libLLVMSystem.a attribs.o stub-objc.o stub-c.o -lmpfr -lgmp ../ >> libcpp/libcpp.a ../libiberty/libiberty.a ../libdecnumber/ >> libdecnumber.a -L/home/duncan/LLVM/llvm-objects/Debug/lib - >> lpthread -ldl -lm >> libbackend.a(dwarf2out.o): In function `add_type_attribute': >> (.text+0x1ffb3): undefined reference to `invoke_impl_ptr_type' >> libbackend.a(llvm-backend.o): In function `createOptimizationPasses': >> /home/duncan/LLVM/gcc-4.2.llvm-objects/gcc/../../gcc-4.2.llvm/gcc/ >> llvm-backend.cpp:384: undefined reference to `flag_no_builtin' > > This one (with Ada): > libbackend.a(dwarf2out.o): In function `modified_type_die': > gcc/../../gcc-4.2.llvm/gcc/dwarf2out.c:8617: undefined reference to > `c_language' > > ...> > How about something like this instead (I have no idea if this works): >Done. Thanks! -bw