From sabre at nondot.org Mon Jan 14 00:41:29 2008 From: sabre at nondot.org (Chris Lattner) Date: Mon, 14 Jan 2008 06:41:29 -0000 Subject: [llvm-commits] [llvm] r45955 - /llvm/trunk/lib/Target/X86/X86FloatingPoint.cpp Message-ID: <200801140641.m0E6fTE5011704@zion.cs.uiuc.edu> Author: lattner Date: Mon Jan 14 00:41:29 2008 New Revision: 45955 URL: http://llvm.org/viewvc/llvm-project?rev=45955&view=rev Log: Improve the FP stackifier to decide all on its own whether an instruction kills a register or not. This is cheap and easy to do now that instructions record this on their flags, and this eliminates the second pass of LiveVariables from the x86 backend. This speeds up a release llc by ~2.5%. Modified: llvm/trunk/lib/Target/X86/X86FloatingPoint.cpp Modified: llvm/trunk/lib/Target/X86/X86FloatingPoint.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86FloatingPoint.cpp?rev=45955&r1=45954&r2=45955&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86FloatingPoint.cpp (original) +++ llvm/trunk/lib/Target/X86/X86FloatingPoint.cpp Mon Jan 14 00:41:29 2008 @@ -34,7 +34,6 @@ #include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/MachineInstrBuilder.h" #include "llvm/CodeGen/MachineRegisterInfo.h" -#include "llvm/CodeGen/LiveVariables.h" #include "llvm/CodeGen/Passes.h" #include "llvm/Target/TargetInstrInfo.h" #include "llvm/Target/TargetMachine.h" @@ -60,13 +59,8 @@ virtual const char *getPassName() const { return "X86 FP Stackifier"; } - virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); - MachineFunctionPass::getAnalysisUsage(AU); - } private: const TargetInstrInfo *TII; // Machine instruction info. - LiveVariables *LV; // Live variable info for current function... MachineBasicBlock *MBB; // Current basic block unsigned Stack[8]; // FP Registers in each stack slot... unsigned RegMap[8]; // Track which stack slot contains each register @@ -160,6 +154,28 @@ FunctionPass *llvm::createX86FloatingPointStackifierPass() { return new FPS(); } +/// KillsRegister - Return true if the specified instruction kills (is the last +/// use of) the specified register. Note that this routine does not check for +/// kills of subregisters. +static bool KillsRegister(MachineInstr *MI, unsigned Reg) { + for (unsigned i = 0, e = MI->getNumOperands(); i != e; ++i) { + MachineOperand &MO = MI->getOperand(i); + if (MO.isRegister() && MO.isKill() && MO.getReg() == Reg) + return true; + } + return false; +} + +/// getFPReg - Return the X86::FPx register number for the specified operand. +/// For example, this returns 3 for X86::FP3. +static unsigned getFPReg(const MachineOperand &MO) { + assert(MO.isRegister() && "Expected an FP register!"); + unsigned Reg = MO.getReg(); + assert(Reg >= X86::FP0 && Reg <= X86::FP6 && "Expected FP register!"); + return Reg - X86::FP0; +} + + /// runOnMachineFunction - Loop over all of the basic blocks, transforming FP /// register references into FP stack references. /// @@ -179,7 +195,6 @@ if (!FPIsUsed) return false; TII = MF.getTarget().getInstrInfo(); - LV = &getAnalysis(); StackTop = 0; // Process the function in depth first order so that we process at least one @@ -567,14 +582,6 @@ } -static unsigned getFPReg(const MachineOperand &MO) { - assert(MO.isRegister() && "Expected an FP register!"); - unsigned Reg = MO.getReg(); - assert(Reg >= X86::FP0 && Reg <= X86::FP6 && "Expected FP register!"); - return Reg - X86::FP0; -} - - //===----------------------------------------------------------------------===// // Instruction transformation implementation //===----------------------------------------------------------------------===// @@ -603,7 +610,7 @@ // Is this the last use of the source register? unsigned Reg = getFPReg(MI->getOperand(NumOps-1)); - bool KillsSrc = LV->KillsRegister(MI, X86::FP0+Reg); + bool KillsSrc = KillsRegister(MI, X86::FP0+Reg); // FISTP64m is strange because there isn't a non-popping versions. // If we have one _and_ we don't want to pop the operand, duplicate the value @@ -662,7 +669,7 @@ // Is this the last use of the source register? unsigned Reg = getFPReg(MI->getOperand(1)); - bool KillsSrc = LV->KillsRegister(MI, X86::FP0+Reg); + bool KillsSrc = KillsRegister(MI, X86::FP0+Reg); if (KillsSrc) { // If this is the last use of the source register, just make sure it's on @@ -771,8 +778,8 @@ unsigned Dest = getFPReg(MI->getOperand(0)); unsigned Op0 = getFPReg(MI->getOperand(NumOperands-2)); unsigned Op1 = getFPReg(MI->getOperand(NumOperands-1)); - bool KillsOp0 = LV->KillsRegister(MI, X86::FP0+Op0); - bool KillsOp1 = LV->KillsRegister(MI, X86::FP0+Op1); + bool KillsOp0 = KillsRegister(MI, X86::FP0+Op0); + bool KillsOp1 = KillsRegister(MI, X86::FP0+Op1); unsigned TOS = getStackEntry(0); @@ -868,8 +875,8 @@ assert(NumOperands == 2 && "Illegal FUCOM* instruction!"); unsigned Op0 = getFPReg(MI->getOperand(NumOperands-2)); unsigned Op1 = getFPReg(MI->getOperand(NumOperands-1)); - bool KillsOp0 = LV->KillsRegister(MI, X86::FP0+Op0); - bool KillsOp1 = LV->KillsRegister(MI, X86::FP0+Op1); + bool KillsOp0 = KillsRegister(MI, X86::FP0+Op0); + bool KillsOp1 = KillsRegister(MI, X86::FP0+Op1); // Make sure the first operand is on the top of stack, the other one can be // anywhere. @@ -894,7 +901,7 @@ unsigned Op0 = getFPReg(MI->getOperand(0)); unsigned Op1 = getFPReg(MI->getOperand(2)); - bool KillsOp1 = LV->KillsRegister(MI, X86::FP0+Op1); + bool KillsOp1 = KillsRegister(MI, X86::FP0+Op1); // The first operand *must* be on the top of the stack. moveToTop(Op0, I); @@ -946,7 +953,7 @@ unsigned SrcReg = getFPReg(MI->getOperand(1)); unsigned DestReg = getFPReg(MI->getOperand(0)); - if (LV->KillsRegister(MI, X86::FP0+SrcReg)) { + if (KillsRegister(MI, X86::FP0+SrcReg)) { // If the input operand is killed, we can just change the owner of the // incoming stack slot into the result. unsigned Slot = getSlot(SrcReg); From baldrick at free.fr Mon Jan 14 00:53:47 2008 From: baldrick at free.fr (Duncan Sands) Date: Mon, 14 Jan 2008 06:53:47 -0000 Subject: [llvm-commits] [llvm] r45956 - /llvm/trunk/test/Verifier/byval-1.ll Message-ID: <200801140653.m0E6rl69012176@zion.cs.uiuc.edu> Author: baldrick Date: Mon Jan 14 00:53:45 2008 New Revision: 45956 URL: http://llvm.org/viewvc/llvm-project?rev=45956&view=rev Log: We now allow byval on fairly general pointer types. Modified: llvm/trunk/test/Verifier/byval-1.ll Modified: llvm/trunk/test/Verifier/byval-1.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Verifier/byval-1.ll?rev=45956&r1=45955&r2=45956&view=diff ============================================================================== --- llvm/trunk/test/Verifier/byval-1.ll (original) +++ llvm/trunk/test/Verifier/byval-1.ll Mon Jan 14 00:53:45 2008 @@ -1,2 +1,2 @@ ; RUN: not llvm-as < %s -o /dev/null -f -declare void @h(i32* byval %num) +declare void @h(i32 byval %num) From evan.cheng at apple.com Mon Jan 14 02:30:37 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Mon, 14 Jan 2008 08:30:37 -0000 Subject: [llvm-commits] [test-suite] r45958 - /test-suite/trunk/Makefile.programs Message-ID: <200801140830.m0E8UbCf015293@zion.cs.uiuc.edu> Author: evancheng Date: Mon Jan 14 02:30:36 2008 New Revision: 45958 URL: http://llvm.org/viewvc/llvm-project?rev=45958&view=rev Log: No need to pass CFLAGS to compile llc created assembly files. Modified: test-suite/trunk/Makefile.programs Modified: test-suite/trunk/Makefile.programs URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.programs?rev=45958&r1=45957&r2=45958&view=diff ============================================================================== --- test-suite/trunk/Makefile.programs (original) +++ test-suite/trunk/Makefile.programs Mon Jan 14 02:30:36 2008 @@ -374,11 +374,11 @@ # $(PROGRAMS_TO_TEST:%=Output/%.llc): \ Output/%.llc: Output/%.llc.s - -$(LLVMGCCLD) $(CFLAGS) $< -o $@ $(LLCLIBS) $(LLCASSEMBLERFLAGS) $(TARGET_FLAGS) $(LDFLAGS) + -$(LLVMGCCLD) $< -o $@ $(LLCLIBS) $(LLCASSEMBLERFLAGS) $(TARGET_FLAGS) $(LDFLAGS) $(PROGRAMS_TO_TEST:%=Output/%.llc-beta): \ Output/%.llc-beta: Output/%.llc-beta.s - -$(LLVMGCCLD) $(CFLAGS) $< -o $@ $(LLCLIBS) $(LLCASSEMBLERFLAGS) $(TARGET_FLAGS) $(LDFLAGS) + -$(LLVMGCCLD) $< -o $@ $(LLCLIBS) $(LLCASSEMBLERFLAGS) $(TARGET_FLAGS) $(LDFLAGS) # From alain at frisch.fr Mon Jan 14 02:56:10 2008 From: alain at frisch.fr (Alain Frisch) Date: Mon, 14 Jan 2008 09:56:10 +0100 Subject: [llvm-commits] Patch for compiling with Mingw/Cygwin In-Reply-To: <47824F79.6040700@frisch.fr> References: <47824F79.6040700@frisch.fr> Message-ID: <478B23AA.1020703@frisch.fr> Hello, Sorry for not replying before. I was not subscribed to llvm-commits and did not see your email. > A couple of comments: You really need to add some comments in > Makefile.config.in over the stuff that sets SYSPATH to indicate what > it is used for, and probably over the TableGen = ... line in > Makefile.rules. If you don't do this, someone may break this in the > future. Ok, done. > Another thing: does it work to add something like this to > makefile.rules? > > ifeq ($(OS),Cygwin) > USE_CYGPATH := true # Actually, it would be better to do the > syspath stuff here and remove USE_CYGPATH > endif cygpath should only be used when compiling for Mingw under Cygwin (ie, the gcc -mno-cygwin). I've done that instead: ifneq (,$(findstring -mno-cygwin, $(CXX))) SYSPATH = $(shell echo $(1) | cygpath -m -f -) else SYSPATH = $(1) endif The new patch is attached. -- Alain -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: diff Url: http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20080114/6e6aebd5/attachment.pl From duncan.sands at math.u-psud.fr Mon Jan 14 06:15:37 2008 From: duncan.sands at math.u-psud.fr (Duncan Sands) Date: Mon, 14 Jan 2008 13:15:37 +0100 Subject: [llvm-commits] =?iso-8859-1?q?=5Bllvm-gcc-4=2E2=5D_r45907_-_in=09?= =?iso-8859-1?q?/llvm-gcc-4=2E2/trunk/gcc=3A_llvm-abi=2Eh_llvm-convert=2Ec?= =?iso-8859-1?q?pp_llvm-types=2Ecpp?= In-Reply-To: <200801140515.59704.duncan.sands@math.u-psud.fr> References: <200801120922.m0C9MiwB020154@zion.cs.uiuc.edu> <200801140515.59704.duncan.sands@math.u-psud.fr> Message-ID: <200801141315.39199.duncan.sands@math.u-psud.fr> On Monday 14 January 2008 05:15:58 Duncan Sands wrote: > > Thanks. I see you have fixed the crash in SelectionDAGISel.cpp? > > Yes, and this fixes the Ada build. Even better, there were no new failures in the ACATS testsuite. Ciao, Duncan. From baldrick at free.fr Mon Jan 14 08:55:18 2008 From: baldrick at free.fr (Duncan Sands) Date: Mon, 14 Jan 2008 14:55:18 -0000 Subject: [llvm-commits] [llvm] r45959 - /llvm/trunk/test/Verifier/byval-2.ll Message-ID: <200801141455.m0EEtKjb007768@zion.cs.uiuc.edu> Author: baldrick Date: Mon Jan 14 08:55:05 2008 New Revision: 45959 URL: http://llvm.org/viewvc/llvm-project?rev=45959&view=rev Log: Test that byval cannot be used with pointers to types with no size. Modified: llvm/trunk/test/Verifier/byval-2.ll Modified: llvm/trunk/test/Verifier/byval-2.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Verifier/byval-2.ll?rev=45959&r1=45958&r2=45959&view=diff ============================================================================== --- llvm/trunk/test/Verifier/byval-2.ll (original) +++ llvm/trunk/test/Verifier/byval-2.ll Mon Jan 14 08:55:05 2008 @@ -1,2 +1,3 @@ ; RUN: not llvm-as < %s -o /dev/null -f -declare void @h(i32* %num) byval + %s = type opaque +declare void @h(%s* byval %num) From baldrick at free.fr Mon Jan 14 08:57:31 2008 From: baldrick at free.fr (Duncan Sands) Date: Mon, 14 Jan 2008 14:57:31 -0000 Subject: [llvm-commits] [llvm] r45960 - /llvm/trunk/test/Verifier/byval-3.ll Message-ID: <200801141457.m0EEvWHH007964@zion.cs.uiuc.edu> Author: baldrick Date: Mon Jan 14 08:57:30 2008 New Revision: 45960 URL: http://llvm.org/viewvc/llvm-project?rev=45960&view=rev Log: This test is now the same as byval-1.ll, so remove it. Removed: llvm/trunk/test/Verifier/byval-3.ll Removed: llvm/trunk/test/Verifier/byval-3.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Verifier/byval-3.ll?rev=45959&view=auto ============================================================================== --- llvm/trunk/test/Verifier/byval-3.ll (original) +++ llvm/trunk/test/Verifier/byval-3.ll (removed) @@ -1,2 +0,0 @@ -; RUN: not llvm-as < %s -o /dev/null -f -declare void @h(i32 byval %num) From baldrick at free.fr Mon Jan 14 11:41:17 2008 From: baldrick at free.fr (Duncan Sands) Date: Mon, 14 Jan 2008 17:41:17 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r45963 - in /llvm-gcc-4.2/trunk/libstdc++-v3/config/cpu: i486/atomicity.h powerpc/atomic_word.h Message-ID: <200801141741.m0EHfHob017404@zion.cs.uiuc.edu> Author: baldrick Date: Mon Jan 14 11:41:16 2008 New Revision: 45963 URL: http://llvm.org/viewvc/llvm-project?rev=45963&view=rev Log: LLVM supports the i486 asm expression, and hopefully it supports the ppc one too. So remove this evil workaround. Modified: llvm-gcc-4.2/trunk/libstdc++-v3/config/cpu/i486/atomicity.h llvm-gcc-4.2/trunk/libstdc++-v3/config/cpu/powerpc/atomic_word.h Modified: llvm-gcc-4.2/trunk/libstdc++-v3/config/cpu/i486/atomicity.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libstdc%2B%2B-v3/config/cpu/i486/atomicity.h?rev=45963&r1=45962&r2=45963&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/libstdc++-v3/config/cpu/i486/atomicity.h (original) +++ llvm-gcc-4.2/trunk/libstdc++-v3/config/cpu/i486/atomicity.h Mon Jan 14 11:41:16 2008 @@ -35,35 +35,19 @@ __attribute__ ((__unused__)) __exchange_and_add(volatile _Atomic_word* __mem, int __val) { -// LLVM LOCAL -#ifndef __llvm__ register _Atomic_word __result; __asm__ __volatile__ ("lock; xadd{l} {%0,%1|%1,%0}" : "=r" (__result), "=m" (*__mem) : "0" (__val), "m" (*__mem)); return __result; - // LLVM LOCAL begin -#else - // FIXME: implement inline asm. - _Atomic_word __result = *__mem; - *__mem += __val; - return __result; -#endif - // LLVM LOCAL end } void __attribute__ ((__unused__)) __atomic_add(volatile _Atomic_word* __mem, int __val) { -// LLVM LOCAL -#ifndef __llvm__ __asm__ __volatile__ ("lock; add{l} {%1,%0|%0,%1}" : "=m" (*__mem) : "ir" (__val), "m" (*__mem)); -#else - // FIXME: implement inline asm. - *__mem += __val; -#endif } _GLIBCXX_END_NAMESPACE Modified: llvm-gcc-4.2/trunk/libstdc++-v3/config/cpu/powerpc/atomic_word.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libstdc%2B%2B-v3/config/cpu/powerpc/atomic_word.h?rev=45963&r1=45962&r2=45963&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/libstdc++-v3/config/cpu/powerpc/atomic_word.h (original) +++ llvm-gcc-4.2/trunk/libstdc++-v3/config/cpu/powerpc/atomic_word.h Mon Jan 14 11:41:16 2008 @@ -31,14 +31,12 @@ #define _GLIBCXX_ATOMIC_WORD_H 1 typedef int _Atomic_word; -/* LLVM LOCAL begin */ -#ifndef __llvm__ /* FIXME: implement inline asm */ + #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("isync":::"memory") #ifdef __NO_LWSYNC__ #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("sync":::"memory") #else #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("lwsync":::"memory") #endif -#endif -/* LLVM LOCAL end */ + #endif From evan.cheng at apple.com Mon Jan 14 11:58:05 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Mon, 14 Jan 2008 17:58:05 -0000 Subject: [llvm-commits] [llvm] r45964 - /llvm/trunk/utils/NewNightlyTest.pl Message-ID: <200801141758.m0EHw5Om018424@zion.cs.uiuc.edu> Author: evancheng Date: Mon Jan 14 11:58:03 2008 New Revision: 45964 URL: http://llvm.org/viewvc/llvm-project?rev=45964&view=rev Log: Need a space to separate Make options. Modified: llvm/trunk/utils/NewNightlyTest.pl Modified: llvm/trunk/utils/NewNightlyTest.pl URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/NewNightlyTest.pl?rev=45964&r1=45963&r2=45964&view=diff ============================================================================== --- llvm/trunk/utils/NewNightlyTest.pl (original) +++ llvm/trunk/utils/NewNightlyTest.pl Mon Jan 14 11:58:03 2008 @@ -154,7 +154,7 @@ $CONFIGUREARGS .= " --disable-jit"; next; } if (/^-disable-cbe$/) { $PROGTESTOPTS .= " DISABLE_CBE=1"; next; } if (/^-disable-lto$/) { $PROGTESTOPTS .= " DISABLE_LTO=1"; next; } - if (/^-test-opts$/) { $PROGTESTOPTS .= "$ARGV[0]"; shift; next; } + if (/^-test-opts$/) { $PROGTESTOPTS .= " $ARGV[0]"; shift; next; } if (/^-verbose$/) { $VERBOSE = 1; next; } if (/^-debug$/) { $DEBUG = 1; next; } if (/^-nice$/) { $NICE = "nice "; next; } From dpatel at apple.com Mon Jan 14 12:36:31 2008 From: dpatel at apple.com (Devang Patel) Date: Mon, 14 Jan 2008 18:36:31 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r45968 - /llvm-gcc-4.2/trunk/build_gcc Message-ID: <200801141836.m0EIaVkD021047@zion.cs.uiuc.edu> Author: dpatel Date: Mon Jan 14 12:36:30 2008 New Revision: 45968 URL: http://llvm.org/viewvc/llvm-project?rev=45968&view=rev Log: Fix unnecessarily deep symlink. Modified: llvm-gcc-4.2/trunk/build_gcc Modified: llvm-gcc-4.2/trunk/build_gcc URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/build_gcc?rev=45968&r1=45967&r2=45968&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/build_gcc (original) +++ llvm-gcc-4.2/trunk/build_gcc Mon Jan 14 12:36:30 2008 @@ -522,8 +522,8 @@ # Set up the llvm-gcc/llvm-g++ symlinks. mkdir -p $DEST_DIR$LLVM_BIN_DIR cd $DEST_DIR$LLVM_BIN_DIR -ln -s -f ../../../$DEST_ROOT/bin/llvm-gcc-$MAJ_VERS llvm-gcc-$MAJ_VERS || exit 1 -ln -s -f ../../../$DEST_ROOT/bin/llvm-g++-$MAJ_VERS llvm-g++-$MAJ_VERS || exit 1 +ln -s -f ../llvm-gcc-$MAJ_VERS/bin/llvm-gcc-$MAJ_VERS llvm-gcc-$MAJ_VERS || exit 1 +ln -s -f ../llvm-gcc-$MAJ_VERS/bin/llvm-g++-$MAJ_VERS llvm-g++-$MAJ_VERS || exit 1 # FIXME: This is a hack to get things working. for h in $HOSTS ; do From sabre at nondot.org Mon Jan 14 12:45:28 2008 From: sabre at nondot.org (Chris Lattner) Date: Mon, 14 Jan 2008 18:45:28 -0000 Subject: [llvm-commits] [llvm] r45971 - /llvm/trunk/lib/CodeGen/LiveInterval.cpp Message-ID: <200801141845.m0EIjTHY021752@zion.cs.uiuc.edu> Author: lattner Date: Mon Jan 14 12:45:28 2008 New Revision: 45971 URL: http://llvm.org/viewvc/llvm-project?rev=45971&view=rev Log: remove dead #include Modified: llvm/trunk/lib/CodeGen/LiveInterval.cpp Modified: llvm/trunk/lib/CodeGen/LiveInterval.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveInterval.cpp?rev=45971&r1=45970&r2=45971&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/LiveInterval.cpp (original) +++ llvm/trunk/lib/CodeGen/LiveInterval.cpp Mon Jan 14 12:45:28 2008 @@ -24,7 +24,6 @@ #include "llvm/Support/Streams.h" #include "llvm/Target/MRegisterInfo.h" #include -#include #include using namespace llvm; From sabre at nondot.org Mon Jan 14 13:00:07 2008 From: sabre at nondot.org (Chris Lattner) Date: Mon, 14 Jan 2008 19:00:07 -0000 Subject: [llvm-commits] [llvm] r45972 - in /llvm/trunk/lib/CodeGen: LLVMTargetMachine.cpp PostRASchedulerList.cpp Message-ID: <200801141900.m0EJ072Z022570@zion.cs.uiuc.edu> Author: lattner Date: Mon Jan 14 13:00:06 2008 New Revision: 45972 URL: http://llvm.org/viewvc/llvm-project?rev=45972&view=rev Log: don't create the post-ra scheduler unless it is enabled. Modified: llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp llvm/trunk/lib/CodeGen/PostRASchedulerList.cpp Modified: llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp?rev=45972&r1=45971&r2=45972&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp (original) +++ llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp Mon Jan 14 13:00:06 2008 @@ -41,6 +41,12 @@ cl::init(false), cl::Hidden, cl::desc("Perform loop-invariant code motion on machine code")); +// When this works it will be on by default. +static cl::opt +DisablePostRAScheduler("disable-post-RA-scheduler", + cl::desc("Disable scheduling after register allocation"), + cl::init(true)); + FileModel::Model LLVMTargetMachine::addPassesToEmitFile(FunctionPassManager &PM, std::ostream &Out, @@ -103,7 +109,7 @@ PM.add(createPrologEpilogCodeInserter()); // Second pass scheduler. - if (!Fast) + if (!Fast && !DisablePostRAScheduler) PM.add(createPostRAScheduler()); // Branch folding must be run after regalloc and prolog/epilog insertion. Modified: llvm/trunk/lib/CodeGen/PostRASchedulerList.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PostRASchedulerList.cpp?rev=45972&r1=45971&r2=45972&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/PostRASchedulerList.cpp (original) +++ llvm/trunk/lib/CodeGen/PostRASchedulerList.cpp Mon Jan 14 13:00:06 2008 @@ -21,23 +21,11 @@ #define DEBUG_TYPE "post-RA-sched" #include "llvm/CodeGen/Passes.h" #include "llvm/CodeGen/MachineFunctionPass.h" +#include "llvm/Support/Compiler.h" #include "llvm/Support/Debug.h" -//#include "llvm/ADT/Statistic.h" -//#include -//#include -#include "llvm/Support/CommandLine.h" using namespace llvm; namespace { - bool NoPostRAScheduling; - - // When this works it will be on by default. - cl::opt - DisablePostRAScheduler("disable-post-RA-scheduler", - cl::desc("Disable scheduling after register allocation"), - cl::location(NoPostRAScheduling), - cl::init(true)); - class VISIBILITY_HIDDEN SchedulePostRATDList : public MachineFunctionPass { public: static char ID; @@ -56,9 +44,6 @@ } bool SchedulePostRATDList::runOnMachineFunction(MachineFunction &Fn) { - if (NoPostRAScheduling) - return true; - DOUT << "SchedulePostRATDList\n"; MF = &Fn; TM = &MF->getTarget(); From baldrick at free.fr Mon Jan 14 13:52:09 2008 From: baldrick at free.fr (Duncan Sands) Date: Mon, 14 Jan 2008 19:52:09 -0000 Subject: [llvm-commits] [llvm] r45973 - in /llvm/trunk: include/llvm/ParameterAttributes.h lib/Transforms/Scalar/InstructionCombining.cpp lib/VMCore/ParameterAttributes.cpp test/Transforms/InstCombine/2008-01-14-DoubleNest.ll test/Transforms/InstCombine/2008-01-14-VarArgTrampoline.ll Message-ID: <200801141952.m0EJq9LA026272@zion.cs.uiuc.edu> Author: baldrick Date: Mon Jan 14 13:52:09 2008 New Revision: 45973 URL: http://llvm.org/viewvc/llvm-project?rev=45973&view=rev Log: I noticed that the trampoline straightening transformation could drop attributes on varargs call arguments. Also, it could generate invalid IR if the transformed call already had the 'nest' attribute somewhere (this can never happen for code coming from llvm-gcc, but it's a theoretical possibility). Fix both problems. Added: llvm/trunk/test/Transforms/InstCombine/2008-01-14-DoubleNest.ll llvm/trunk/test/Transforms/InstCombine/2008-01-14-VarArgTrampoline.ll Modified: llvm/trunk/include/llvm/ParameterAttributes.h llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp llvm/trunk/lib/VMCore/ParameterAttributes.cpp Modified: llvm/trunk/include/llvm/ParameterAttributes.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ParameterAttributes.h?rev=45973&r1=45972&r2=45973&view=diff ============================================================================== --- llvm/trunk/include/llvm/ParameterAttributes.h (original) +++ llvm/trunk/include/llvm/ParameterAttributes.h Mon Jan 14 13:52:09 2008 @@ -53,7 +53,7 @@ const uint16_t ReturnOnly = NoReturn | NoUnwind | ReadNone | ReadOnly; /// @brief Parameter attributes that do not apply to vararg call arguments. -const uint16_t VarArgsIncompatible = Nest | StructRet; +const uint16_t VarArgsIncompatible = StructRet; /// @brief Attributes that are mutually incompatible. const uint16_t MutuallyIncompatible[3] = { @@ -171,6 +171,12 @@ return getParamAttrs(i) & attr; } + /// This returns whether the given attribute is set for at least one + /// parameter or for the return value. + /// @returns true if the parameter attribute is set somewhere + /// @brief Determine if a ParameterAttributes is set somewhere + bool hasAttrSomewhere(ParameterAttributes attr) const; + /// The set of ParameterAttributes set in Attributes is converted to a /// string of equivalent mnemonics. This is, presumably, for writing out /// the mnemonics for the assembly writer. Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp?rev=45973&r1=45972&r2=45973&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Mon Jan 14 13:52:09 2008 @@ -8385,6 +8385,12 @@ Value *Callee = CS.getCalledValue(); const PointerType *PTy = cast(Callee->getType()); const FunctionType *FTy = cast(PTy->getElementType()); + const ParamAttrsList *Attrs = CS.getParamAttrs(); + + // If the call already has the 'nest' attribute somewhere then give up - + // otherwise 'nest' would occur twice after splicing in the chain. + if (Attrs && Attrs->hasAttrSomewhere(ParamAttr::Nest)) + return 0; IntrinsicInst *Tramp = cast(cast(Callee)->getOperand(0)); @@ -8414,25 +8420,39 @@ std::vector NewArgs; NewArgs.reserve(unsigned(CS.arg_end()-CS.arg_begin())+1); + ParamAttrsVector NewAttrs; + NewAttrs.reserve(Attrs ? Attrs->size() + 1 : 1); + // Insert the nest argument into the call argument list, which may - // mean appending it. + // mean appending it. Likewise for attributes. + + // Add any function result attributes. + uint16_t Attr = Attrs ? Attrs->getParamAttrs(0) : 0; + if (Attr) + NewAttrs.push_back (ParamAttrsWithIndex::get(0, Attr)); + { unsigned Idx = 1; CallSite::arg_iterator I = CS.arg_begin(), E = CS.arg_end(); do { if (Idx == NestIdx) { - // Add the chain argument. + // Add the chain argument and attributes. Value *NestVal = Tramp->getOperand(3); if (NestVal->getType() != NestTy) NestVal = new BitCastInst(NestVal, NestTy, "nest", Caller); NewArgs.push_back(NestVal); + NewAttrs.push_back(ParamAttrsWithIndex::get(NestIdx, NestAttr)); } if (I == E) break; - // Add the original argument. + // Add the original argument and attributes. NewArgs.push_back(*I); + Attr = Attrs ? Attrs->getParamAttrs(Idx) : 0; + if (Attr) + NewAttrs.push_back + (ParamAttrsWithIndex::get(Idx + (Idx >= NestIdx), Attr)); ++Idx, ++I; } while (1); @@ -8440,41 +8460,28 @@ // The trampoline may have been bitcast to a bogus type (FTy). // Handle this by synthesizing a new function type, equal to FTy - // with the chain parameter inserted. Likewise for attributes. + // with the chain parameter inserted. - const ParamAttrsList *Attrs = CS.getParamAttrs(); std::vector NewTypes; - ParamAttrsVector NewAttrs; NewTypes.reserve(FTy->getNumParams()+1); - // Add any function result attributes. - uint16_t Attr = Attrs ? Attrs->getParamAttrs(0) : 0; - if (Attr) - NewAttrs.push_back (ParamAttrsWithIndex::get(0, Attr)); - // Insert the chain's type into the list of parameter types, which may - // mean appending it. Likewise for the chain's attributes. + // mean appending it. { unsigned Idx = 1; FunctionType::param_iterator I = FTy->param_begin(), E = FTy->param_end(); do { - if (Idx == NestIdx) { - // Add the chain's type and attributes. + if (Idx == NestIdx) + // Add the chain's type. NewTypes.push_back(NestTy); - NewAttrs.push_back(ParamAttrsWithIndex::get(NestIdx, NestAttr)); - } if (I == E) break; - // Add the original type and attributes. + // Add the original type. NewTypes.push_back(*I); - Attr = Attrs ? Attrs->getParamAttrs(Idx) : 0; - if (Attr) - NewAttrs.push_back - (ParamAttrsWithIndex::get(Idx + (Idx >= NestIdx), Attr)); ++Idx, ++I; } while (1); Modified: llvm/trunk/lib/VMCore/ParameterAttributes.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/ParameterAttributes.cpp?rev=45973&r1=45972&r2=45973&view=diff ============================================================================== --- llvm/trunk/lib/VMCore/ParameterAttributes.cpp (original) +++ llvm/trunk/lib/VMCore/ParameterAttributes.cpp Mon Jan 14 13:52:09 2008 @@ -36,6 +36,13 @@ return ParamAttr::None; } +bool ParamAttrsList::hasAttrSomewhere(ParameterAttributes attr) const { + for (unsigned i = 0, e = attrs.size(); i < e; ++i) + if (attrs[i].attrs & attr) + return true; + return false; +} + std::string ParamAttrsList::getParamAttrsText(uint16_t Attrs) { std::string Result; Added: llvm/trunk/test/Transforms/InstCombine/2008-01-14-DoubleNest.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/2008-01-14-DoubleNest.ll?rev=45973&view=auto ============================================================================== --- llvm/trunk/test/Transforms/InstCombine/2008-01-14-DoubleNest.ll (added) +++ llvm/trunk/test/Transforms/InstCombine/2008-01-14-DoubleNest.ll Mon Jan 14 13:52:09 2008 @@ -0,0 +1,24 @@ +; RUN: llvm-as < %s | opt -instcombine -disable-output + + %struct.FRAME.nest = type { i32, i32 (i32*)* } + %struct.__builtin_trampoline = type { [10 x i8] } + +declare i8* @llvm.init.trampoline(i8*, i8*, i8*) nounwind + +declare i32 @f(%struct.FRAME.nest* nest , i32*) + +define i32 @nest(i32 %n) { +entry: + %FRAME.0 = alloca %struct.FRAME.nest, align 8 ; <%struct.FRAME.nest*> [#uses=3] + %TRAMP.216 = alloca [10 x i8], align 16 ; <[10 x i8]*> [#uses=1] + %TRAMP.216.sub = getelementptr [10 x i8]* %TRAMP.216, i32 0, i32 0 ; [#uses=1] + %tmp3 = getelementptr %struct.FRAME.nest* %FRAME.0, i32 0, i32 0 ; [#uses=1] + store i32 %n, i32* %tmp3, align 8 + %FRAME.06 = bitcast %struct.FRAME.nest* %FRAME.0 to i8* ; [#uses=1] + %tramp = call i8* @llvm.init.trampoline( i8* %TRAMP.216.sub, i8* bitcast (i32 (%struct.FRAME.nest*, i32*)* @f to i8*), i8* %FRAME.06 ) ; [#uses=1] + %tmp7 = getelementptr %struct.FRAME.nest* %FRAME.0, i32 0, i32 1 ; [#uses=1] + %tmp89 = bitcast i8* %tramp to i32 (i32*)* ; [#uses=2] + store i32 (i32*)* %tmp89, i32 (i32*)** %tmp7, align 8 + %tmp2.i = call i32 %tmp89( i32* nest null ) ; [#uses=1] + ret i32 %tmp2.i +} Added: llvm/trunk/test/Transforms/InstCombine/2008-01-14-VarArgTrampoline.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/2008-01-14-VarArgTrampoline.ll?rev=45973&view=auto ============================================================================== --- llvm/trunk/test/Transforms/InstCombine/2008-01-14-VarArgTrampoline.ll (added) +++ llvm/trunk/test/Transforms/InstCombine/2008-01-14-VarArgTrampoline.ll Mon Jan 14 13:52:09 2008 @@ -0,0 +1,24 @@ +; RUN: llvm-as < %s | opt -instcombine | llvm-dis | grep zeroext + + %struct.FRAME.nest = type { i32, i32 (...)* } + %struct.__builtin_trampoline = type { [10 x i8] } + +declare i8* @llvm.init.trampoline(i8*, i8*, i8*) nounwind + +declare i32 @f(%struct.FRAME.nest* nest , ...) + +define i32 @nest(i32 %n) { +entry: + %FRAME.0 = alloca %struct.FRAME.nest, align 8 ; <%struct.FRAME.nest*> [#uses=3] + %TRAMP.216 = alloca [10 x i8], align 16 ; <[10 x i8]*> [#uses=1] + %TRAMP.216.sub = getelementptr [10 x i8]* %TRAMP.216, i32 0, i32 0 ; [#uses=1] + %tmp3 = getelementptr %struct.FRAME.nest* %FRAME.0, i32 0, i32 0 ; [#uses=1] + store i32 %n, i32* %tmp3, align 8 + %FRAME.06 = bitcast %struct.FRAME.nest* %FRAME.0 to i8* ; [#uses=1] + %tramp = call i8* @llvm.init.trampoline( i8* %TRAMP.216.sub, i8* bitcast (i32 (%struct.FRAME.nest*, ...)* @f to i8*), i8* %FRAME.06 ) ; [#uses=1] + %tmp7 = getelementptr %struct.FRAME.nest* %FRAME.0, i32 0, i32 1 ; [#uses=1] + %tmp89 = bitcast i8* %tramp to i32 (...)* ; [#uses=2] + store i32 (...)* %tmp89, i32 (...)** %tmp7, align 8 + %tmp2.i = call i32 (...)* %tmp89( i32 zeroext 0 ) ; [#uses=1] + ret i32 %tmp2.i +} From baldrick at free.fr Mon Jan 14 13:57:00 2008 From: baldrick at free.fr (Duncan Sands) Date: Mon, 14 Jan 2008 19:57:00 -0000 Subject: [llvm-commits] [llvm] r45974 - /llvm/trunk/lib/VMCore/Instructions.cpp Message-ID: <200801141957.m0EJv0R0026532@zion.cs.uiuc.edu> Author: baldrick Date: Mon Jan 14 13:57:00 2008 New Revision: 45974 URL: http://llvm.org/viewvc/llvm-project?rev=45974&view=rev Log: Simplify CallInst::hasByValArgument using a new method. Modified: llvm/trunk/lib/VMCore/Instructions.cpp Modified: llvm/trunk/lib/VMCore/Instructions.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Instructions.cpp?rev=45974&r1=45973&r2=45974&view=diff ============================================================================== --- llvm/trunk/lib/VMCore/Instructions.cpp (original) +++ llvm/trunk/lib/VMCore/Instructions.cpp Mon Jan 14 13:57:00 2008 @@ -406,10 +406,7 @@ /// @brief Determine if any call argument is an aggregate passed by value. bool CallInst::hasByValArgument() const { - for (unsigned i = 1, e = getNumOperands(); i != e; ++i) - if (paramHasAttr(i, ParamAttr::ByVal)) - return true; - return false; + return ParamAttrs && ParamAttrs->hasAttrSomewhere(ParamAttr::ByVal); } void CallInst::setDoesNotThrow(bool doesNotThrow) { From clattner at apple.com Mon Jan 14 14:59:37 2008 From: clattner at apple.com (Chris Lattner) Date: Mon, 14 Jan 2008 12:59:37 -0800 Subject: [llvm-commits] Patch for compiling with Mingw/Cygwin In-Reply-To: <478B23AA.1020703@frisch.fr> References: <47824F79.6040700@frisch.fr> <478B23AA.1020703@frisch.fr> Message-ID: On Jan 14, 2008, at 12:56 AM, Alain Frisch wrote: > Hello, > > Sorry for not replying before. I was not subscribed to llvm-commits > and did not see your email. > >> A couple of comments: You really need to add some comments in >> Makefile.config.in over the stuff that sets SYSPATH to indicate >> what it is used for, and probably over the TableGen = ... line in >> Makefile.rules. If you don't do this, someone may break this in >> the future. > > Ok, done. > >> Another thing: does it work to add something like this to >> makefile.rules? >> ifeq ($(OS),Cygwin) >> USE_CYGPATH := true # Actually, it would be better to do the >> syspath stuff here and remove USE_CYGPATH >> endif > > cygpath should only be used when compiling for Mingw under Cygwin > (ie, the gcc -mno-cygwin). I've done that instead: Okay, this looks really good. One final question before I commit: why does tblgen want a windows path instead of a unix path? Can that be fixed in tblgen? Doesn't this affect llvm-as and all other tools? -Chris From isanbard at gmail.com Mon Jan 14 16:18:45 2008 From: isanbard at gmail.com (Bill Wendling) Date: Mon, 14 Jan 2008 22:18:45 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r45978 - /llvm-gcc-4.2/trunk/gcc/objc/objc-act.c Message-ID: <200801142218.m0EMIkwD004182@zion.cs.uiuc.edu> Author: void Date: Mon Jan 14 16:18:42 2008 New Revision: 45978 URL: http://llvm.org/viewvc/llvm-project?rev=45978&view=rev Log: GCC emits .reference and .lazy_reference directives directly to the .s file. We rather create the reference as data and then point that to what we then hope is an external symbol. However, this symbol doesn't have to exist in some cases. And, even without the .reference and .lazy_reference directives, we shouldn't be emitting data refering to this symbol. It would still be nice to have the .{lazy_}reference directives, but this will suffice for the time being. Modified: llvm-gcc-4.2/trunk/gcc/objc/objc-act.c Modified: llvm-gcc-4.2/trunk/gcc/objc/objc-act.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/objc/objc-act.c?rev=45978&r1=45977&r2=45978&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/objc/objc-act.c (original) +++ llvm-gcc-4.2/trunk/gcc/objc/objc-act.c Mon Jan 14 16:18:42 2008 @@ -18255,19 +18255,15 @@ tree decl; tree exp; - /* LLVM LOCAL begin */ -#ifdef ENABLE_LLVM -#undef ASM_DECLARE_UNRESOLVED_REFERENCE -#endif - /* LLVM LOCAL end */ - sprintf (string, "%sobjc_class_name_%s", (flag_next_runtime ? "." : "__"), name); #ifdef ASM_DECLARE_UNRESOLVED_REFERENCE if (flag_next_runtime) { +#ifndef ENABLE_LLVM ASM_DECLARE_UNRESOLVED_REFERENCE (asm_out_file, string); +#endif return; } #endif From sabre at nondot.org Mon Jan 14 16:27:53 2008 From: sabre at nondot.org (Chris Lattner) Date: Mon, 14 Jan 2008 22:27:53 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r45979 - /llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp Message-ID: <200801142227.m0EMRrmr004709@zion.cs.uiuc.edu> Author: lattner Date: Mon Jan 14 16:27:52 2008 New Revision: 45979 URL: http://llvm.org/viewvc/llvm-project?rev=45979&view=rev Log: Fix test/C++Frontend/2007-03-27-FunctionVarRename.cpp with llvm-g++ 4.2, which is PR1869. This bug actually occurs in 4.0 as well, but 4.2 gets unlucky and processes things in a different order. Modified: llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp Modified: llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp?rev=45979&r1=45978&r2=45979&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp Mon Jan 14 16:27:52 2008 @@ -1102,7 +1102,26 @@ FnEntry->setVisibility(GlobalValue::ProtectedVisibility); } - assert(FnEntry->getName() == Name &&"Preexisting fn with the same name!"); + // If FnEntry got renamed, then there is already an object with this name + // in the symbol table. If this happens, the old one must be a forward + // decl, just replace it with a cast of the new one. + if (FnEntry->getName() != Name) { + GlobalVariable *G = TheModule->getGlobalVariable(Name, true); + assert(G && G->isDeclaration() && "A global turned into a function?"); + + // Replace any uses of "G" with uses of FnEntry. + Value *GInNewType = ConstantExpr::getBitCast(FnEntry, G->getType()); + G->replaceAllUsesWith(GInNewType); + + // Update the decl that points to G. + changeLLVMValue(G, GInNewType); + + // Now we can give GV the proper name. + FnEntry->takeName(G); + + // G is now dead, nuke it. + G->eraseFromParent(); + } } SET_DECL_LLVM(decl, FnEntry); } else { From evan.cheng at apple.com Mon Jan 14 16:33:19 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Mon, 14 Jan 2008 22:33:19 -0000 Subject: [llvm-commits] [test-suite] r45980 - in /test-suite/trunk: External/SPEC/CINT2000/252.eon/Makefile Makefile.programs Makefile.rules Makefile.tests MultiSource/Applications/spiff/Makefile MultiSource/Makefile.multisrc SingleSource/Makefile.singlesrc Message-ID: <200801142233.m0EMXKpj005031@zion.cs.uiuc.edu> Author: evancheng Date: Mon Jan 14 16:33:19 2008 New Revision: 45980 URL: http://llvm.org/viewvc/llvm-project?rev=45980&view=rev Log: More makefile changes to make it easier to override default optimization level. This also fixes errenous 252.eon CBE performance regression. Modified: test-suite/trunk/External/SPEC/CINT2000/252.eon/Makefile test-suite/trunk/Makefile.programs test-suite/trunk/Makefile.rules test-suite/trunk/Makefile.tests test-suite/trunk/MultiSource/Applications/spiff/Makefile test-suite/trunk/MultiSource/Makefile.multisrc test-suite/trunk/SingleSource/Makefile.singlesrc Modified: test-suite/trunk/External/SPEC/CINT2000/252.eon/Makefile URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/External/SPEC/CINT2000/252.eon/Makefile?rev=45980&r1=45979&r2=45980&view=diff ============================================================================== --- test-suite/trunk/External/SPEC/CINT2000/252.eon/Makefile (original) +++ test-suite/trunk/External/SPEC/CINT2000/252.eon/Makefile Mon Jan 14 16:33:19 2008 @@ -9,9 +9,6 @@ include $(LEVEL)/Makefile.config -# Yes, we know this is an old crufty C++ benchmark. Don't tell us about it GCC! -CFLAGS += -fno-exceptions -Wno-deprecated -Wno-non-template-friend - ifeq ($(ARCH),PowerPC) CPPFLAGS += -DFMAX_IS_DOUBLE endif @@ -64,6 +61,10 @@ mrSolidTexture.cc mrSphere.cc mrSurface.cc mrSurfaceTexture.cc \ mrXYRectangle.cc mrXZRectangle.cc mrYZRectangle.cc myrand.cc) include ../../Makefile.spec2000 + +# Yes, we know this is an old crufty C++ benchmark. Don't tell us about it GCC! +CXXFLAGS += -fno-exceptions -Wno-deprecated -Wno-non-template-friend + LDFLAGS = -lstdc++ -lm LIBS = -lstdc++ -lm Modified: test-suite/trunk/Makefile.programs URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.programs?rev=45980&r1=45979&r2=45980&view=diff ============================================================================== --- test-suite/trunk/Makefile.programs (original) +++ test-suite/trunk/Makefile.programs Mon Jan 14 16:33:19 2008 @@ -348,7 +348,7 @@ $(PROGRAMS_TO_TEST:%=Output/%.cbe): \ Output/%.cbe: Output/%.cbe.c - -$(CC) $< -o $@ $(LDFLAGS) $(CFLAGS) -fno-strict-aliasing -fno-inline $(TARGET_FLAGS) $(LIBS) + -$(CC) $< -o $@ $(LDFLAGS) $(CFLAGS) $(OPTFLAGS) -fno-strict-aliasing -fno-inline $(TARGET_FLAGS) $(LIBS) # # Compile a linked program to machine code with LLC. Modified: test-suite/trunk/Makefile.rules URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.rules?rev=45980&r1=45979&r2=45980&view=diff ============================================================================== --- test-suite/trunk/Makefile.rules (original) +++ test-suite/trunk/Makefile.rules Mon Jan 14 16:33:19 2008 @@ -322,8 +322,19 @@ CPPFLAGS += -D_GNU_SOURCE # Pull in limit macros from stdint.h, even in C++: CPPFLAGS += -D__STDC_LIMIT_MACROS +CPPFLAGS += -DNDEBUG + +# Default optimization level: +OPTFLAGS := -O3 + +# If LTO is on, compile each .c .cpp file with -O0 and optimize with +# opt and llvm-ld. +ifdef DISABLE_LTO +LOPTFLAGS := $(OPTFLAGS) +else +LOPTFLAGS := -O0 +endif -CompileOptimizeOpts := -O3 -DNDEBUG -finline-functions ifeq ($(OS),Darwin) ifndef TARGET_FLAGS @@ -358,18 +369,18 @@ # # Compile commands with libtool. # -Compile := $(LIBTOOL) --tag=CXX --mode=compile $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -CompileC := $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) +Compile := $(LIBTOOL) --tag=CXX --mode=compile $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $(OPTFLAGS) +CompileC := $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(OPTFLAGS) # Compile a cpp file, don't link... CompileG := $(Compile) -g -D_DEBUG -CompileO := $(Compile) $(CompileOptimizeOpts) -felide-constructors -fomit-frame-pointer -CompileP := $(Compile) $(CompileOptimizeOpts) -felide-constructors $(PROFILE) +CompileO := $(Compile) $(OPTFLAGS) -felide-constructors -fomit-frame-pointer +CompileP := $(Compile) $(OPTFLAGS) -felide-constructors $(PROFILE) # Compile a c file, don't link... CompileCG := $(CompileC) -g -D_DEBUG -CompileCO := $(CompileC) $(CompileOptimizeOpts) -fomit-frame-pointer -CompileCP := $(CompileC) $(CompileOptimizeOpts) $(PROFILE) +CompileCO := $(CompileC) $(OPTFLAGS) -fomit-frame-pointer +CompileCP := $(CompileC) $(OPTFLAGS) $(PROFILE) ########################################################################### # Link Time Options Modified: test-suite/trunk/Makefile.tests URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.tests?rev=45980&r1=45979&r2=45980&view=diff ============================================================================== --- test-suite/trunk/Makefile.tests (original) +++ test-suite/trunk/Makefile.tests Mon Jan 14 16:33:19 2008 @@ -34,23 +34,6 @@ .PRECIOUS: Output/%.llvm.bc .PRECIOUS: Output/%.llvm -ifndef CFLAGS -CFLAGS = -O3 -endif -ifndef CXXFLAGS -CXXFLAGS = -O3 -endif - -# If LTO is on, compile each .c .cpp file with -O0 and optimize with -# opt and llvm-ld. -ifndef DISABLE_LTO -LCCFLAGS := -O0 $(CPPFLAGS) -LCXXFLAGS := -O0 $(CPPFLAGS) -else -LCCFLAGS := $(CFLAGS) $(CPPFLAGS) -LCXXFLAGS := $(CXXFLAGS) $(CPPFLAGS) -endif - FAILURE = $(LLVM_SRC_ROOT)/test/Failure.sh LLCLIBS := $(LLCLIBS) -lm @@ -58,24 +41,24 @@ $(RM) -f a.out core $(RM) -rf Output/ -# Compile from X.c to Output/X.ll +# Compile from X.c to Output/X.bc Output/%.bc: %.c $(LCC1) Output/.dir $(INCLUDES) - -$(LLVMGCC) $(CPPFLAGS) $(LCCFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm + -$(LLVMGCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm -$(call UPGRADE_LL,$@) -# Compile from X.cpp to Output/X.ll +# Compile from X.cpp to Output/X.bc Output/%.bc: %.cpp $(LCC1XX) Output/.dir $(INCLUDES) - -$(LLVMGXX) $(CPPFLAGS) $(LCXXFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm + -$(LLVMGXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm -$(call UPGRADE_LL,$@) -# Compile from X.cc to Output/X.ll +# Compile from X.cc to Output/X.bc Output/%.bc: %.cc $(LCC1XX) Output/.dir $(INCLUDES) - -$(LLVMGXX) $(CPPFLAGS) $(LCXXFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm + -$(LLVMGXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm -$(call UPGRADE_LL,$@) -# Compile from X.C to Output/X.ll +# Compile from X.C to Output/X.bc Output/%.bc: %.C $(LCC1XX) Output/.dir $(INCLUDES) - -$(LLVMGXX) $(CPPFLAGS) $(LCXXFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm + -$(LLVMGXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm -$(call UPGRADE_LL,$@) # LLVM Assemble from X.ll to Output/X.bc. Because we are coming directly from Modified: test-suite/trunk/MultiSource/Applications/spiff/Makefile URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/spiff/Makefile?rev=45980&r1=45979&r2=45980&view=diff ============================================================================== --- test-suite/trunk/MultiSource/Applications/spiff/Makefile (original) +++ test-suite/trunk/MultiSource/Applications/spiff/Makefile Mon Jan 14 16:33:19 2008 @@ -1,7 +1,6 @@ LEVEL = ../../.. PROG = spiff CPPFLAGS = -CFLAGS = LDFLAGS = #RUN_OPTIONS = $(PROJ_SRC_DIR)/Sample.1 $(PROJ_SRC_DIR)/Sample.2 Modified: test-suite/trunk/MultiSource/Makefile.multisrc URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Makefile.multisrc?rev=45980&r1=45979&r2=45980&view=diff ============================================================================== --- test-suite/trunk/MultiSource/Makefile.multisrc (original) +++ test-suite/trunk/MultiSource/Makefile.multisrc Mon Jan 14 16:33:19 2008 @@ -28,16 +28,16 @@ .PRECIOUS: $(LObjects) $(NObjects) Output/%.o: %.c Output/.dir - -$(CC) $(CPPFLAGS) $(CFLAGS) $(TARGET_FLAGS) -c $< -o $@ + -$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ Output/%.o: %.C Output/.dir - -$(CC) $(CPPFLAGS) $(CXXFLAGS) $(TARGET_FLAGS) -c $< -o $@ + -$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(OPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ Output/%.o: %.cpp Output/.dir - -$(CC) $(CPPFLAGS) $(CXXFLAGS) $(TARGET_FLAGS) -c $< -o $@ + -$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(OPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ Output/%.o: %.cc Output/.dir - -$(CC) $(CPPFLAGS) $(CXXFLAGS) $(TARGET_FLAGS) -c $< -o $@ + -$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(OPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ bugpoint-opt: Output/$(PROG).bugpoint-opt bugpoint-gccas: Output/$(PROG).bugpoint-opt Modified: test-suite/trunk/SingleSource/Makefile.singlesrc URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Makefile.singlesrc?rev=45980&r1=45979&r2=45980&view=diff ============================================================================== --- test-suite/trunk/SingleSource/Makefile.singlesrc (original) +++ test-suite/trunk/SingleSource/Makefile.singlesrc Mon Jan 14 16:33:19 2008 @@ -34,10 +34,10 @@ # FIXME: LIBS should be specified, not hardcoded to -lm Output/%.native: $(SourceDir)/%.c Output/.dir - -$(CC) $(CPPFLAGS) $(CFLAGS) $(TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) + -$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTFLAGS) $(TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) Output/%.native: $(SourceDir)/%.cpp Output/.dir - -$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) + -$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(OPTFLAGS) $(TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) bugpoint-gccas bugpoint-opt bugpoint-llvm-ld bugpoint-gccld bugpoint-jit bugpoint-llc bugpoint-llc-beta: From sabre at nondot.org Mon Jan 14 16:34:07 2008 From: sabre at nondot.org (Chris Lattner) Date: Mon, 14 Jan 2008 22:34:07 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r45981 - /llvm-gcc-4.0/trunk/gcc/llvm-backend.cpp Message-ID: <200801142234.m0EMY7xs005075@zion.cs.uiuc.edu> Author: lattner Date: Mon Jan 14 16:34:07 2008 New Revision: 45981 URL: http://llvm.org/viewvc/llvm-project?rev=45981&view=rev Log: Support a global that turns into a function. This is the llvm-gcc 4.0 version of the 4.2 fix for PR1869 Modified: llvm-gcc-4.0/trunk/gcc/llvm-backend.cpp Modified: llvm-gcc-4.0/trunk/gcc/llvm-backend.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/llvm-backend.cpp?rev=45981&r1=45980&r2=45981&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/llvm-backend.cpp (original) +++ llvm-gcc-4.0/trunk/gcc/llvm-backend.cpp Mon Jan 14 16:34:07 2008 @@ -1032,7 +1032,26 @@ FnEntry->setVisibility(GlobalValue::ProtectedVisibility); } - assert(FnEntry->getName() == Name &&"Preexisting fn with the same name!"); + // If FnEntry got renamed, then there is already an object with this name + // in the symbol table. If this happens, the old one must be a forward + // decl, just replace it with a cast of the new one. + if (FnEntry->getName() != Name) { + GlobalVariable *G = TheModule->getGlobalVariable(Name, true); + assert(G && G->isDeclaration() && "A global turned into a function?"); + + // Replace any uses of "G" with uses of FnEntry. + Value *GInNewType = ConstantExpr::getBitCast(FnEntry, G->getType()); + G->replaceAllUsesWith(GInNewType); + + // Update the decl that points to G. + changeLLVMValue(G, GInNewType); + + // Now we can give GV the proper name. + FnEntry->takeName(G); + + // G is now dead, nuke it. + G->eraseFromParent(); + } } SET_DECL_LLVM(decl, FnEntry); } else { From clattner at apple.com Mon Jan 14 16:59:46 2008 From: clattner at apple.com (Chris Lattner) Date: Mon, 14 Jan 2008 14:59:46 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r45978 - /llvm-gcc-4.2/trunk/gcc/objc/objc-act.c In-Reply-To: <200801142218.m0EMIkwD004182@zion.cs.uiuc.edu> References: <200801142218.m0EMIkwD004182@zion.cs.uiuc.edu> Message-ID: On Jan 14, 2008, at 2:18 PM, Bill Wendling wrote: > URL: http://llvm.org/viewvc/llvm-project?rev=45978&view=rev > Log: > GCC emits .reference and .lazy_reference directives directly to > the .s file. We > rather create the reference as data and then point that to what we > then hope > is an external symbol. However, this symbol doesn't have to exist in > some cases. > And, even without the .reference and .lazy_reference directives, we > shouldn't > be emitting data refering to this symbol. More to the point, this improves compatibility with the leopard dynamic linker and xcode 3.0 linker. I'll apply this to llvm-gcc 4.0 Bill, but please add the LLVM LOCAL markers to the new #ifdefs, thanks! -Chris > > > Modified: > llvm-gcc-4.2/trunk/gcc/objc/objc-act.c > > Modified: llvm-gcc-4.2/trunk/gcc/objc/objc-act.c > URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/objc/objc-act.c?rev=45978&r1=45977&r2=45978&view=diff > > = > = > = > = > = > = > = > = > ====================================================================== > --- llvm-gcc-4.2/trunk/gcc/objc/objc-act.c (original) > +++ llvm-gcc-4.2/trunk/gcc/objc/objc-act.c Mon Jan 14 16:18:42 2008 > @@ -18255,19 +18255,15 @@ > tree decl; > tree exp; > > - /* LLVM LOCAL begin */ > -#ifdef ENABLE_LLVM > -#undef ASM_DECLARE_UNRESOLVED_REFERENCE > -#endif > - /* LLVM LOCAL end */ > - > sprintf (string, "%sobjc_class_name_%s", > (flag_next_runtime ? "." : "__"), name); > > #ifdef ASM_DECLARE_UNRESOLVED_REFERENCE > if (flag_next_runtime) > { > +#ifndef ENABLE_LLVM > ASM_DECLARE_UNRESOLVED_REFERENCE (asm_out_file, string); > +#endif > return; > } > #endif > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From sabre at nondot.org Mon Jan 14 17:00:14 2008 From: sabre at nondot.org (Chris Lattner) Date: Mon, 14 Jan 2008 23:00:14 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r45982 - /llvm-gcc-4.0/trunk/gcc/objc/objc-act.c Message-ID: <200801142300.m0EN0FAi007533@zion.cs.uiuc.edu> Author: lattner Date: Mon Jan 14 17:00:10 2008 New Revision: 45982 URL: http://llvm.org/viewvc/llvm-project?rev=45982&view=rev Log: improve compatibility with the leopard dyld and xcode 3 linker. Modified: llvm-gcc-4.0/trunk/gcc/objc/objc-act.c Modified: llvm-gcc-4.0/trunk/gcc/objc/objc-act.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/objc/objc-act.c?rev=45982&r1=45981&r2=45982&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/objc/objc-act.c (original) +++ llvm-gcc-4.0/trunk/gcc/objc/objc-act.c Mon Jan 14 17:00:10 2008 @@ -18358,12 +18358,6 @@ char *string = (char *) alloca (strlen (name) + 30); tree decl; tree exp; - - /* APPLE LOCAL begin LLVM */ -#ifdef ENABLE_LLVM -#undef ASM_DECLARE_UNRESOLVED_REFERENCE -#endif - /* APPLE LOCAL end LLVM */ sprintf (string, "%sobjc_class_name_%s", (flag_next_runtime ? "." : "__"), name); @@ -18371,7 +18365,11 @@ #ifdef ASM_DECLARE_UNRESOLVED_REFERENCE if (flag_next_runtime) { + /* APPLE LOCAL begin LLVM */ +#ifdef ENABLE_LLVM ASM_DECLARE_UNRESOLVED_REFERENCE (asm_out_file, string); +#endif + /* APPLE LOCAL end LLVM */ return; } #endif From sabre at nondot.org Mon Jan 14 17:12:32 2008 From: sabre at nondot.org (Chris Lattner) Date: Mon, 14 Jan 2008 23:12:32 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r45983 - /llvm-gcc-4.0/trunk/gcc/fold-const.c Message-ID: <200801142312.m0ENCWOi008440@zion.cs.uiuc.edu> Author: lattner Date: Mon Jan 14 17:12:30 2008 New Revision: 45983 URL: http://llvm.org/viewvc/llvm-project?rev=45983&view=rev Log: Fix PR1904, which involves merging the (GPL2) patch for PR28045 into llvm-gcc 4.0. llvm-gcc 4.2 already has this fix. Modified: llvm-gcc-4.0/trunk/gcc/fold-const.c Modified: llvm-gcc-4.0/trunk/gcc/fold-const.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/fold-const.c?rev=45983&r1=45982&r2=45983&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/fold-const.c (original) +++ llvm-gcc-4.0/trunk/gcc/fold-const.c Mon Jan 14 17:12:30 2008 @@ -2377,6 +2377,11 @@ if (TYPE_UNSIGNED (TREE_TYPE (arg0)) != TYPE_UNSIGNED (TREE_TYPE (arg1))) return 0; + /* If both types don't have the same precision, then it is not safe + to strip NOPs. */ + if (TYPE_PRECISION (TREE_TYPE (arg0)) != TYPE_PRECISION (TREE_TYPE (arg1))) + return 0; + STRIP_NOPS (arg0); STRIP_NOPS (arg1); From isanbard at gmail.com Mon Jan 14 17:20:32 2008 From: isanbard at gmail.com (Bill Wendling) Date: Mon, 14 Jan 2008 23:20:32 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r45985 - /llvm-gcc-4.2/trunk/gcc/objc/objc-act.c Message-ID: <200801142320.m0ENKWd8009135@zion.cs.uiuc.edu> Author: void Date: Mon Jan 14 17:20:29 2008 New Revision: 45985 URL: http://llvm.org/viewvc/llvm-project?rev=45985&view=rev Log: Forgot LLVM LOCAL tags. Modified: llvm-gcc-4.2/trunk/gcc/objc/objc-act.c Modified: llvm-gcc-4.2/trunk/gcc/objc/objc-act.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/objc/objc-act.c?rev=45985&r1=45984&r2=45985&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/objc/objc-act.c (original) +++ llvm-gcc-4.2/trunk/gcc/objc/objc-act.c Mon Jan 14 17:20:29 2008 @@ -18261,9 +18261,11 @@ #ifdef ASM_DECLARE_UNRESOLVED_REFERENCE if (flag_next_runtime) { + /* LLVM LOCAL begin - radar 5681912 */ #ifndef ENABLE_LLVM ASM_DECLARE_UNRESOLVED_REFERENCE (asm_out_file, string); #endif + /* LLVM LOCAL end - radar 5681912 */ return; } #endif From isanbard at gmail.com Mon Jan 14 17:20:48 2008 From: isanbard at gmail.com (Bill Wendling) Date: Mon, 14 Jan 2008 15:20:48 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r45978 - /llvm-gcc-4.2/trunk/gcc/objc/objc-act.c In-Reply-To: References: <200801142218.m0EMIkwD004182@zion.cs.uiuc.edu> Message-ID: <16e5fdf90801141520m26acc4dfnb4acc2631ec5e1b1@mail.gmail.com> On Jan 14, 2008 2:59 PM, Chris Lattner wrote: > On Jan 14, 2008, at 2:18 PM, Bill Wendling wrote: > > URL: http://llvm.org/viewvc/llvm-project?rev=45978&view=rev > > Log: > > GCC emits .reference and .lazy_reference directives directly to > > the .s file. We > > rather create the reference as data and then point that to what we > > then hope > > is an external symbol. However, this symbol doesn't have to exist in > > some cases. > > And, even without the .reference and .lazy_reference directives, we > > shouldn't > > be emitting data refering to this symbol. > > More to the point, this improves compatibility with the leopard > dynamic linker and xcode 3.0 linker. > > I'll apply this to llvm-gcc 4.0 Bill, but please add the LLVM LOCAL > markers to the new #ifdefs, thanks! > Oops! Done. -=bw From evan.cheng at apple.com Mon Jan 14 17:28:31 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Mon, 14 Jan 2008 23:28:31 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r45987 - in /llvm-gcc-4.0/trunk/gcc: config/i386/llvm-i386-target.h llvm-abi.h llvm-convert.cpp llvm-types.cpp Message-ID: <200801142328.m0ENSVMW009628@zion.cs.uiuc.edu> Author: evancheng Date: Mon Jan 14 17:28:30 2008 New Revision: 45987 URL: http://llvm.org/viewvc/llvm-project?rev=45987&view=rev Log: Merge -r45906:45908 llvm-gcc-4.2/trunk Modified: llvm-gcc-4.0/trunk/gcc/config/i386/llvm-i386-target.h llvm-gcc-4.0/trunk/gcc/llvm-abi.h llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp llvm-gcc-4.0/trunk/gcc/llvm-types.cpp Modified: llvm-gcc-4.0/trunk/gcc/config/i386/llvm-i386-target.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/config/i386/llvm-i386-target.h?rev=45987&r1=45986&r2=45987&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/config/i386/llvm-i386-target.h (original) +++ llvm-gcc-4.0/trunk/gcc/config/i386/llvm-i386-target.h Mon Jan 14 17:28:30 2008 @@ -60,5 +60,8 @@ } \ } +#define LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) \ + (!TARGET_64BIT) + /* APPLE LOCAL end LLVM (ENTIRE FILE!) */ Modified: llvm-gcc-4.0/trunk/gcc/llvm-abi.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/llvm-abi.h?rev=45987&r1=45986&r2=45987&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/llvm-abi.h (original) +++ llvm-gcc-4.0/trunk/gcc/llvm-abi.h Mon Jan 14 17:28:30 2008 @@ -32,6 +32,7 @@ #include "llvm-internal.h" #include "llvm/Constants.h" #include "llvm/DerivedTypes.h" +#include "llvm/ParameterAttributes.h" #include "llvm/Target/TargetData.h" namespace llvm { @@ -126,7 +127,15 @@ // would often be 64-bits). #ifndef LLVM_SHOULD_PASS_AGGREGATE_IN_INTEGER_REGS #define LLVM_SHOULD_PASS_AGGREGATE_IN_INTEGER_REGS(X) \ - !isSingleElementStructOrArray(type) + !isSingleElementStructOrArray(X) +#endif + +// LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR - Return true if this aggregate +// value should be passed by reference by passing its address with the byval +// attribute bit set. The default is false. +#ifndef LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) +#define LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) \ + false #endif /// DefaultABI - This class implements the default LLVM ABI where structures are @@ -192,13 +201,17 @@ /// argument and invokes methods on the client that indicate how its pieces /// should be handled. This handles things like decimating structures into /// their fields. - void HandleArgument(tree type) { + void HandleArgument(tree type, uint16_t *Attributes = NULL) { const Type *Ty = ConvertType(type); if (isPassedByInvisibleReference(type)) { // variable size -> by-ref. C.HandleScalarArgument(PointerType::getUnqual(Ty), type); } else if (Ty->isFirstClassType()) { C.HandleScalarArgument(Ty, type); + } else if (LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(type)) { + C.HandleByValArgument(Ty, type); + if (Attributes) + *Attributes |= ParamAttr::ByVal; } else if (LLVM_SHOULD_PASS_AGGREGATE_IN_INTEGER_REGS(type)) { PassInIntegerRegisters(type, Ty); } else if (TREE_CODE(type) == RECORD_TYPE) { Modified: llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp?rev=45987&r1=45986&r2=45987&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Mon Jan 14 17:28:30 2008 @@ -467,6 +467,11 @@ ++AI; } + void HandleByValArgument(const llvm::Type *LLVMTy, tree type) { + // Should not get here. + abort(); + } + void EnterField(unsigned FieldNo, const llvm::Type *StructTy) { NameStack.push_back(NameStack.back()+"."+utostr(FieldNo)); @@ -637,9 +642,12 @@ const char *Name = "unnamed_arg"; if (DECL_NAME(Args)) Name = IDENTIFIER_POINTER(DECL_NAME(Args)); - if (isPassedByInvisibleReference(TREE_TYPE(Args))) { - // If the value is passed by 'invisible reference', the l-value for the - // argument IS the argument itself. + const Type *ArgTy = ConvertType(TREE_TYPE(Args)); + if (isPassedByInvisibleReference(TREE_TYPE(Args)) || + (!ArgTy->isFirstClassType() && + LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(TREE_TYPE(Args)))) { + // If the value is passed by 'invisible reference' or 'byval reference', + // the l-value for the argument IS the argument itself. SET_DECL_LLVM(Args, AI); AI->setName(Name); ++AI; @@ -647,7 +655,6 @@ // Otherwise, we create an alloca to hold the argument value and provide // an l-value. On entry to the function, we copy formal argument values // into the alloca. - const Type *ArgTy = ConvertType(TREE_TYPE(Args)); Value *Tmp = CreateTemporary(ArgTy); Tmp->setName(std::string(Name)+"_addr"); SET_DECL_LLVM(Args, Tmp); @@ -2841,6 +2848,16 @@ CallOperands.push_back(Builder.CreateLoad(Loc, "tmp")); } + /// HandleByValArgument - This callback is invoked if the aggregate function + /// argument is passed by value. It is lowered to a parameter passed by + /// reference with an additional parameter attribute "ByVal". + void HandleByValArgument(const llvm::Type *LLVMTy, tree type) { + assert(!LocStack.empty()); + Value *Loc = LocStack.back(); + assert(PointerType::getUnqual(LLVMTy) == Loc->getType()); + CallOperands.push_back(Loc); + } + void EnterField(unsigned FieldNo, const llvm::Type *StructTy) { Constant *Zero = Constant::getNullValue(Type::Int32Ty); Constant *FIdx = ConstantInt::get(Type::Int32Ty, FieldNo); @@ -2923,7 +2940,10 @@ LValue LV = EmitLV(TREE_VALUE(arg)); assert(!LV.isBitfield() && "Bitfields are first-class types!"); Client.setLocation(LV.Ptr); - ABIConverter.HandleArgument(TREE_TYPE(TREE_VALUE(arg))); + uint16_t Attributes = ParamAttr::None; + ABIConverter.HandleArgument(TREE_TYPE(TREE_VALUE(arg)), &Attributes); + if (Attributes != ParamAttr::None) + PAL= ParamAttrsList::includeAttrs(PAL, CallOperands.size(), Attributes); } } Modified: llvm-gcc-4.0/trunk/gcc/llvm-types.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/llvm-types.cpp?rev=45987&r1=45986&r2=45987&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/llvm-types.cpp (original) +++ llvm-gcc-4.0/trunk/gcc/llvm-types.cpp Mon Jan 14 17:28:30 2008 @@ -926,6 +926,13 @@ } ArgTypes.push_back(LLVMTy); } + + /// HandleByValArgument - This callback is invoked if the aggregate function + /// argument is passed by value. It is lowered to a parameter passed by + /// reference with an additional parameter attribute "ByVal". + void HandleByValArgument(const llvm::Type *LLVMTy, tree type) { + HandleScalarArgument(PointerType::getUnqual(LLVMTy), type); + } }; } @@ -984,11 +991,12 @@ for (; Args && TREE_TYPE(Args) != void_type_node; Args = TREE_CHAIN(Args)) { tree ArgTy = TREE_TYPE(Args); - ABIConverter.HandleArgument(ArgTy); // Determine if there are any attributes for this param. uint16_t Attributes = ParamAttr::None; + ABIConverter.HandleArgument(ArgTy, &Attributes); + // Compute zext/sext attributes. Attributes |= HandleArgumentExtension(ArgTy); @@ -1094,11 +1102,11 @@ break; } - ABIConverter.HandleArgument(ArgTy); - // Determine if there are any attributes for this param. uint16_t Attributes = ParamAttr::None; + ABIConverter.HandleArgument(ArgTy, &Attributes); + // Compute zext/sext attributes. Attributes |= HandleArgumentExtension(ArgTy); From evan.cheng at apple.com Mon Jan 14 17:30:29 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Mon, 14 Jan 2008 23:30:29 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r45988 - /llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Message-ID: <200801142330.m0ENUT74009933@zion.cs.uiuc.edu> Author: evancheng Date: Mon Jan 14 17:30:29 2008 New Revision: 45988 URL: http://llvm.org/viewvc/llvm-project?rev=45988&view=rev Log: Add missing LLVM LOCAL marker. Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp?rev=45988&r1=45987&r2=45988&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Mon Jan 14 17:30:29 2008 @@ -659,3 +659,5 @@ return false; } + +/* LLVM LOCAL end (ENTIRE FILE!) */ From evan.cheng at apple.com Mon Jan 14 21:10:36 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 15 Jan 2008 03:10:36 -0000 Subject: [llvm-commits] [llvm] r45994 - /llvm/trunk/utils/TableGen/CallingConvEmitter.cpp Message-ID: <200801150310.m0F3AapT026105@zion.cs.uiuc.edu> Author: evancheng Date: Mon Jan 14 21:10:35 2008 New Revision: 45994 URL: http://llvm.org/viewvc/llvm-project?rev=45994&view=rev Log: Revert my last commit. Not needed. Modified: llvm/trunk/utils/TableGen/CallingConvEmitter.cpp Modified: llvm/trunk/utils/TableGen/CallingConvEmitter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CallingConvEmitter.cpp?rev=45994&r1=45993&r2=45994&view=diff ============================================================================== --- llvm/trunk/utils/TableGen/CallingConvEmitter.cpp (original) +++ llvm/trunk/utils/TableGen/CallingConvEmitter.cpp Mon Jan 14 21:10:35 2008 @@ -115,32 +115,19 @@ int Size = Action->getValueAsInt("Size"); int Align = Action->getValueAsInt("Align"); - O << IndentStr << "unsigned Size = "; + O << IndentStr << "unsigned Offset" << ++Counter + << " = State.AllocateStack("; if (Size) - O << Size; + O << Size << ", "; else - O << "State.getTarget().getTargetData()" - "->getABITypeSize(MVT::getTypeForValueType(LocVT))"; - O << ";\n" - << IndentStr << "unsigned Align = "; + O << "\n" << IndentStr << " State.getTarget().getTargetData()" + "->getABITypeSize(MVT::getTypeForValueType(LocVT)), "; if (Align) O << Align; else - O << "State.getTarget().getTargetData()" + O << "\n" << IndentStr << " State.getTarget().getTargetData()" "->getABITypeAlignment(MVT::getTypeForValueType(LocVT))"; - O << ";\n"; - O << IndentStr << "if (ArgFlags & ISD::ParamFlags::ByVal) {\n"; - O << IndentStr << " " << - "Size = (ArgFlags & ISD::ParamFlags::ByValSize) >> " - "ISD::ParamFlags::ByValSizeOffs;\n"; - O << IndentStr << " " << - "unsigned ParamAlign = 1 << ((ArgFlags & ISD::ParamFlags::ByValAlign) " - ">> ISD::ParamFlags::ByValAlignOffs);\n"; - O << IndentStr << " Align = std::max(Align, ParamAlign);\n" - << IndentStr << "}\n"; - O << IndentStr << "unsigned Offset" << ++Counter - << " = State.AllocateStack(Size, Align);\n"; - O << IndentStr + O << ");\n" << IndentStr << "State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset" << Counter << ", LocVT, LocInfo));\n"; O << IndentStr << "return false;\n"; From evan.cheng at apple.com Mon Jan 14 21:14:06 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 15 Jan 2008 03:14:06 -0000 Subject: [llvm-commits] [llvm] r45995 - /llvm/trunk/lib/CodeGen/SelectionDAG/CallingConvLower.cpp Message-ID: <200801150314.m0F3E6d2026304@zion.cs.uiuc.edu> Author: evancheng Date: Mon Jan 14 21:14:05 2008 New Revision: 45995 URL: http://llvm.org/viewvc/llvm-project?rev=45995&view=rev Log: ByVal stack slot alignment should be at least as large as pointer ABI alignment. Modified: llvm/trunk/lib/CodeGen/SelectionDAG/CallingConvLower.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/CallingConvLower.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/CallingConvLower.cpp?rev=45995&r1=45994&r2=45995&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/CallingConvLower.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/CallingConvLower.cpp Mon Jan 14 21:14:05 2008 @@ -15,6 +15,7 @@ #include "llvm/CodeGen/CallingConvLower.h" #include "llvm/CodeGen/SelectionDAGNodes.h" #include "llvm/Target/MRegisterInfo.h" +#include "llvm/Target/TargetData.h" #include "llvm/Target/TargetMachine.h" using namespace llvm; @@ -31,11 +32,12 @@ void CCState::HandleStruct(unsigned ValNo, MVT::ValueType ValVT, MVT::ValueType LocVT, CCValAssign::LocInfo LocInfo, unsigned ArgFlags) { + unsigned MinAlign = TM.getTargetData()->getPointerABIAlignment(); unsigned Align = 1 << ((ArgFlags & ISD::ParamFlags::ByValAlign) >> ISD::ParamFlags::ByValAlignOffs); unsigned Size = (ArgFlags & ISD::ParamFlags::ByValSize) >> ISD::ParamFlags::ByValSizeOffs; - unsigned Offset = AllocateStack(Size, Align); + unsigned Offset = AllocateStack(Size, std::max(MinAlign, Align)); addLoc(CCValAssign::getMem(ValNo, ValVT, Offset, LocVT, LocInfo)); } From evan.cheng at apple.com Mon Jan 14 21:15:42 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 15 Jan 2008 03:15:42 -0000 Subject: [llvm-commits] [llvm] r45996 - /llvm/trunk/lib/Target/X86/X86CallingConv.td Message-ID: <200801150315.m0F3Fg26026425@zion.cs.uiuc.edu> Author: evancheng Date: Mon Jan 14 21:15:41 2008 New Revision: 45996 URL: http://llvm.org/viewvc/llvm-project?rev=45996&view=rev Log: Both x86-32 and x86-64 handle byval parameter attributes. Modified: llvm/trunk/lib/Target/X86/X86CallingConv.td Modified: llvm/trunk/lib/Target/X86/X86CallingConv.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86CallingConv.td?rev=45996&r1=45995&r2=45996&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86CallingConv.td (original) +++ llvm/trunk/lib/Target/X86/X86CallingConv.td Mon Jan 14 21:15:41 2008 @@ -96,11 +96,12 @@ //===----------------------------------------------------------------------===// def CC_X86_64_C : CallingConv<[ + // Handles byval parameters. + CCIfStruct>, + // Promote i8/i16 arguments to i32. CCIfType<[i8, i16], CCPromoteToType>, - CCIfStruct>, - // The first 6 integer arguments are passed in integer registers. CCIfType<[i32], CCAssignToReg<[EDI, ESI, EDX, ECX, R8D, R9D]>>, CCIfType<[i64], CCAssignToReg<[RDI, RSI, RDX, RCX, R8 , R9 ]>>, @@ -134,11 +135,12 @@ // Tail call convention (fast): One register is reserved for target address, // namely R9 def CC_X86_64_TailCall : CallingConv<[ + // Handles byval parameters. + CCIfStruct>, + // Promote i8/i16 arguments to i32. CCIfType<[i8, i16], CCPromoteToType>, - CCIfStruct>, - // The first 6 integer arguments are passed in integer registers. CCIfType<[i32], CCAssignToReg<[EDI, ESI, EDX, ECX, R8D]>>, CCIfType<[i64], CCAssignToReg<[RDI, RSI, RDX, RCX, R8]>>, @@ -174,6 +176,9 @@ /// values are spilled on the stack, and the first 4 vector values go in XMM /// regs. def CC_X86_32_Common : CallingConv<[ + // Handles byval parameters. + CCIfStruct>, + // Integer/Float values get stored in stack slots that are 4 bytes in // size and 4-byte aligned. CCIfType<[i32, f32], CCAssignToStack<4, 4>>, From evan.cheng at apple.com Mon Jan 14 21:34:58 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 15 Jan 2008 03:34:58 -0000 Subject: [llvm-commits] [llvm] r45997 - in /llvm/trunk: lib/Target/TargetCallingConv.td lib/Target/X86/X86CallingConv.td utils/TableGen/CallingConvEmitter.cpp Message-ID: <200801150334.m0F3YxvK027490@zion.cs.uiuc.edu> Author: evancheng Date: Mon Jan 14 21:34:58 2008 New Revision: 45997 URL: http://llvm.org/viewvc/llvm-project?rev=45997&view=rev Log: Rename CCIfStruct to CCIfByVal and CCStructAssign to CCPassByVal. Remove unused parameters of CCStructAssign and add size and alignment requirement info. Modified: llvm/trunk/lib/Target/TargetCallingConv.td llvm/trunk/lib/Target/X86/X86CallingConv.td llvm/trunk/utils/TableGen/CallingConvEmitter.cpp Modified: llvm/trunk/lib/Target/TargetCallingConv.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetCallingConv.td?rev=45997&r1=45996&r2=45997&view=diff ============================================================================== --- llvm/trunk/lib/Target/TargetCallingConv.td (original) +++ llvm/trunk/lib/Target/TargetCallingConv.td Mon Jan 14 21:34:58 2008 @@ -32,9 +32,9 @@ string Predicate = predicate; } -/// CCIfStruct - If the current argument is a struct, apply +/// CCIfByVal - If the current argument has ByVal parameter attribute, apply /// Action A. -class CCIfStruct : CCIf<"ArgFlags & ISD::ParamFlags::ByVal", A> { +class CCIfByVal : CCIf<"ArgFlags & ISD::ParamFlags::ByVal", A> { } /// CCIfCC - Match of the current calling convention is 'CC'. @@ -68,11 +68,12 @@ int Align = align; } -/// CCStructAssign - This action always matches: it will use the C ABI and -/// the register availability to decided whether to assign to a set of -/// registers or to a stack slot. -class CCStructAssign regList> : CCAction { - list RegList = regList; +/// CCPassByVal - This action always matches: it assigns the value to a stack +/// slot to implement ByVal aggregate parameter passing. Size and alignment +/// specify the minimum size and alignment for the stack slot. +class CCPassByVal : CCAction { + int Size = size; + int Align = align; } /// CCPromoteToType - If applied, this promotes the specified current value to Modified: llvm/trunk/lib/Target/X86/X86CallingConv.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86CallingConv.td?rev=45997&r1=45996&r2=45997&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86CallingConv.td (original) +++ llvm/trunk/lib/Target/X86/X86CallingConv.td Mon Jan 14 21:34:58 2008 @@ -97,7 +97,7 @@ def CC_X86_64_C : CallingConv<[ // Handles byval parameters. - CCIfStruct>, + CCIfByVal>, // Promote i8/i16 arguments to i32. CCIfType<[i8, i16], CCPromoteToType>, @@ -136,7 +136,7 @@ // namely R9 def CC_X86_64_TailCall : CallingConv<[ // Handles byval parameters. - CCIfStruct>, + CCIfByVal>, // Promote i8/i16 arguments to i32. CCIfType<[i8, i16], CCPromoteToType>, @@ -177,7 +177,7 @@ /// regs. def CC_X86_32_Common : CallingConv<[ // Handles byval parameters. - CCIfStruct>, + CCIfByVal>, // Integer/Float values get stored in stack slots that are 4 bytes in // size and 4-byte aligned. Modified: llvm/trunk/utils/TableGen/CallingConvEmitter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CallingConvEmitter.cpp?rev=45997&r1=45996&r2=45997&view=diff ============================================================================== --- llvm/trunk/utils/TableGen/CallingConvEmitter.cpp (original) +++ llvm/trunk/utils/TableGen/CallingConvEmitter.cpp Mon Jan 14 21:34:58 2008 @@ -140,9 +140,12 @@ << IndentStr << IndentStr << "LocInfo = CCValAssign::ZExt;\n" << IndentStr << "else\n" << IndentStr << IndentStr << "LocInfo = CCValAssign::AExt;\n"; - } else if (Action->isSubClassOf("CCStructAssign")) { - O << IndentStr << - "State.HandleStruct(ValNo, ValVT, LocVT, LocInfo, ArgFlags);\n"; + } else if (Action->isSubClassOf("CCPassByVal")) { + int Size = Action->getValueAsInt("Size"); + int Align = Action->getValueAsInt("Align"); + O << IndentStr + << "State.HandleByVal(ValNo, ValVT, LocVT, LocInfo, " + << Size << ", " << Align << ", ArgFlags);\n"; O << IndentStr << "return false;\n"; } else { Action->dump(); From sabre at nondot.org Mon Jan 14 22:34:24 2008 From: sabre at nondot.org (Chris Lattner) Date: Tue, 15 Jan 2008 04:34:24 -0000 Subject: [llvm-commits] [llvm] r45998 - /llvm/trunk/docs/LangRef.html Message-ID: <200801150434.m0F4YOre031600@zion.cs.uiuc.edu> Author: lattner Date: Mon Jan 14 22:34:22 2008 New Revision: 45998 URL: http://llvm.org/viewvc/llvm-project?rev=45998&view=rev Log: clarify that byval is valid for any pointer argument. Modified: llvm/trunk/docs/LangRef.html Modified: llvm/trunk/docs/LangRef.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/LangRef.html?rev=45998&r1=45997&r2=45998&view=diff ============================================================================== --- llvm/trunk/docs/LangRef.html (original) +++ llvm/trunk/docs/LangRef.html Mon Jan 14 22:34:22 2008 @@ -810,11 +810,12 @@ target-specific
byval
-
This indicates that the pointer parameter is really an aggregate that - was passed by value to the function. The attribute implies that a hidden - copy of the struct is made between the caller and the callee, so the - callee is unable to modify the struct in the callee. This attribute is only - valid on llvm pointer arguments.
+
This indicates that the pointer parameter should really be passed by + value to the function. The attribute implies that a hidden copy of the + pointee is made between the caller and the callee, so the callee is unable + to modify the value in the callee. This attribute is only valid on llvm + pointer arguments. It is generally used to pass structs and arrays by + value, but is also valid on scalars (even though this is silly).
sret
This indicates that the parameter specifies the address of a structure From alain at frisch.fr Mon Jan 14 23:59:07 2008 From: alain at frisch.fr (Alain Frisch) Date: Tue, 15 Jan 2008 06:59:07 +0100 Subject: [llvm-commits] Patch for compiling with Mingw/Cygwin In-Reply-To: References: <47824F79.6040700@frisch.fr> <478B23AA.1020703@frisch.fr> Message-ID: <478C4BAB.1080008@frisch.fr> Chris Lattner wrote: > Okay, this looks really good. One final question before I commit: why > does tblgen want a windows path instead of a unix path? Can that be > fixed in tblgen? Doesn't this affect llvm-as and all other tools? When we compile with Mingw/Cygwin, we want to produce plain Win32 programs and libraries that don't depend on the cygwin DLL to resolve filenames, so it is normal that tools such as llvm-as don't accept unix paths. This is exactly the same as for the normal Mingw case. The difference with Mingw here is that the build system (make), being a Cygwin program, works with unix paths, so some translation is needed. -- Alain From asl at math.spbu.ru Tue Jan 15 01:02:33 2008 From: asl at math.spbu.ru (Anton Korobeynikov) Date: Tue, 15 Jan 2008 07:02:33 -0000 Subject: [llvm-commits] [llvm] r46001 - in /llvm/trunk: include/llvm/CodeGen/SelectionDAGNodes.h include/llvm/Intrinsics.td lib/CodeGen/SelectionDAG/LegalizeDAG.cpp lib/CodeGen/SelectionDAG/SelectionDAG.cpp lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp lib/Target/X86/X86ISelLowering.cpp lib/Target/X86/X86ISelLowering.h lib/Target/X86/X86InstrInfo.td Message-ID: <200801150702.m0F72YKt009200@zion.cs.uiuc.edu> Author: asl Date: Tue Jan 15 01:02:33 2008 New Revision: 46001 URL: http://llvm.org/viewvc/llvm-project?rev=46001&view=rev Log: For PR1839: add initial support for __builtin_trap. llvm-gcc part is missed as well as PPC codegen Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h llvm/trunk/include/llvm/Intrinsics.td llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp llvm/trunk/lib/Target/X86/X86ISelLowering.cpp llvm/trunk/lib/Target/X86/X86ISelLowering.h llvm/trunk/lib/Target/X86/X86InstrInfo.td Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h?rev=46001&r1=46000&r2=46001&view=diff ============================================================================== --- llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h (original) +++ llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h Tue Jan 15 01:02:33 2008 @@ -563,6 +563,9 @@ // chain as output. TRAMPOLINE, + // TRAP - Trapping instruction + TRAP, + // BUILTIN_OP_END - This must be the last enum value in this list. BUILTIN_OP_END }; Modified: llvm/trunk/include/llvm/Intrinsics.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Intrinsics.td?rev=46001&r1=46000&r2=46001&view=diff ============================================================================== --- llvm/trunk/include/llvm/Intrinsics.td (original) +++ llvm/trunk/include/llvm/Intrinsics.td Tue Jan 15 01:02:33 2008 @@ -266,6 +266,8 @@ // def int_flt_rounds : Intrinsic<[llvm_i32_ty]>, GCCBuiltin<"__builtin_flt_rounds">; +def int_trap : Intrinsic<[llvm_void_ty]>, + GCCBuiltin<"__builtin_trap">; //===----------------------------------------------------------------------===// // Target-specific intrinsics Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=46001&r1=46000&r2=46001&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Tue Jan 15 01:02:33 2008 @@ -3734,6 +3734,25 @@ break; } } + case ISD::TRAP: { + MVT::ValueType VT = Node->getValueType(0); + switch (TLI.getOperationAction(Node->getOpcode(), VT)) { + default: assert(0 && "This action not supported for this op yet!"); + case TargetLowering::Custom: + Result = TLI.LowerOperation(Op, DAG); + if (Result.Val) break; + // Fall Thru + case TargetLowering::Legal: + // If this operation is not supported, lower it to 'abort()' call + SDOperand Chain = LegalizeOp(Node->getOperand(0)); + TargetLowering::ArgListTy Args; + std::pair CallResult = + TLI.LowerCallTo(Chain, Type::VoidTy, false, false, CallingConv::C, false, + DAG.getExternalSymbol("abort", MVT::Other), Args, DAG); + Result = CallResult.second; + break; + } + } } assert(Result.getValueType() == Op.getValueType() && Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp?rev=46001&r1=46000&r2=46001&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Tue Jan 15 01:02:33 2008 @@ -3770,7 +3770,8 @@ case ISD::BUILD_PAIR: return "build_pair"; case ISD::STACKSAVE: return "stacksave"; case ISD::STACKRESTORE: return "stackrestore"; - + case ISD::TRAP: return "trap"; + // Block memory operations. case ISD::MEMSET: return "memset"; case ISD::MEMCPY: return "memcpy"; Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp?rev=46001&r1=46000&r2=46001&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Tue Jan 15 01:02:33 2008 @@ -2932,6 +2932,11 @@ setValue(&I, DAG.getNode(ISD::FLT_ROUNDS, MVT::i32)); return 0; } + + case Intrinsic::trap: { + DAG.setRoot(DAG.getNode(ISD::TRAP, MVT::Other, getRoot())); + return 0; + } } } Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=46001&r1=46000&r2=46001&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Tue Jan 15 01:02:33 2008 @@ -294,6 +294,8 @@ setOperationAction(ISD::TRAMPOLINE, MVT::Other, Custom); + setOperationAction(ISD::TRAP, MVT::Other, Custom); + // VASTART needs to be custom lowered to use the VarArgsFrameIndex setOperationAction(ISD::VASTART , MVT::Other, Custom); setOperationAction(ISD::VAARG , MVT::Other, Expand); @@ -4948,6 +4950,10 @@ ISD::TRUNCATE : ISD::ZERO_EXTEND), VT, RetVal); } +SDOperand X86TargetLowering::LowerTRAP(SDOperand Op, SelectionDAG &DAG) { + return DAG.getNode(X86ISD::TRAP, MVT::Other, Op.getOperand(0)); +} + SDOperand X86TargetLowering::LowerCTLZ(SDOperand Op, SelectionDAG &DAG) { MVT::ValueType VT = Op.getValueType(); MVT::ValueType OpVT = VT; @@ -5052,6 +5058,7 @@ case ISD::FLT_ROUNDS: return LowerFLT_ROUNDS(Op, DAG); case ISD::CTLZ: return LowerCTLZ(Op, DAG); case ISD::CTTZ: return LowerCTTZ(Op, DAG); + case ISD::TRAP: return LowerTRAP(Op, DAG); // FIXME: REMOVE THIS WHEN LegalizeDAGTypes lands. case ISD::READCYCLECOUNTER: @@ -5091,6 +5098,7 @@ case X86ISD::CALL: return "X86ISD::CALL"; case X86ISD::TAILCALL: return "X86ISD::TAILCALL"; case X86ISD::RDTSC_DAG: return "X86ISD::RDTSC_DAG"; + case X86ISD::TRAP: return "X86ISD::TRAP"; case X86ISD::CMP: return "X86ISD::CMP"; case X86ISD::COMI: return "X86ISD::COMI"; case X86ISD::UCOMI: return "X86ISD::UCOMI"; Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.h?rev=46001&r1=46000&r2=46001&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.h (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.h Tue Jan 15 01:02:33 2008 @@ -197,7 +197,10 @@ TC_RETURN, // Store FP control world into i16 memory - FNSTCW16m + FNSTCW16m, + + // Trapping instruction + TRAP }; } @@ -484,6 +487,7 @@ SDOperand LowerEH_RETURN(SDOperand Op, SelectionDAG &DAG); SDOperand LowerTRAMPOLINE(SDOperand Op, SelectionDAG &DAG); SDOperand LowerFLT_ROUNDS(SDOperand Op, SelectionDAG &DAG); + SDOperand LowerTRAP(SDOperand Op, SelectionDAG &DAG); SDOperand LowerCTLZ(SDOperand Op, SelectionDAG &DAG); SDOperand LowerCTTZ(SDOperand Op, SelectionDAG &DAG); SDNode *ExpandFP_TO_SINT(SDNode *N, SelectionDAG &DAG); Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.td?rev=46001&r1=46000&r2=46001&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86InstrInfo.td (original) +++ llvm/trunk/lib/Target/X86/X86InstrInfo.td Tue Jan 15 01:02:33 2008 @@ -57,6 +57,8 @@ def SDT_X86TCRET : SDTypeProfile<0, 2, [SDTCisPtrTy<0>, SDTCisVT<1, i32>]>; +def SDT_X86TRAP : SDTypeProfile<0, 0, []>; + def X86bsf : SDNode<"X86ISD::BSF", SDTIntUnaryOp>; def X86bsr : SDNode<"X86ISD::BSR", SDTIntUnaryOp>; def X86shld : SDNode<"X86ISD::SHLD", SDTIntShiftDOp>; @@ -107,6 +109,9 @@ def X86tcret : SDNode<"X86ISD::TC_RETURN", SDT_X86TCRET, [SDNPHasChain, SDNPOptInFlag]>; +def X86trap : SDNode<"X86ISD::TRAP", SDT_X86TRAP, + [SDNPHasChain, SDNPOutFlag, SDNPSideEffect]>; + //===----------------------------------------------------------------------===// // X86 Operand Definitions. // @@ -484,6 +489,11 @@ def RDTSC : I<0x31, RawFrm, (outs), (ins), "rdtsc", [(X86rdtsc)]>, TB; +let isBarrier = 1, hasCtrlDep = 1 in { +// FIXME: Should use 0x0F0B opcode +def TRAP : I<0, RawFrm, (outs), (ins), "ud2", [(X86trap)]>; +} + //===----------------------------------------------------------------------===// // Input/Output Instructions... // From evan.cheng at apple.com Tue Jan 15 01:49:38 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 15 Jan 2008 07:49:38 -0000 Subject: [llvm-commits] [llvm] r46002 - /llvm/trunk/lib/CodeGen/SelectionDAG/CallingConvLower.cpp Message-ID: <200801150749.m0F7ncXg012327@zion.cs.uiuc.edu> Author: evancheng Date: Tue Jan 15 01:49:36 2008 New Revision: 46002 URL: http://llvm.org/viewvc/llvm-project?rev=46002&view=rev Log: Oops. Forgot to commit this. Modified: llvm/trunk/lib/CodeGen/SelectionDAG/CallingConvLower.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/CallingConvLower.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/CallingConvLower.cpp?rev=46002&r1=46001&r2=46002&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/CallingConvLower.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/CallingConvLower.cpp Tue Jan 15 01:49:36 2008 @@ -29,15 +29,22 @@ UsedRegs.resize(MRI.getNumRegs()); } -void CCState::HandleStruct(unsigned ValNo, MVT::ValueType ValVT, - MVT::ValueType LocVT, CCValAssign::LocInfo LocInfo, - unsigned ArgFlags) { - unsigned MinAlign = TM.getTargetData()->getPointerABIAlignment(); +// HandleByVal - Allocate a stack slot large enough to pass an argument by +// value. The size and alignment information of the argument is encoded in its +// parameter attribute. +void CCState::HandleByVal(unsigned ValNo, MVT::ValueType ValVT, + MVT::ValueType LocVT, CCValAssign::LocInfo LocInfo, + int MinSize, int MinAlign, + unsigned ArgFlags) { unsigned Align = 1 << ((ArgFlags & ISD::ParamFlags::ByValAlign) >> ISD::ParamFlags::ByValAlignOffs); unsigned Size = (ArgFlags & ISD::ParamFlags::ByValSize) >> ISD::ParamFlags::ByValSizeOffs; - unsigned Offset = AllocateStack(Size, std::max(MinAlign, Align)); + if (MinSize > (int)Size) + Size = MinSize; + if (MinAlign > (int)Align) + Align = MinAlign; + unsigned Offset = AllocateStack(Size, Align); addLoc(CCValAssign::getMem(ValNo, ValVT, Offset, LocVT, LocInfo)); } From evan.cheng at apple.com Tue Jan 15 01:49:54 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 15 Jan 2008 07:49:54 -0000 Subject: [llvm-commits] [llvm] r46003 - /llvm/trunk/include/llvm/CodeGen/CallingConvLower.h Message-ID: <200801150749.m0F7ns8j012382@zion.cs.uiuc.edu> Author: evancheng Date: Tue Jan 15 01:49:54 2008 New Revision: 46003 URL: http://llvm.org/viewvc/llvm-project?rev=46003&view=rev Log: Oops. Forgot to commit this. Modified: llvm/trunk/include/llvm/CodeGen/CallingConvLower.h Modified: llvm/trunk/include/llvm/CodeGen/CallingConvLower.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/CallingConvLower.h?rev=46003&r1=46002&r2=46003&view=diff ============================================================================== --- llvm/trunk/include/llvm/CodeGen/CallingConvLower.h (original) +++ llvm/trunk/include/llvm/CodeGen/CallingConvLower.h Tue Jan 15 01:49:54 2008 @@ -191,9 +191,13 @@ return Result; } - void HandleStruct(unsigned ValNo, MVT::ValueType ValVT, - MVT::ValueType LocVT, CCValAssign::LocInfo LocInfo, - unsigned ArgFlags); + // HandleByVal - Allocate a stack slot large enough to pass an argument by + // value. The size and alignment information of the argument is encoded in its + // parameter attribute. + void HandleByVal(unsigned ValNo, MVT::ValueType ValVT, + MVT::ValueType LocVT, CCValAssign::LocInfo LocInfo, + int MinSize, int MinAlign, unsigned ArgFlags); + private: /// MarkAllocated - Mark a register and all of its aliases as allocated. void MarkAllocated(unsigned Reg); From evan.cheng at apple.com Tue Jan 15 02:18:26 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 15 Jan 2008 08:18:26 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46004 - in /llvm-gcc-4.2/trunk/gcc: config/i386/i386.c config/i386/llvm-i386-target.h llvm-abi.h Message-ID: <200801150818.m0F8IQlG014588@zion.cs.uiuc.edu> Author: evancheng Date: Tue Jan 15 02:18:25 2008 New Revision: 46004 URL: http://llvm.org/viewvc/llvm-project?rev=46004&view=rev Log: Make use of existing gcc facility to determine if an aggregate argument should be passed ByVal in x86-64 mode. Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386.c llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h llvm-gcc-4.2/trunk/gcc/llvm-abi.h Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/i386.c?rev=46004&r1=46003&r2=46004&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/i386.c (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/i386.c Tue Jan 15 02:18:25 2008 @@ -21524,4 +21524,18 @@ return DW_EH_PE_absptr; } + +/* APPLE LOCAL begin LLVM */ + +/* Target hook for llvm-abi.h. It returns true if an aggregate of the + specified type should be passed in memory. This is only called for + x86-64. */ +int llvm_x86_64_should_pass_aggregate_in_memory(tree type) { + int needed_intregs, needed_sseregs; + enum machine_mode mode = type_natural_mode (type); + return !examine_argument(mode, type, 1, &needed_intregs, &needed_sseregs); +} + +/* APPLE LOCAL end LLVM */ + #include "gt-i386.h" Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h?rev=46004&r1=46003&r2=46004&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h Tue Jan 15 02:18:25 2008 @@ -62,8 +62,11 @@ } \ } +extern int llvm_x86_64_should_pass_aggregate_in_memory(tree); + #define LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) \ - (!TARGET_64BIT) + ((!TARGET_64BIT) \ + ? true : llvm_x86_64_should_pass_aggregate_in_memory(X)) /* LLVM LOCAL end (ENTIRE FILE!) */ Modified: llvm-gcc-4.2/trunk/gcc/llvm-abi.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-abi.h?rev=46004&r1=46003&r2=46004&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-abi.h (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-abi.h Tue Jan 15 02:18:25 2008 @@ -131,7 +131,7 @@ #endif // LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR - Return true if this aggregate -// value should be passed by reference by passing its address with the byval +// value should be passed by value, i.e. passing its address with the byval // attribute bit set. The default is false. #ifndef LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) #define LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) \ From clattner at apple.com Tue Jan 15 10:22:50 2008 From: clattner at apple.com (Chris Lattner) Date: Tue, 15 Jan 2008 08:22:50 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r46004 - in /llvm-gcc-4.2/trunk/gcc: config/i386/i386.c config/i386/llvm-i386-target.h llvm-abi.h In-Reply-To: <200801150818.m0F8IQlG014588@zion.cs.uiuc.edu> References: <200801150818.m0F8IQlG014588@zion.cs.uiuc.edu> Message-ID: <46CB2F5F-284D-4A72-B89A-0379512AFF6A@apple.com> > URL: http://llvm.org/viewvc/llvm-project?rev=46004&view=rev > Log: > Make use of existing gcc facility to determine if an aggregate > argument should be passed ByVal in x86-64 mode. Nice. > +/* Target hook for llvm-abi.h. It returns true if an aggregate of the > + specified type should be passed in memory. This is only called for > + x86-64. */ > +int llvm_x86_64_should_pass_aggregate_in_memory(tree type) { > + int needed_intregs, needed_sseregs; > + enum machine_mode mode = type_natural_mode (type); > + return !examine_argument(mode, type, 1, &needed_intregs, > &needed_sseregs); Please document what this is doing: /* if examine_argument says that this arg takes 0 registers, it is passed in memory, pass with byval. */ or something. > = > = > = > = > = > = > = > = > ====================================================================== > --- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h (original) > +++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h Tue Jan 15 > 02:18:25 2008 > @@ -62,8 +62,11 @@ > } \ > } > > +extern int llvm_x86_64_should_pass_aggregate_in_memory(tree); > + > #define LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) \ > - (!TARGET_64BIT) > + ((!TARGET_64BIT) \ > + ? true : llvm_x86_64_should_pass_aggregate_in_memory(X)) How about: (!TARGET_64BIT || llvm_x86_64_should_pass_aggregate_in_memory(X)) -Chris From sam at bishop.dhs.org Tue Jan 15 11:07:49 2008 From: sam at bishop.dhs.org (Sam Bishop) Date: Tue, 15 Jan 2008 10:07:49 -0700 (MST) Subject: [llvm-commits] Makefile.rules patch: remove redundant -I compiler flags Message-ID: <20096.137.201.242.130.1200416869.squirrel@webmail.nwind.net> The attached patch makes VERBOSE builds easier to wade through. It's likely to also permute the PROJ_* and LLVM_* includes, but I don't think that should matter. I've done a full-tree compile and everything seems to be working. Thanks, Sam Bishop *** Before *** sbishop at sbishop-lnx$ make VERBOSE=1 llvm[0]: Compiling CommandLine.cpp for Debug build if g++ -I/u/sbishop/llvm/lib/Support -I/u/sbishop/llvm/lib/Support -I/u/sbishop/llvm/include -I/u/sbishop/llvm/include -I/u/sbishop/llvm/include -I/u/sbishop/llvm/include ... *** After *** sbishop at sbishop-lnx$ make VERBOSE=1 llvm[0]: Compiling CommandLine.cpp for Debug build if g++ -I/u/sbishop/llvm/include -I/u/sbishop/llvm/lib/Support/include ... -------------- next part -------------- A non-text attachment was scrubbed... Name: Makefile.rules.patch Type: application/octet-stream Size: 958 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20080115/954ab9dd/attachment.obj From baldrick at free.fr Tue Jan 15 13:55:42 2008 From: baldrick at free.fr (Duncan Sands) Date: Tue, 15 Jan 2008 19:55:42 -0000 Subject: [llvm-commits] [llvm] r46006 - /llvm/trunk/test/FrontendAda/placeholder.adb Message-ID: <200801151955.m0FJtgsP004461@zion.cs.uiuc.edu> Author: baldrick Date: Tue Jan 15 13:55:41 2008 New Revision: 46006 URL: http://llvm.org/viewvc/llvm-project?rev=46006&view=rev Log: Testcase for gimplify_expr crash caused by an unexpected placeholder_expr. Added: llvm/trunk/test/FrontendAda/placeholder.adb Added: llvm/trunk/test/FrontendAda/placeholder.adb URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/FrontendAda/placeholder.adb?rev=46006&view=auto ============================================================================== --- llvm/trunk/test/FrontendAda/placeholder.adb (added) +++ llvm/trunk/test/FrontendAda/placeholder.adb Tue Jan 15 13:55:41 2008 @@ -0,0 +1,12 @@ +-- RUN: %llvmgcc -c %s +procedure Placeholder is + subtype Bounded is Integer range 1 .. 5; + type Vector is array (Bounded range <>) of Integer; + type Interval (Length : Bounded := 1) is record + Points : Vector (1 .. Length); + end record; + An_Interval : Interval := (Length => 1, Points => (1 => 1)); + generic The_Interval : Interval; package R is end; + package body R is end; + package S is new R (An_Interval); +begin null; end; From gordonhenriksen at mac.com Tue Jan 15 14:02:15 2008 From: gordonhenriksen at mac.com (Gordon Henriksen) Date: Tue, 15 Jan 2008 20:02:15 -0000 Subject: [llvm-commits] [llvm] r46007 - /llvm/trunk/include/llvm/Support/StringPool.h Message-ID: <200801152002.m0FK2FD9004847@zion.cs.uiuc.edu> Author: gordon Date: Tue Jan 15 14:02:11 2008 New Revision: 46007 URL: http://llvm.org/viewvc/llvm-project?rev=46007&view=rev Log: Fix a memory correctness error noticed by valgrind (harmless in practice). Thanks to Duncan Sands for noticing it. Modified: llvm/trunk/include/llvm/Support/StringPool.h Modified: llvm/trunk/include/llvm/Support/StringPool.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/StringPool.h?rev=46007&r1=46006&r2=46007&view=diff ============================================================================== --- llvm/trunk/include/llvm/Support/StringPool.h (original) +++ llvm/trunk/include/llvm/Support/StringPool.h Tue Jan 15 14:02:11 2008 @@ -110,7 +110,7 @@ return; if (--S->getValue().Refcount == 0) { S->getValue().Pool->InternTable.remove(S); - delete S; + S->Destroy(); } S = 0; } From baldrick at free.fr Tue Jan 15 15:03:52 2008 From: baldrick at free.fr (Duncan Sands) Date: Tue, 15 Jan 2008 21:03:52 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46008 - /llvm-gcc-4.2/trunk/gcc/llvm-abi.h Message-ID: <200801152103.m0FL3rAR009899@zion.cs.uiuc.edu> Author: baldrick Date: Tue Jan 15 15:03:51 2008 New Revision: 46008 URL: http://llvm.org/viewvc/llvm-project?rev=46008&view=rev Log: Fix warning: extra tokens at end of #ifndef directive Modified: llvm-gcc-4.2/trunk/gcc/llvm-abi.h Modified: llvm-gcc-4.2/trunk/gcc/llvm-abi.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-abi.h?rev=46008&r1=46007&r2=46008&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-abi.h (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-abi.h Tue Jan 15 15:03:51 2008 @@ -133,7 +133,7 @@ // LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR - Return true if this aggregate // value should be passed by value, i.e. passing its address with the byval // attribute bit set. The default is false. -#ifndef LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) +#ifndef LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR #define LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) \ false #endif From isanbard at gmail.com Tue Jan 15 15:16:33 2008 From: isanbard at gmail.com (Bill Wendling) Date: Tue, 15 Jan 2008 21:16:33 -0000 Subject: [llvm-commits] [llvm] r46009 - /llvm/trunk/lib/VMCore/AsmWriter.cpp Message-ID: <200801152116.m0FLGXF6011008@zion.cs.uiuc.edu> Author: void Date: Tue Jan 15 15:16:32 2008 New Revision: 46009 URL: http://llvm.org/viewvc/llvm-project?rev=46009&view=rev Log: Reformatted. It was confusing the other way. No functionality change. Modified: llvm/trunk/lib/VMCore/AsmWriter.cpp Modified: llvm/trunk/lib/VMCore/AsmWriter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/AsmWriter.cpp?rev=46009&r1=46008&r2=46009&view=diff ============================================================================== --- llvm/trunk/lib/VMCore/AsmWriter.cpp (original) +++ llvm/trunk/lib/VMCore/AsmWriter.cpp Tue Jan 15 15:16:32 2008 @@ -921,12 +921,13 @@ void AssemblyWriter::printGlobal(const GlobalVariable *GV) { if (GV->hasName()) Out << getLLVMName(GV->getName(), GlobalPrefix) << " = "; - if (!GV->hasInitializer()) + if (!GV->hasInitializer()) { switch (GV->getLinkage()) { case GlobalValue::DLLImportLinkage: Out << "dllimport "; break; case GlobalValue::ExternalWeakLinkage: Out << "extern_weak "; break; default: Out << "external "; break; - } else { + } + } else { switch (GV->getLinkage()) { case GlobalValue::InternalLinkage: Out << "internal "; break; case GlobalValue::LinkOnceLinkage: Out << "linkonce "; break; From sabre at nondot.org Tue Jan 15 15:35:54 2008 From: sabre at nondot.org (Chris Lattner) Date: Tue, 15 Jan 2008 21:35:54 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46010 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Message-ID: <200801152135.m0FLZsFn012063@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 15:35:53 2008 New Revision: 46010 URL: http://llvm.org/viewvc/llvm-project?rev=46010&view=rev Log: Add support for builtin_trap, which was basically just broken before. Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=46010&r1=46009&r2=46010&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Tue Jan 15 15:35:53 2008 @@ -4199,11 +4199,18 @@ } case BUILT_IN_FLT_ROUNDS: { Result = Builder.CreateCall(Intrinsic::getDeclaration(TheModule, - Intrinsic::flt_rounds), + Intrinsic::flt_rounds), "tmp"); Result = BitCastToType(Result, ConvertType(TREE_TYPE(exp))); return true; } + case BUILT_IN_TRAP: + Builder.CreateCall(Intrinsic::getDeclaration(TheModule, Intrinsic::trap)); + // Emit an explicit unreachable instruction. + Builder.CreateUnreachable(); + EmitBlock(new BasicBlock("")); + return true; + #if 1 // FIXME: Should handle these GCC extensions eventually. case BUILT_IN_APPLY_ARGS: case BUILT_IN_APPLY: @@ -4218,7 +4225,6 @@ case BUILT_IN_SETJMP_RECEIVER: case BUILT_IN_LONGJMP: case BUILT_IN_UPDATE_SETJMP_BUF: - case BUILT_IN_TRAP: // FIXME: HACK: Just ignore these. { From wmatyjewicz at fastmail.fm Tue Jan 15 15:36:41 2008 From: wmatyjewicz at fastmail.fm (Wojciech Matyjewicz) Date: Tue, 15 Jan 2008 22:36:41 +0100 Subject: [llvm-commits] Fix for PR1798 (ScalarEvolution) Message-ID: <478D2769.8060503@fastmail.fm> The attached patch should fix the aforementioned bug. It passes DejaGnu testsuite. Nick also checked that it passes llvm-test and llvm-gcc bootstrap (thanks!). The patch: 1) changes SCEVSDivExpr into SCEVUDivExpr, 2) replaces PartialFact() function with BinomialCoefficient(); the computations in BinomialCoefficient() are performed with the apprioprate bitwidth necessary to avoid overflow. The short explanation why the patch should be correct is contained in the comments. The longer can be found in the bugzilla discussion: http://llvm.org/bugs/show_bug.cgi?id=1798. However, there is one problem. The fix needs support for integers of arbitrary bitwitdth to work in every possible case. Here is a short explanation why: To evaluate a chrec of length K at a given iteration we need, in general, to generate LLVM code performing accurate multiplication of K numbers. Suppose, W is their bitwidth. Then, multiplication need to use K*W bits, what can potentially be an arbitrary number. I can see two ways what we can do now: 1) wait for the backend support, 2) make the patch unoptimal by using the more bits than needed to perform the multiplication (the minimum power of 2 greater or equal to K*W) What do you think? -Wojtek -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: PR1798-fix.patch Url: http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20080115/8d666667/attachment.pl From sabre at nondot.org Tue Jan 15 15:38:04 2008 From: sabre at nondot.org (Chris Lattner) Date: Tue, 15 Jan 2008 21:38:04 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r46011 - /llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Message-ID: <200801152138.m0FLc46g012180@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 15:38:04 2008 New Revision: 46011 URL: http://llvm.org/viewvc/llvm-project?rev=46011&view=rev Log: implement __builtin_trap, which was previously just broken. Modified: llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Modified: llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp?rev=46011&r1=46010&r2=46011&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Tue Jan 15 15:38:04 2008 @@ -4644,6 +4644,12 @@ Args.begin(), Args.end()); return true; } + case BUILT_IN_TRAP: + Builder.CreateCall(Intrinsic::getDeclaration(TheModule, Intrinsic::trap)); + // Emit an explicit unreachable instruction. + Builder.CreateUnreachable(); + EmitBlock(new BasicBlock("")); + return true; #if 1 // FIXME: Should handle these GCC extensions eventually. case BUILT_IN_APPLY_ARGS: @@ -4657,7 +4663,6 @@ case BUILT_IN_SETJMP: case BUILT_IN_LONGJMP: case BUILT_IN_UPDATE_SETJMP_BUF: - case BUILT_IN_TRAP: // FIXME: HACK: Just ignore these. { From asl at math.spbu.ru Tue Jan 15 15:40:02 2008 From: asl at math.spbu.ru (Anton Korobeynikov) Date: Tue, 15 Jan 2008 21:40:02 -0000 Subject: [llvm-commits] [llvm] r46012 - /llvm/trunk/lib/Target/X86/X86InstrInfo.td Message-ID: <200801152140.m0FLe2ch012318@zion.cs.uiuc.edu> Author: asl Date: Tue Jan 15 15:40:02 2008 New Revision: 46012 URL: http://llvm.org/viewvc/llvm-project?rev=46012&view=rev Log: Fix JIT encoding of trap/ud2 instruction Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.td Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.td?rev=46012&r1=46011&r2=46012&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86InstrInfo.td (original) +++ llvm/trunk/lib/Target/X86/X86InstrInfo.td Tue Jan 15 15:40:02 2008 @@ -490,8 +490,7 @@ TB; let isBarrier = 1, hasCtrlDep = 1 in { -// FIXME: Should use 0x0F0B opcode -def TRAP : I<0, RawFrm, (outs), (ins), "ud2", [(X86trap)]>; +def TRAP : I<0x0B, RawFrm, (outs), (ins), "ud2", [(X86trap)]>, TB; } //===----------------------------------------------------------------------===// From cfr at adobe.com Tue Jan 15 15:43:17 2008 From: cfr at adobe.com (Chuck Rose III) Date: Tue, 15 Jan 2008 21:43:17 -0000 Subject: [llvm-commits] [llvm] r46013 - in /llvm/trunk: utils/TableGen/CodeGenDAGPatterns.cpp win32/CodeGen/CodeGen.vcproj win32/TableGen/TableGen.vcproj win32/Target/Target.vcproj win32/Transforms/Transforms.vcproj Message-ID: <200801152143.m0FLhHcg012488@zion.cs.uiuc.edu> Author: cfr Date: Tue Jan 15 15:43:17 2008 New Revision: 46013 URL: http://llvm.org/viewvc/llvm-project?rev=46013&view=rev Log: Add files to windows project files. Also include explicitly so that vstudio build works Modified: llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp llvm/trunk/win32/CodeGen/CodeGen.vcproj llvm/trunk/win32/TableGen/TableGen.vcproj llvm/trunk/win32/Target/Target.vcproj llvm/trunk/win32/Transforms/Transforms.vcproj Modified: llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp?rev=46013&r1=46012&r2=46013&view=diff ============================================================================== --- llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp (original) +++ llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp Tue Jan 15 15:43:17 2008 @@ -18,6 +18,7 @@ #include "llvm/Support/Debug.h" #include "llvm/Support/Streams.h" #include +#include using namespace llvm; //===----------------------------------------------------------------------===// Modified: llvm/trunk/win32/CodeGen/CodeGen.vcproj URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/win32/CodeGen/CodeGen.vcproj?rev=46013&r1=46012&r2=46013&view=diff ============================================================================== --- llvm/trunk/win32/CodeGen/CodeGen.vcproj (original) +++ llvm/trunk/win32/CodeGen/CodeGen.vcproj Tue Jan 15 15:43:17 2008 @@ -313,6 +313,10 @@ > + + @@ -397,6 +401,10 @@ > + + @@ -405,6 +413,10 @@ > + + @@ -445,6 +457,10 @@ > + + Modified: llvm/trunk/win32/TableGen/TableGen.vcproj URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/win32/TableGen/TableGen.vcproj?rev=46013&r1=46012&r2=46013&view=diff ============================================================================== --- llvm/trunk/win32/TableGen/TableGen.vcproj (original) +++ llvm/trunk/win32/TableGen/TableGen.vcproj Tue Jan 15 15:43:17 2008 @@ -380,6 +380,14 @@ > + + + + @@ -388,6 +396,10 @@ > + + @@ -442,6 +454,10 @@ > + + @@ -462,6 +478,10 @@ > + + Modified: llvm/trunk/win32/Target/Target.vcproj URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/win32/Target/Target.vcproj?rev=46013&r1=46012&r2=46013&view=diff ============================================================================== --- llvm/trunk/win32/Target/Target.vcproj (original) +++ llvm/trunk/win32/Target/Target.vcproj Tue Jan 15 15:43:17 2008 @@ -375,6 +375,10 @@ > + + Modified: llvm/trunk/win32/Transforms/Transforms.vcproj URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/win32/Transforms/Transforms.vcproj?rev=46013&r1=46012&r2=46013&view=diff ============================================================================== --- llvm/trunk/win32/Transforms/Transforms.vcproj (original) +++ llvm/trunk/win32/Transforms/Transforms.vcproj Tue Jan 15 15:43:17 2008 @@ -496,10 +496,6 @@ > - - From sabre at nondot.org Tue Jan 15 15:58:08 2008 From: sabre at nondot.org (Chris Lattner) Date: Tue, 15 Jan 2008 21:58:08 -0000 Subject: [llvm-commits] [llvm] r46014 - in /llvm/trunk/lib/CodeGen/SelectionDAG: LegalizeDAG.cpp TargetLowering.cpp Message-ID: <200801152158.m0FLw8dn014297@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 15:58:08 2008 New Revision: 46014 URL: http://llvm.org/viewvc/llvm-project?rev=46014&view=rev Log: Add support for targets that have a legal ISD::TRAP. Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=46014&r1=46013&r2=46014&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Tue Jan 15 15:58:08 2008 @@ -3734,24 +3734,29 @@ break; } } - case ISD::TRAP: { + case ISD::TRAP: { MVT::ValueType VT = Node->getValueType(0); switch (TLI.getOperationAction(Node->getOpcode(), VT)) { default: assert(0 && "This action not supported for this op yet!"); + case TargetLowering::Legal: + Tmp1 = LegalizeOp(Node->getOperand(0)); + Result = DAG.UpdateNodeOperands(Result, Tmp1); + break; case TargetLowering::Custom: Result = TLI.LowerOperation(Op, DAG); if (Result.Val) break; // Fall Thru - case TargetLowering::Legal: + case TargetLowering::Expand: // If this operation is not supported, lower it to 'abort()' call - SDOperand Chain = LegalizeOp(Node->getOperand(0)); + Tmp1 = LegalizeOp(Node->getOperand(0)); TargetLowering::ArgListTy Args; std::pair CallResult = - TLI.LowerCallTo(Chain, Type::VoidTy, false, false, CallingConv::C, false, + TLI.LowerCallTo(Tmp1, Type::VoidTy, false, false, CallingConv::C, false, DAG.getExternalSymbol("abort", MVT::Other), Args, DAG); Result = CallResult.second; break; } + break; } } Modified: llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp?rev=46014&r1=46013&r2=46014&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp Tue Jan 15 15:58:08 2008 @@ -175,6 +175,9 @@ setOperationAction(ISD::FGETSIGN, (MVT::ValueType)VT, Expand); } + // Default ISD::TRAP to expand (which turns it into abort). + setOperationAction(ISD::TRAP, MVT::Other, Expand); + IsLittleEndian = TD->isLittleEndian(); UsesGlobalOffsetTable = false; ShiftAmountTy = SetCCResultTy = PointerTy = getValueType(TD->getIntPtrType()); From sabre at nondot.org Tue Jan 15 15:58:22 2008 From: sabre at nondot.org (Chris Lattner) Date: Tue, 15 Jan 2008 21:58:22 -0000 Subject: [llvm-commits] [llvm] r46015 - in /llvm/trunk/lib/Target/X86: X86ISelLowering.cpp X86ISelLowering.h X86InstrInfo.td Message-ID: <200801152158.m0FLwMm6014334@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 15:58:22 2008 New Revision: 46015 URL: http://llvm.org/viewvc/llvm-project?rev=46015&view=rev Log: no need to expand ISD::TRAP to X86ISD::TRAP, just match ISD::TRAP. Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp llvm/trunk/lib/Target/X86/X86ISelLowering.h llvm/trunk/lib/Target/X86/X86InstrInfo.td Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=46015&r1=46014&r2=46015&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Tue Jan 15 15:58:22 2008 @@ -294,7 +294,7 @@ setOperationAction(ISD::TRAMPOLINE, MVT::Other, Custom); - setOperationAction(ISD::TRAP, MVT::Other, Custom); + setOperationAction(ISD::TRAP, MVT::Other, Legal); // VASTART needs to be custom lowered to use the VarArgsFrameIndex setOperationAction(ISD::VASTART , MVT::Other, Custom); @@ -4950,10 +4950,6 @@ ISD::TRUNCATE : ISD::ZERO_EXTEND), VT, RetVal); } -SDOperand X86TargetLowering::LowerTRAP(SDOperand Op, SelectionDAG &DAG) { - return DAG.getNode(X86ISD::TRAP, MVT::Other, Op.getOperand(0)); -} - SDOperand X86TargetLowering::LowerCTLZ(SDOperand Op, SelectionDAG &DAG) { MVT::ValueType VT = Op.getValueType(); MVT::ValueType OpVT = VT; @@ -5058,7 +5054,6 @@ case ISD::FLT_ROUNDS: return LowerFLT_ROUNDS(Op, DAG); case ISD::CTLZ: return LowerCTLZ(Op, DAG); case ISD::CTTZ: return LowerCTTZ(Op, DAG); - case ISD::TRAP: return LowerTRAP(Op, DAG); // FIXME: REMOVE THIS WHEN LegalizeDAGTypes lands. case ISD::READCYCLECOUNTER: @@ -5098,7 +5093,6 @@ case X86ISD::CALL: return "X86ISD::CALL"; case X86ISD::TAILCALL: return "X86ISD::TAILCALL"; case X86ISD::RDTSC_DAG: return "X86ISD::RDTSC_DAG"; - case X86ISD::TRAP: return "X86ISD::TRAP"; case X86ISD::CMP: return "X86ISD::CMP"; case X86ISD::COMI: return "X86ISD::COMI"; case X86ISD::UCOMI: return "X86ISD::UCOMI"; Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.h?rev=46015&r1=46014&r2=46015&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.h (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.h Tue Jan 15 15:58:22 2008 @@ -197,10 +197,7 @@ TC_RETURN, // Store FP control world into i16 memory - FNSTCW16m, - - // Trapping instruction - TRAP + FNSTCW16m }; } @@ -487,7 +484,6 @@ SDOperand LowerEH_RETURN(SDOperand Op, SelectionDAG &DAG); SDOperand LowerTRAMPOLINE(SDOperand Op, SelectionDAG &DAG); SDOperand LowerFLT_ROUNDS(SDOperand Op, SelectionDAG &DAG); - SDOperand LowerTRAP(SDOperand Op, SelectionDAG &DAG); SDOperand LowerCTLZ(SDOperand Op, SelectionDAG &DAG); SDOperand LowerCTTZ(SDOperand Op, SelectionDAG &DAG); SDNode *ExpandFP_TO_SINT(SDNode *N, SelectionDAG &DAG); Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.td?rev=46015&r1=46014&r2=46015&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86InstrInfo.td (original) +++ llvm/trunk/lib/Target/X86/X86InstrInfo.td Tue Jan 15 15:58:22 2008 @@ -57,8 +57,6 @@ def SDT_X86TCRET : SDTypeProfile<0, 2, [SDTCisPtrTy<0>, SDTCisVT<1, i32>]>; -def SDT_X86TRAP : SDTypeProfile<0, 0, []>; - def X86bsf : SDNode<"X86ISD::BSF", SDTIntUnaryOp>; def X86bsr : SDNode<"X86ISD::BSR", SDTIntUnaryOp>; def X86shld : SDNode<"X86ISD::SHLD", SDTIntShiftDOp>; @@ -109,8 +107,9 @@ def X86tcret : SDNode<"X86ISD::TC_RETURN", SDT_X86TCRET, [SDNPHasChain, SDNPOptInFlag]>; -def X86trap : SDNode<"X86ISD::TRAP", SDT_X86TRAP, - [SDNPHasChain, SDNPOutFlag, SDNPSideEffect]>; +def SDT_TRAP : SDTypeProfile<0, 0, []>; +def trap : SDNode<"ISD::TRAP", SDT_TRAP, + [SDNPHasChain, SDNPOutFlag, SDNPSideEffect]>; //===----------------------------------------------------------------------===// // X86 Operand Definitions. @@ -490,7 +489,7 @@ TB; let isBarrier = 1, hasCtrlDep = 1 in { -def TRAP : I<0x0B, RawFrm, (outs), (ins), "ud2", [(X86trap)]>, TB; +def TRAP : I<0x0B, RawFrm, (outs), (ins), "ud2", [(trap)]>, TB; } //===----------------------------------------------------------------------===// From resistor at mac.com Tue Jan 15 16:02:47 2008 From: resistor at mac.com (Owen Anderson) Date: Tue, 15 Jan 2008 22:02:47 -0000 Subject: [llvm-commits] [llvm] r46016 - in /llvm/trunk/lib: CodeGen/LiveVariables.cpp CodeGen/PHIElimination.cpp CodeGen/TwoAddressInstructionPass.cpp Target/ARM/ARMInstrInfo.cpp Message-ID: <200801152202.m0FM2lXc014661@zion.cs.uiuc.edu> Author: resistor Date: Tue Jan 15 16:02:46 2008 New Revision: 46016 URL: http://llvm.org/viewvc/llvm-project?rev=46016&view=rev Log: Remove DefInst from LiveVariables::VarInfo. Use the facilities on MachineRegisterInfo instead. Modified: llvm/trunk/lib/CodeGen/LiveVariables.cpp llvm/trunk/lib/CodeGen/PHIElimination.cpp llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp llvm/trunk/lib/Target/ARM/ARMInstrInfo.cpp Modified: llvm/trunk/lib/CodeGen/LiveVariables.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveVariables.cpp?rev=46016&r1=46015&r2=46016&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/LiveVariables.cpp (original) +++ llvm/trunk/lib/CodeGen/LiveVariables.cpp Tue Jan 15 16:02:46 2008 @@ -43,11 +43,6 @@ static RegisterPass X("livevars", "Live Variable Analysis"); void LiveVariables::VarInfo::dump() const { - cerr << "Register Defined by: "; - if (DefInst) - cerr << *DefInst; - else - cerr << "\n"; cerr << " Alive in blocks: "; for (unsigned i = 0, e = AliveBlocks.size(); i != e; ++i) if (AliveBlocks[i]) cerr << i << ", "; @@ -117,11 +112,13 @@ return false; } -void LiveVariables::MarkVirtRegAliveInBlock(VarInfo &VRInfo, +void LiveVariables::MarkVirtRegAliveInBlock(unsigned reg, MachineBasicBlock *MBB, std::vector &WorkList) { unsigned BBNum = MBB->getNumber(); + VarInfo& VRInfo = getVarInfo(reg); + // Check to see if this basic block is one of the killing blocks. If so, // remove it... for (unsigned i = 0, e = VRInfo.Kills.size(); i != e; ++i) @@ -129,8 +126,9 @@ VRInfo.Kills.erase(VRInfo.Kills.begin()+i); // Erase entry break; } - - if (MBB == VRInfo.DefInst->getParent()) return; // Terminate recursion + + MachineRegisterInfo& MRI = MBB->getParent()->getRegInfo(); + if (MBB == MRI.getVRegDef(reg)->getParent()) return; // Terminate recursion if (VRInfo.AliveBlocks[BBNum]) return; // We already know the block is live @@ -143,24 +141,26 @@ WorkList.push_back(*PI); } -void LiveVariables::MarkVirtRegAliveInBlock(VarInfo &VRInfo, +void LiveVariables::MarkVirtRegAliveInBlock(unsigned reg, MachineBasicBlock *MBB) { std::vector WorkList; - MarkVirtRegAliveInBlock(VRInfo, MBB, WorkList); + MarkVirtRegAliveInBlock(reg, MBB, WorkList); while (!WorkList.empty()) { MachineBasicBlock *Pred = WorkList.back(); WorkList.pop_back(); - MarkVirtRegAliveInBlock(VRInfo, Pred, WorkList); + MarkVirtRegAliveInBlock(reg, Pred, WorkList); } } -void LiveVariables::HandleVirtRegUse(VarInfo &VRInfo, MachineBasicBlock *MBB, +void LiveVariables::HandleVirtRegUse(unsigned reg, MachineBasicBlock *MBB, MachineInstr *MI) { - assert(VRInfo.DefInst && "Register use before def!"); + MachineRegisterInfo& MRI = MBB->getParent()->getRegInfo(); + assert(MRI.getVRegDef(reg) && "Register use before def!"); unsigned BBNum = MBB->getNumber(); + VarInfo& VRInfo = getVarInfo(reg); VRInfo.UsedBlocks[BBNum] = true; VRInfo.NumUses++; @@ -177,7 +177,7 @@ assert(VRInfo.Kills[i]->getParent() != MBB && "entry should be at end!"); #endif - assert(MBB != VRInfo.DefInst->getParent() && + assert(MBB != MRI.getVRegDef(reg)->getParent() && "Should have kill for defblock!"); // Add a new kill entry for this basic block. @@ -190,7 +190,7 @@ // Update all dominating blocks to mark them known live. for (MachineBasicBlock::const_pred_iterator PI = MBB->pred_begin(), E = MBB->pred_end(); PI != E; ++PI) - MarkVirtRegAliveInBlock(VRInfo, *PI); + MarkVirtRegAliveInBlock(reg, *PI); } bool LiveVariables::addRegisterKilled(unsigned IncomingReg, MachineInstr *MI, @@ -489,7 +489,7 @@ MachineOperand &MO = MI->getOperand(i); if (MO.isRegister() && MO.isUse() && MO.getReg()) { if (MRegisterInfo::isVirtualRegister(MO.getReg())){ - HandleVirtRegUse(getVarInfo(MO.getReg()), MBB, MI); + HandleVirtRegUse(MO.getReg(), MBB, MI); } else if (MRegisterInfo::isPhysicalRegister(MO.getReg()) && !ReservedRegisters[MO.getReg()]) { HandlePhysRegUse(MO.getReg(), MI); @@ -503,9 +503,6 @@ if (MO.isRegister() && MO.isDef() && MO.getReg()) { if (MRegisterInfo::isVirtualRegister(MO.getReg())) { VarInfo &VRInfo = getVarInfo(MO.getReg()); - - assert(VRInfo.DefInst == 0 && "Variable multiply defined!"); - VRInfo.DefInst = MI; // Defaults to dead VRInfo.Kills.push_back(MI); } else if (MRegisterInfo::isPhysicalRegister(MO.getReg()) && @@ -525,11 +522,8 @@ for (SmallVector::iterator I = VarInfoVec.begin(), E = VarInfoVec.end(); I != E; ++I) { - VarInfo& VRInfo = getVarInfo(*I); - assert(VRInfo.DefInst && "Register use before def (or no def)!"); - // Only mark it alive only in the block we are representing. - MarkVirtRegAliveInBlock(VRInfo, MBB); + MarkVirtRegAliveInBlock(*I, MBB); } } @@ -566,9 +560,11 @@ // Convert and transfer the dead / killed information we have gathered into // VirtRegInfo onto MI's. // + MachineRegisterInfo& MRI = mf.getRegInfo(); for (unsigned i = 0, e1 = VirtRegInfo.size(); i != e1; ++i) for (unsigned j = 0, e2 = VirtRegInfo[i].Kills.size(); j != e2; ++j) { - if (VirtRegInfo[i].Kills[j] == VirtRegInfo[i].DefInst) + if (VirtRegInfo[i].Kills[j] == MRI.getVRegDef(i + + MRegisterInfo::FirstVirtualRegister)) addRegisterDead(i + MRegisterInfo::FirstVirtualRegister, VirtRegInfo[i].Kills[j], RegInfo); else @@ -612,9 +608,6 @@ MO.setIsDead(false); addVirtualRegisterDead(Reg, NewMI); } - // Update the defining instruction. - if (VI.DefInst == OldMI) - VI.DefInst = NewMI; } if (MO.isKill()) { MO.setIsKill(false); Modified: llvm/trunk/lib/CodeGen/PHIElimination.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PHIElimination.cpp?rev=46016&r1=46015&r2=46016&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/PHIElimination.cpp (original) +++ llvm/trunk/lib/CodeGen/PHIElimination.cpp Tue Jan 15 16:02:46 2008 @@ -165,10 +165,6 @@ LV->addVirtualRegisterDead(DestReg, PHICopy); LV->removeVirtualRegistersDead(MPhi); } - - // Realize that the destination register is defined by the PHI copy now, not - // the PHI itself. - LV->getVarInfo(DestReg).DefInst = PHICopy; LV->getVarInfo(IncomingReg).UsedBlocks[MBB.getNumber()] = true; } Modified: llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp?rev=46016&r1=46015&r2=46016&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp (original) +++ llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp Tue Jan 15 16:02:46 2008 @@ -199,10 +199,6 @@ MachineBasicBlock::iterator prevMi = prior(mi); DOUT << "\t\tprepend:\t"; DEBUG(prevMi->print(*cerr.stream(), &TM)); - // Update live variables for regA - LiveVariables::VarInfo& varInfo = LV.getVarInfo(regA); - varInfo.DefInst = prevMi; - // update live variables for regB LiveVariables::VarInfo& varInfoB = LV.getVarInfo(regB); // regB is used in this BB. Modified: llvm/trunk/lib/Target/ARM/ARMInstrInfo.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrInfo.cpp?rev=46016&r1=46015&r2=46016&view=diff ============================================================================== --- llvm/trunk/lib/Target/ARM/ARMInstrInfo.cpp (original) +++ llvm/trunk/lib/Target/ARM/ARMInstrInfo.cpp Tue Jan 15 16:02:46 2008 @@ -289,9 +289,6 @@ MachineInstr *NewMI = (Reg == WBReg) ? UpdateMI : MemMI; if (MO.isDead()) LV.addVirtualRegisterDead(Reg, NewMI); - // Update the defining instruction. - if (VI.DefInst == MI) - VI.DefInst = NewMI; } if (MO.isUse() && MO.isKill()) { for (unsigned j = 0; j < 2; ++j) { From sabre at nondot.org Tue Jan 15 16:02:55 2008 From: sabre at nondot.org (Chris Lattner) Date: Tue, 15 Jan 2008 22:02:55 -0000 Subject: [llvm-commits] [llvm] r46017 - in /llvm/trunk/lib/Target: ARM/ARMInstrInfo.td ARM/ARMInstrVFP.td Alpha/AlphaInstrInfo.td CellSPU/SPUNodes.td PowerPC/PPCInstrInfo.td TargetSelectionDAG.td X86/X86InstrInfo.td Message-ID: <200801152202.m0FM2tav014687@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 16:02:54 2008 New Revision: 46017 URL: http://llvm.org/viewvc/llvm-project?rev=46017&view=rev Log: rename SDTRet -> SDTNone. Move definition of 'trap' sdnode up from x86 instrinfo to targetselectiondag.td. Modified: llvm/trunk/lib/Target/ARM/ARMInstrInfo.td llvm/trunk/lib/Target/ARM/ARMInstrVFP.td llvm/trunk/lib/Target/Alpha/AlphaInstrInfo.td llvm/trunk/lib/Target/CellSPU/SPUNodes.td llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td llvm/trunk/lib/Target/TargetSelectionDAG.td llvm/trunk/lib/Target/X86/X86InstrInfo.td Modified: llvm/trunk/lib/Target/ARM/ARMInstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrInfo.td?rev=46017&r1=46016&r2=46017&view=diff ============================================================================== --- llvm/trunk/lib/Target/ARM/ARMInstrInfo.td (original) +++ llvm/trunk/lib/Target/ARM/ARMInstrInfo.td Tue Jan 15 16:02:54 2008 @@ -57,7 +57,7 @@ def ARMcall_nolink : SDNode<"ARMISD::CALL_NOLINK", SDT_ARMcall, [SDNPHasChain, SDNPOptInFlag, SDNPOutFlag]>; -def ARMretflag : SDNode<"ARMISD::RET_FLAG", SDTRet, +def ARMretflag : SDNode<"ARMISD::RET_FLAG", SDTNone, [SDNPHasChain, SDNPOptInFlag]>; def ARMcmov : SDNode<"ARMISD::CMOV", SDT_ARMCMov, Modified: llvm/trunk/lib/Target/ARM/ARMInstrVFP.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrVFP.td?rev=46017&r1=46016&r2=46017&view=diff ============================================================================== --- llvm/trunk/lib/Target/ARM/ARMInstrVFP.td (original) +++ llvm/trunk/lib/Target/ARM/ARMInstrVFP.td Tue Jan 15 16:02:54 2008 @@ -79,7 +79,7 @@ def arm_ftosi : SDNode<"ARMISD::FTOSI", SDT_FTOI>; def arm_sitof : SDNode<"ARMISD::SITOF", SDT_ITOF>; def arm_uitof : SDNode<"ARMISD::UITOF", SDT_ITOF>; -def arm_fmstat : SDNode<"ARMISD::FMSTAT", SDTRet, [SDNPInFlag,SDNPOutFlag]>; +def arm_fmstat : SDNode<"ARMISD::FMSTAT", SDTNone, [SDNPInFlag,SDNPOutFlag]>; def arm_cmpfp : SDNode<"ARMISD::CMPFP", SDT_ARMCmp, [SDNPOutFlag]>; def arm_cmpfp0 : SDNode<"ARMISD::CMPFPw0", SDT_CMPFP0, [SDNPOutFlag]>; def arm_fmdrr : SDNode<"ARMISD::FMDRR", SDT_FMDRR>; Modified: llvm/trunk/lib/Target/Alpha/AlphaInstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Alpha/AlphaInstrInfo.td?rev=46017&r1=46016&r2=46017&view=diff ============================================================================== --- llvm/trunk/lib/Target/Alpha/AlphaInstrInfo.td (original) +++ llvm/trunk/lib/Target/Alpha/AlphaInstrInfo.td Tue Jan 15 16:02:54 2008 @@ -26,7 +26,7 @@ def Alpha_gprelhi : SDNode<"AlphaISD::GPRelHi", SDTIntBinOp, []>; def Alpha_rellit : SDNode<"AlphaISD::RelLit", SDTIntBinOp, [SDNPMayLoad]>; -def retflag : SDNode<"AlphaISD::RET_FLAG", SDTRet, +def retflag : SDNode<"AlphaISD::RET_FLAG", SDTNone, [SDNPHasChain, SDNPOptInFlag]>; // These are target-independent nodes, but have target-specific formats. Modified: llvm/trunk/lib/Target/CellSPU/SPUNodes.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/SPUNodes.td?rev=46017&r1=46016&r2=46017&view=diff ============================================================================== --- llvm/trunk/lib/Target/CellSPU/SPUNodes.td (original) +++ llvm/trunk/lib/Target/CellSPU/SPUNodes.td Tue Jan 15 16:02:54 2008 @@ -222,5 +222,5 @@ // instruction scheduling doesn't disassociate them.) //===----------------------------------------------------------------------===// -def retflag : SDNode<"SPUISD::RET_FLAG", SDTRet, +def retflag : SDNode<"SPUISD::RET_FLAG", SDTNone, [SDNPHasChain, SDNPOptInFlag]>; Modified: llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td?rev=46017&r1=46016&r2=46017&view=diff ============================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td (original) +++ llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td Tue Jan 15 16:02:54 2008 @@ -105,13 +105,13 @@ [SDNPHasChain, SDNPOptInFlag, SDNPOutFlag]>; def PPCmtctr : SDNode<"PPCISD::MTCTR", SDT_PPCCall, [SDNPHasChain, SDNPOptInFlag, SDNPOutFlag]>; -def PPCbctrl_Macho : SDNode<"PPCISD::BCTRL_Macho", SDTRet, +def PPCbctrl_Macho : SDNode<"PPCISD::BCTRL_Macho", SDTNone, [SDNPHasChain, SDNPOptInFlag, SDNPOutFlag]>; -def PPCbctrl_ELF : SDNode<"PPCISD::BCTRL_ELF", SDTRet, +def PPCbctrl_ELF : SDNode<"PPCISD::BCTRL_ELF", SDTNone, [SDNPHasChain, SDNPOptInFlag, SDNPOutFlag]>; -def retflag : SDNode<"PPCISD::RET_FLAG", SDTRet, +def retflag : SDNode<"PPCISD::RET_FLAG", SDTNone, [SDNPHasChain, SDNPOptInFlag]>; def PPCvcmp : SDNode<"PPCISD::VCMP" , SDT_PPCvcmp, []>; Modified: llvm/trunk/lib/Target/TargetSelectionDAG.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetSelectionDAG.td?rev=46017&r1=46016&r2=46017&view=diff ============================================================================== --- llvm/trunk/lib/Target/TargetSelectionDAG.td (original) +++ llvm/trunk/lib/Target/TargetSelectionDAG.td Tue Jan 15 16:02:54 2008 @@ -154,7 +154,7 @@ SDTCisPtrTy<0> ]>; -def SDTRet : SDTypeProfile<0, 0, []>; // ret +def SDTNone : SDTypeProfile<0, 0, []>; // ret, trap def SDTLoad : SDTypeProfile<1, 1, [ // load SDTCisPtrTy<1> @@ -311,7 +311,9 @@ def brcond : SDNode<"ISD::BRCOND" , SDTBrcond, [SDNPHasChain]>; def brind : SDNode<"ISD::BRIND" , SDTBrind, [SDNPHasChain]>; def br : SDNode<"ISD::BR" , SDTBr, [SDNPHasChain]>; -def ret : SDNode<"ISD::RET" , SDTRet, [SDNPHasChain]>; +def ret : SDNode<"ISD::RET" , SDTNone, [SDNPHasChain]>; +def trap : SDNode<"ISD::TRAP" , SDTNone, + [SDNPHasChain, SDNPSideEffect]>; // Do not use ld, st directly. Use load, extload, sextload, zextload, store, // and truncst (see below). Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.td?rev=46017&r1=46016&r2=46017&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86InstrInfo.td (original) +++ llvm/trunk/lib/Target/X86/X86InstrInfo.td Tue Jan 15 16:02:54 2008 @@ -107,10 +107,6 @@ def X86tcret : SDNode<"X86ISD::TC_RETURN", SDT_X86TCRET, [SDNPHasChain, SDNPOptInFlag]>; -def SDT_TRAP : SDTypeProfile<0, 0, []>; -def trap : SDNode<"ISD::TRAP", SDT_TRAP, - [SDNPHasChain, SDNPOutFlag, SDNPSideEffect]>; - //===----------------------------------------------------------------------===// // X86 Operand Definitions. // From sabre at nondot.org Tue Jan 15 16:09:33 2008 From: sabre at nondot.org (Chris Lattner) Date: Tue, 15 Jan 2008 22:09:33 -0000 Subject: [llvm-commits] [llvm] r46018 - /llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Message-ID: <200801152209.m0FM9XCH015027@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 16:09:33 2008 New Revision: 46018 URL: http://llvm.org/viewvc/llvm-project?rev=46018&view=rev Log: The type of the 'abort' node should be pointer type (because it's a function pointer) not MVT::Other. This fixes builtin_trap lowering on ppc, alpha, ia64 Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=46018&r1=46017&r2=46018&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Tue Jan 15 16:09:33 2008 @@ -3752,7 +3752,8 @@ TargetLowering::ArgListTy Args; std::pair CallResult = TLI.LowerCallTo(Tmp1, Type::VoidTy, false, false, CallingConv::C, false, - DAG.getExternalSymbol("abort", MVT::Other), Args, DAG); + DAG.getExternalSymbol("abort", TLI.getPointerTy()), + Args, DAG); Result = CallResult.second; break; } From sabre at nondot.org Tue Jan 15 16:15:03 2008 From: sabre at nondot.org (Chris Lattner) Date: Tue, 15 Jan 2008 22:15:03 -0000 Subject: [llvm-commits] [llvm] r46019 - /llvm/trunk/lib/Target/PowerPC/README.txt Message-ID: <200801152215.m0FMF3Nn015390@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 16:15:02 2008 New Revision: 46019 URL: http://llvm.org/viewvc/llvm-project?rev=46019&view=rev Log: If someone wants to implement ppc TRAP, they can go for it :) Modified: llvm/trunk/lib/Target/PowerPC/README.txt Modified: llvm/trunk/lib/Target/PowerPC/README.txt URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/README.txt?rev=46019&r1=46018&r2=46019&view=diff ============================================================================== --- llvm/trunk/lib/Target/PowerPC/README.txt (original) +++ llvm/trunk/lib/Target/PowerPC/README.txt Tue Jan 15 16:15:02 2008 @@ -3,6 +3,7 @@ TODO: * gpr0 allocation * implement do-loop -> bdnz transform +* Implement __builtin_trap (ISD::TRAP) as 'tw 31, 0, 0' aka 'trap'. ===-------------------------------------------------------------------------=== From sabre at nondot.org Tue Jan 15 16:17:33 2008 From: sabre at nondot.org (Chris Lattner) Date: Tue, 15 Jan 2008 22:17:33 -0000 Subject: [llvm-commits] [llvm] r46020 - /llvm/trunk/test/CodeGen/Generic/trap.ll Message-ID: <200801152217.m0FMHXdn015751@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 16:17:26 2008 New Revision: 46020 URL: http://llvm.org/viewvc/llvm-project?rev=46020&view=rev Log: new testcase for llvm.trap. Added: llvm/trunk/test/CodeGen/Generic/trap.ll Added: llvm/trunk/test/CodeGen/Generic/trap.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/trap.ll?rev=46020&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/Generic/trap.ll (added) +++ llvm/trunk/test/CodeGen/Generic/trap.ll Tue Jan 15 16:17:26 2008 @@ -0,0 +1,9 @@ +; RUN: llvm-as < %s | llc +define i32 @test() noreturn nounwind { +entry: + tail call void @llvm.trap( ) + unreachable +} + +declare void @llvm.trap() nounwind + From evan.cheng at apple.com Tue Jan 15 16:19:36 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 15 Jan 2008 22:19:36 -0000 Subject: [llvm-commits] [llvm] r46021 - /llvm/trunk/include/llvm/CodeGen/LiveVariables.h Message-ID: <200801152219.m0FMJaIo015933@zion.cs.uiuc.edu> Author: evancheng Date: Tue Jan 15 16:19:35 2008 New Revision: 46021 URL: http://llvm.org/viewvc/llvm-project?rev=46021&view=rev Log: Unbreak the build. Modified: llvm/trunk/include/llvm/CodeGen/LiveVariables.h Modified: llvm/trunk/include/llvm/CodeGen/LiveVariables.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/LiveVariables.h?rev=46021&r1=46020&r2=46021&view=diff ============================================================================== --- llvm/trunk/include/llvm/CodeGen/LiveVariables.h (original) +++ llvm/trunk/include/llvm/CodeGen/LiveVariables.h Tue Jan 15 16:19:35 2008 @@ -303,10 +303,10 @@ /// register. VarInfo &getVarInfo(unsigned RegIdx); - void MarkVirtRegAliveInBlock(VarInfo &VRInfo, MachineBasicBlock *BB); - void MarkVirtRegAliveInBlock(VarInfo &VRInfo, MachineBasicBlock *BB, + void MarkVirtRegAliveInBlock(unsigned reg, MachineBasicBlock *BB); + void MarkVirtRegAliveInBlock(unsigned reg, MachineBasicBlock *BB, std::vector &WorkList); - void HandleVirtRegUse(VarInfo &VRInfo, MachineBasicBlock *MBB, + void HandleVirtRegUse(unsigned reg, MachineBasicBlock *MBB, MachineInstr *MI); }; From resistor at mac.com Tue Jan 15 16:21:31 2008 From: resistor at mac.com (Owen Anderson) Date: Tue, 15 Jan 2008 16:21:31 -0600 Subject: [llvm-commits] [llvm] r46021 - /llvm/trunk/include/llvm/CodeGen/LiveVariables.h In-Reply-To: <200801152219.m0FMJaIo015933@zion.cs.uiuc.edu> References: <200801152219.m0FMJaIo015933@zion.cs.uiuc.edu> Message-ID: <05D71C9D-DD25-48B9-A814-E24AF393B3BF@mac.com> Ach, sorry. --Owen On Jan 15, 2008, at 4:19 PM, Evan Cheng wrote: > Author: evancheng > Date: Tue Jan 15 16:19:35 2008 > New Revision: 46021 > > URL: http://llvm.org/viewvc/llvm-project?rev=46021&view=rev > Log: > Unbreak the build. > > Modified: > llvm/trunk/include/llvm/CodeGen/LiveVariables.h > > Modified: llvm/trunk/include/llvm/CodeGen/LiveVariables.h > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/LiveVariables.h?rev=46021&r1=46020&r2=46021&view=diff > > = > = > = > = > = > = > = > = > ====================================================================== > --- llvm/trunk/include/llvm/CodeGen/LiveVariables.h (original) > +++ llvm/trunk/include/llvm/CodeGen/LiveVariables.h Tue Jan 15 > 16:19:35 2008 > @@ -303,10 +303,10 @@ > /// register. > VarInfo &getVarInfo(unsigned RegIdx); > > - void MarkVirtRegAliveInBlock(VarInfo &VRInfo, MachineBasicBlock > *BB); > - void MarkVirtRegAliveInBlock(VarInfo &VRInfo, MachineBasicBlock > *BB, > + void MarkVirtRegAliveInBlock(unsigned reg, MachineBasicBlock *BB); > + void MarkVirtRegAliveInBlock(unsigned reg, MachineBasicBlock *BB, > std::vector > &WorkList); > - void HandleVirtRegUse(VarInfo &VRInfo, MachineBasicBlock *MBB, > + void HandleVirtRegUse(unsigned reg, MachineBasicBlock *MBB, > MachineInstr *MI); > }; > > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 2555 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20080115/8930edf9/attachment.bin From sabre at nondot.org Tue Jan 15 16:22:03 2008 From: sabre at nondot.org (Chris Lattner) Date: Tue, 15 Jan 2008 22:22:03 -0000 Subject: [llvm-commits] [llvm] r46023 - /llvm/trunk/test/CodeGen/X86/trap.ll Message-ID: <200801152222.m0FMM3xK016120@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 16:22:02 2008 New Revision: 46023 URL: http://llvm.org/viewvc/llvm-project?rev=46023&view=rev Log: verify x86 generates ud2 for llvm.trap Added: llvm/trunk/test/CodeGen/X86/trap.ll Added: llvm/trunk/test/CodeGen/X86/trap.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/trap.ll?rev=46023&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/X86/trap.ll (added) +++ llvm/trunk/test/CodeGen/X86/trap.ll Tue Jan 15 16:22:02 2008 @@ -0,0 +1,9 @@ +; RUN: llvm-as < %s | llc -march=x86 -mcpu=yonah | grep ud2 +define i32 @test() noreturn nounwind { +entry: + tail call void @llvm.trap( ) + unreachable +} + +declare void @llvm.trap() nounwind + From clattner at apple.com Tue Jan 15 16:27:13 2008 From: clattner at apple.com (Chris Lattner) Date: Tue, 15 Jan 2008 14:27:13 -0800 Subject: [llvm-commits] [llvm] r46016 - in /llvm/trunk/lib: CodeGen/LiveVariables.cpp CodeGen/PHIElimination.cpp CodeGen/TwoAddressInstructionPass.cpp Target/ARM/ARMInstrInfo.cpp In-Reply-To: <200801152202.m0FM2lXc014661@zion.cs.uiuc.edu> References: <200801152202.m0FM2lXc014661@zion.cs.uiuc.edu> Message-ID: On Jan 15, 2008, at 2:02 PM, Owen Anderson wrote: > URL: http://llvm.org/viewvc/llvm-project?rev=46016&view=rev > Log: > Remove DefInst from LiveVariables::VarInfo. Use the facilities on > MachineRegisterInfo instead. Woot, > +void LiveVariables::MarkVirtRegAliveInBlock(unsigned reg, > MachineBasicBlock *MBB, > std::vector > &WorkList) { > unsigned BBNum = MBB->getNumber(); > > + VarInfo& VRInfo = getVarInfo(reg); > + > // Check to see if this basic block is one of the killing blocks. > If so, > // remove it... > for (unsigned i = 0, e = VRInfo.Kills.size(); i != e; ++i) > @@ -129,8 +126,9 @@ > VRInfo.Kills.erase(VRInfo.Kills.begin()+i); // Erase entry > break; > } > + > + MachineRegisterInfo& MRI = MBB->getParent()->getRegInfo(); > + if (MBB == MRI.getVRegDef(reg)->getParent()) return; // > Terminate recursion This is a performance sensitive routine, how about passing the defining MBB down so that you only call getVRegDef once per vreg, instead of once per block is it live across? -Chris From asl at math.spbu.ru Tue Jan 15 16:31:35 2008 From: asl at math.spbu.ru (Anton Korobeynikov) Date: Tue, 15 Jan 2008 22:31:35 -0000 Subject: [llvm-commits] [llvm] r46024 - /llvm/trunk/docs/LangRef.html Message-ID: <200801152231.m0FMVaLM016815@zion.cs.uiuc.edu> Author: asl Date: Tue Jan 15 16:31:34 2008 New Revision: 46024 URL: http://llvm.org/viewvc/llvm-project?rev=46024&view=rev Log: Add description of 'llvm.trap' intrinsic. Also, minor fixes in formatting. Modified: llvm/trunk/docs/LangRef.html Modified: llvm/trunk/docs/LangRef.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/LangRef.html?rev=46024&r1=46023&r2=46024&view=diff ============================================================================== --- llvm/trunk/docs/LangRef.html (original) +++ llvm/trunk/docs/LangRef.html Tue Jan 15 16:31:34 2008 @@ -208,10 +208,10 @@
  1. llvm.var.annotation' Intrinsic
  2. -
-
  1. llvm.annotation.*' Intrinsic
  2. +
  3. + llvm.trap' Intrinsic
@@ -5238,10 +5238,11 @@
Semantics:

-This intrinsic allows annotation of local variables with arbitrary strings. +This intrinsic allows annotation of local variables with arbitrary strings. This can be useful for special purpose optimizations that want to look for these - annotations. These have no other defined use, they are ignored by code - generation and optimization. +annotations. These have no other defined use, they are ignored by code +generation and optimization. +

@@ -5287,6 +5288,39 @@ are ignored by code generation and optimization. + + + +
+ +
Syntax:
+
+  declare void @llvm.trap()
+
+ +
Overview:
+ +

+The 'llvm.trap' intrinsic +

+ +
Arguments:
+ +

+None +

+ +
Semantics:
+ +

+This intrinsics is lowered to the target dependent trap instruction. If the +target does not have a trap instruction, this intrinsic will be lowered to the +call of the abort() function. +

+
+
From sabre at nondot.org Tue Jan 15 16:38:15 2008 From: sabre at nondot.org (Chris Lattner) Date: Tue, 15 Jan 2008 22:38:15 -0000 Subject: [llvm-commits] [llvm] r46025 - /llvm/trunk/test/Transforms/ArgumentPromotion/byval-2.ll Message-ID: <200801152238.m0FMcFce017346@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 16:38:12 2008 New Revision: 46025 URL: http://llvm.org/viewvc/llvm-project?rev=46025&view=rev Log: add a test to ensure that argpromote of one argument doesn't break the byval attr on some other argument. Added: llvm/trunk/test/Transforms/ArgumentPromotion/byval-2.ll Added: llvm/trunk/test/Transforms/ArgumentPromotion/byval-2.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/ArgumentPromotion/byval-2.ll?rev=46025&view=auto ============================================================================== --- llvm/trunk/test/Transforms/ArgumentPromotion/byval-2.ll (added) +++ llvm/trunk/test/Transforms/ArgumentPromotion/byval-2.ll Tue Jan 15 16:38:12 2008 @@ -0,0 +1,26 @@ +; RUN: llvm-as < %s | opt -argpromotion | llvm-dis | grep -F {i32* byval} | count 2 +; Argpromote + scalarrepl should change this to passing the two integers by value. + + %struct.ss = type { i32, i64 } + +define internal void @f(%struct.ss* byval %b, i32* byval %X) nounwind { +entry: + %tmp = getelementptr %struct.ss* %b, i32 0, i32 0 + %tmp1 = load i32* %tmp, align 4 + %tmp2 = add i32 %tmp1, 1 + store i32 %tmp2, i32* %tmp, align 4 + + store i32 0, i32* %X + ret void +} + +define i32 @test(i32* %X) { +entry: + %S = alloca %struct.ss ; <%struct.ss*> [#uses=4] + %tmp1 = getelementptr %struct.ss* %S, i32 0, i32 0 ; [#uses=1] + store i32 1, i32* %tmp1, align 8 + %tmp4 = getelementptr %struct.ss* %S, i32 0, i32 1 ; [#uses=1] + store i64 2, i64* %tmp4, align 4 + call void @f( %struct.ss* byval %S, i32* byval %X) + ret i32 0 +} From clattner at apple.com Tue Jan 15 16:48:12 2008 From: clattner at apple.com (Chris Lattner) Date: Tue, 15 Jan 2008 14:48:12 -0800 Subject: [llvm-commits] [llvm] r45850 - /llvm/trunk/lib/VMCore/Verifier.cpp In-Reply-To: <200801130918.48618.baldrick@free.fr> References: <200801110213.m0B2DBvu014340@zion.cs.uiuc.edu> <200801110743.18251.duncan.sands@math.u-psud.fr> <1859DD11-2B75-4134-A90A-E5345473F774@apple.com> <200801130918.48618.baldrick@free.fr> Message-ID: On Jan 13, 2008, at 12:18 AM, Duncan Sands wrote: >>> there are some issues that need to be fixed: >>> (1) the asm parser drops parameter attributes specified on the >>> varargs >>> part of a call/invoke; >>> (2) when the DAE pass drops varargs call arguments, the parameter >>> attributes need to be trimmed, since otherwise you can have >>> attributes >>> that don't correspond to a call argument any more; >>> (3) when instcombine resolves calls to a bitcast of a function into >>> a direct call, then parameter attributes will be lost on any varargs >>> part of a call. > > These are all done. > >> One more. When llvm-extract remove a function with byval parameters, >> it also drops the attribute. > > I don't know what llvm-extract is, so how about I leave that to you :) I'll let evan deal with this one too :) > There is one more problem place: ArgumentPromotion. After rewriting a > function, it rewrites all calls to the function, but doesn't adjust > their > parameter attributes. ArgPromotion does do this, and I added a testcase to verify it. It looks like it recomputes the Function's param attrs perfectly and just applies that attr list to all calls. -Chris From sabre at nondot.org Tue Jan 15 16:50:51 2008 From: sabre at nondot.org (Chris Lattner) Date: Tue, 15 Jan 2008 22:50:51 -0000 Subject: [llvm-commits] [llvm] r46026 - in /llvm/trunk: Makefile.config.in lib/VMCore/Makefile Message-ID: <200801152250.m0FMop2w018551@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 16:50:50 2008 New Revision: 46026 URL: http://llvm.org/viewvc/llvm-project?rev=46026&view=rev Log: improve compatibility with mingw, patch by Alain Frisch Modified: llvm/trunk/Makefile.config.in llvm/trunk/lib/VMCore/Makefile Modified: llvm/trunk/Makefile.config.in URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile.config.in?rev=46026&r1=46025&r2=46026&view=diff ============================================================================== --- llvm/trunk/Makefile.config.in (original) +++ llvm/trunk/Makefile.config.in Tue Jan 15 16:50:50 2008 @@ -265,3 +265,11 @@ ALL_BINDINGS := @ALL_BINDINGS@ OCAML_LIBDIR := @OCAML_LIBDIR@ +# When compiling under Mingw/Cygwin, executables such as tblgen +# expect Windows paths, whereas the build system uses Unix paths. +# The function SYSPATH transforms Unix paths into Windows paths. +ifneq (,$(findstring -mno-cygwin, $(CXX))) + SYSPATH = $(shell echo $(1) | cygpath -m -f -) +else + SYSPATH = $(1) +endif Modified: llvm/trunk/lib/VMCore/Makefile URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Makefile?rev=46026&r1=46025&r2=46026&view=diff ============================================================================== --- llvm/trunk/lib/VMCore/Makefile (original) +++ llvm/trunk/lib/VMCore/Makefile Tue Jan 15 16:50:50 2008 @@ -21,7 +21,7 @@ $(ObjDir)/Intrinsics.gen.tmp: $(ObjDir)/.dir $(INTRINSICTDS) $(TBLGEN) $(Echo) Building Intrinsics.gen.tmp from Intrinsics.td - $(Verb) $(TableGen) $(INTRINSICTD) -o $@ -gen-intrinsic + $(Verb) $(TableGen) $(call SYSPATH, $(INTRINSICTD)) -o $(call SYSPATH, $@) -gen-intrinsic $(GENFILE): $(ObjDir)/Intrinsics.gen.tmp $(Verb) $(CMP) -s $@ $< || ( $(CP) $< $@ && \ From clattner at apple.com Tue Jan 15 16:50:57 2008 From: clattner at apple.com (Chris Lattner) Date: Tue, 15 Jan 2008 14:50:57 -0800 Subject: [llvm-commits] Patch for compiling with Mingw/Cygwin In-Reply-To: <478C4BAB.1080008@frisch.fr> References: <47824F79.6040700@frisch.fr> <478B23AA.1020703@frisch.fr> <478C4BAB.1080008@frisch.fr> Message-ID: <093B4CAB-7A4B-4C2B-83A4-AAADAFEFAB21@apple.com> On Jan 14, 2008, at 9:59 PM, Alain Frisch wrote: > Chris Lattner wrote: >> Okay, this looks really good. One final question before I commit: >> why does tblgen want a windows path instead of a unix path? Can >> that be fixed in tblgen? Doesn't this affect llvm-as and all other >> tools? > > When we compile with Mingw/Cygwin, we want to produce plain Win32 > programs and libraries that don't depend on the cygwin DLL to > resolve filenames, so it is normal that tools such as llvm-as don't > accept unix paths. This is exactly the same as for the normal Mingw > case. The difference with Mingw here is that the build system > (make), being a Cygwin program, works with unix paths, so some > translation is needed. Ok, makes sense, thanks! -Chris From alain at frisch.fr Tue Jan 15 16:52:44 2008 From: alain at frisch.fr (Alain Frisch) Date: Tue, 15 Jan 2008 23:52:44 +0100 Subject: [llvm-commits] [llvm] r46026 - in /llvm/trunk: Makefile.config.in lib/VMCore/Makefile In-Reply-To: <200801152250.m0FMop2w018551@zion.cs.uiuc.edu> References: <200801152250.m0FMop2w018551@zion.cs.uiuc.edu> Message-ID: <478D393C.9070009@frisch.fr> Chris Lattner wrote: > Author: lattner > Date: Tue Jan 15 16:50:50 2008 > New Revision: 46026 > > URL: http://llvm.org/viewvc/llvm-project?rev=46026&view=rev > Log: > improve compatibility with mingw, patch by Alain Frisch > > Modified: > llvm/trunk/Makefile.config.in > llvm/trunk/lib/VMCore/Makefile Great, thanks! (To make it work, note that Makefile.rules also needs to be patched.) -- Alain From resistor at mac.com Tue Jan 15 16:58:12 2008 From: resistor at mac.com (Owen Anderson) Date: Tue, 15 Jan 2008 22:58:12 -0000 Subject: [llvm-commits] [llvm] r46027 - in /llvm/trunk: include/llvm/CodeGen/LiveVariables.h lib/CodeGen/LiveVariables.cpp Message-ID: <200801152258.m0FMwCHd019131@zion.cs.uiuc.edu> Author: resistor Date: Tue Jan 15 16:58:11 2008 New Revision: 46027 URL: http://llvm.org/viewvc/llvm-project?rev=46027&view=rev Log: Move some calls to getVRegDef higher in the callgraph, so they don't get executed as frequently in performance sensitive code. Modified: llvm/trunk/include/llvm/CodeGen/LiveVariables.h llvm/trunk/lib/CodeGen/LiveVariables.cpp Modified: llvm/trunk/include/llvm/CodeGen/LiveVariables.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/LiveVariables.h?rev=46027&r1=46026&r2=46027&view=diff ============================================================================== --- llvm/trunk/include/llvm/CodeGen/LiveVariables.h (original) +++ llvm/trunk/include/llvm/CodeGen/LiveVariables.h Tue Jan 15 16:58:11 2008 @@ -303,8 +303,10 @@ /// register. VarInfo &getVarInfo(unsigned RegIdx); - void MarkVirtRegAliveInBlock(unsigned reg, MachineBasicBlock *BB); - void MarkVirtRegAliveInBlock(unsigned reg, MachineBasicBlock *BB, + void MarkVirtRegAliveInBlock(VarInfo& VRInfo, MachineBasicBlock* DefBlock, + MachineBasicBlock *BB); + void MarkVirtRegAliveInBlock(VarInfo& VRInfo, MachineBasicBlock* DefBlock, + MachineBasicBlock *BB, std::vector &WorkList); void HandleVirtRegUse(unsigned reg, MachineBasicBlock *MBB, MachineInstr *MI); Modified: llvm/trunk/lib/CodeGen/LiveVariables.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveVariables.cpp?rev=46027&r1=46026&r2=46027&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/LiveVariables.cpp (original) +++ llvm/trunk/lib/CodeGen/LiveVariables.cpp Tue Jan 15 16:58:11 2008 @@ -112,12 +112,11 @@ return false; } -void LiveVariables::MarkVirtRegAliveInBlock(unsigned reg, +void LiveVariables::MarkVirtRegAliveInBlock(VarInfo& VRInfo, + MachineBasicBlock *DefBlock, MachineBasicBlock *MBB, std::vector &WorkList) { unsigned BBNum = MBB->getNumber(); - - VarInfo& VRInfo = getVarInfo(reg); // Check to see if this basic block is one of the killing blocks. If so, // remove it... @@ -127,8 +126,7 @@ break; } - MachineRegisterInfo& MRI = MBB->getParent()->getRegInfo(); - if (MBB == MRI.getVRegDef(reg)->getParent()) return; // Terminate recursion + if (MBB == DefBlock) return; // Terminate recursion if (VRInfo.AliveBlocks[BBNum]) return; // We already know the block is live @@ -141,14 +139,15 @@ WorkList.push_back(*PI); } -void LiveVariables::MarkVirtRegAliveInBlock(unsigned reg, +void LiveVariables::MarkVirtRegAliveInBlock(VarInfo& VRInfo, + MachineBasicBlock *DefBlock, MachineBasicBlock *MBB) { std::vector WorkList; - MarkVirtRegAliveInBlock(reg, MBB, WorkList); + MarkVirtRegAliveInBlock(VRInfo, DefBlock, MBB, WorkList); while (!WorkList.empty()) { MachineBasicBlock *Pred = WorkList.back(); WorkList.pop_back(); - MarkVirtRegAliveInBlock(reg, Pred, WorkList); + MarkVirtRegAliveInBlock(VRInfo, DefBlock, Pred, WorkList); } } @@ -190,7 +189,7 @@ // Update all dominating blocks to mark them known live. for (MachineBasicBlock::const_pred_iterator PI = MBB->pred_begin(), E = MBB->pred_end(); PI != E; ++PI) - MarkVirtRegAliveInBlock(reg, *PI); + MarkVirtRegAliveInBlock(VRInfo, MRI.getVRegDef(reg)->getParent(), *PI); } bool LiveVariables::addRegisterKilled(unsigned IncomingReg, MachineInstr *MI, @@ -432,6 +431,7 @@ bool LiveVariables::runOnMachineFunction(MachineFunction &mf) { MF = &mf; RegInfo = MF->getTarget().getRegisterInfo(); + MachineRegisterInfo& MRI = mf.getRegInfo(); assert(RegInfo && "Target doesn't have register information?"); ReservedRegisters = RegInfo->getReservedRegs(mf); @@ -523,7 +523,8 @@ for (SmallVector::iterator I = VarInfoVec.begin(), E = VarInfoVec.end(); I != E; ++I) { // Only mark it alive only in the block we are representing. - MarkVirtRegAliveInBlock(*I, MBB); + MarkVirtRegAliveInBlock(getVarInfo(*I), MRI.getVRegDef(*I)->getParent(), + MBB); } } @@ -560,7 +561,6 @@ // Convert and transfer the dead / killed information we have gathered into // VirtRegInfo onto MI's. // - MachineRegisterInfo& MRI = mf.getRegInfo(); for (unsigned i = 0, e1 = VirtRegInfo.size(); i != e1; ++i) for (unsigned j = 0, e2 = VirtRegInfo[i].Kills.size(); j != e2; ++j) { if (VirtRegInfo[i].Kills[j] == MRI.getVRegDef(i + From dalej at apple.com Tue Jan 15 17:20:18 2008 From: dalej at apple.com (Dale Johannesen) Date: Tue, 15 Jan 2008 23:20:18 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46028 - /llvm-gcc-4.2/trunk/gcc/tree-eh.c Message-ID: <200801152320.m0FNKIaR021154@zion.cs.uiuc.edu> Author: johannes Date: Tue Jan 15 17:20:17 2008 New Revision: 46028 URL: http://llvm.org/viewvc/llvm-project?rev=46028&view=rev Log: Use 64 bits for "save_filt" temps on 64-bit targets. LLVM uses 64 bits for these and they need to match. Modified: llvm-gcc-4.2/trunk/gcc/tree-eh.c Modified: llvm-gcc-4.2/trunk/gcc/tree-eh.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/tree-eh.c?rev=46028&r1=46027&r2=46028&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/tree-eh.c (original) +++ llvm-gcc-4.2/trunk/gcc/tree-eh.c Tue Jan 15 17:20:17 2008 @@ -838,14 +838,22 @@ tree save_eptr, save_filt; save_eptr = create_tmp_var (ptr_type_node, "save_eptr"); +#if ENABLE_LLVM + /* LLVM exceptions use 64 bits for these on 64-bit targets. */ + save_filt = create_tmp_var (long_integer_type_node, "save_filt"); +#else save_filt = create_tmp_var (integer_type_node, "save_filt"); - +#endif i = tsi_start (finally); x = build0 (EXC_PTR_EXPR, ptr_type_node); x = build2 (MODIFY_EXPR, void_type_node, save_eptr, x); tsi_link_before (&i, x, TSI_CONTINUE_LINKING); +#if ENABLE_LLVM + x = build0 (FILTER_EXPR, long_integer_type_node); +#else x = build0 (FILTER_EXPR, integer_type_node); +#endif x = build2 (MODIFY_EXPR, void_type_node, save_filt, x); tsi_link_before (&i, x, TSI_CONTINUE_LINKING); @@ -854,7 +862,11 @@ x = build2 (MODIFY_EXPR, void_type_node, x, save_eptr); tsi_link_after (&i, x, TSI_CONTINUE_LINKING); +#if ENABLE_LLVM + x = build0 (FILTER_EXPR, long_integer_type_node); +#else x = build0 (FILTER_EXPR, integer_type_node); +#endif x = build2 (MODIFY_EXPR, void_type_node, x, save_filt); tsi_link_after (&i, x, TSI_CONTINUE_LINKING); From dalej at apple.com Tue Jan 15 17:24:56 2008 From: dalej at apple.com (Dale Johannesen) Date: Tue, 15 Jan 2008 23:24:56 -0000 Subject: [llvm-commits] [llvm] r46029 - in /llvm/trunk: include/llvm/Target/TargetAsmInfo.h lib/CodeGen/DwarfWriter.cpp lib/Target/PowerPC/PPCTargetAsmInfo.cpp lib/Target/X86/X86AsmPrinter.cpp lib/Target/X86/X86TargetAsmInfo.cpp Message-ID: <200801152324.m0FNOuIE021598@zion.cs.uiuc.edu> Author: johannes Date: Tue Jan 15 17:24:56 2008 New Revision: 46029 URL: http://llvm.org/viewvc/llvm-project?rev=46029&view=rev Log: Fix and enable EH for x86-64 Darwin. Adds ShortenEHDataFor64Bits as a not-very-accurate abstraction to cover all the changes in DwarfWriter. Some cosmetic changes to Darwin assembly code for gcc testsuite compatibility. Modified: llvm/trunk/include/llvm/Target/TargetAsmInfo.h llvm/trunk/lib/CodeGen/DwarfWriter.cpp llvm/trunk/lib/Target/PowerPC/PPCTargetAsmInfo.cpp llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp llvm/trunk/lib/Target/X86/X86TargetAsmInfo.cpp Modified: llvm/trunk/include/llvm/Target/TargetAsmInfo.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetAsmInfo.h?rev=46029&r1=46028&r2=46029&view=diff ============================================================================== --- llvm/trunk/include/llvm/Target/TargetAsmInfo.h (original) +++ llvm/trunk/include/llvm/Target/TargetAsmInfo.h Tue Jan 15 17:24:56 2008 @@ -313,6 +313,10 @@ /// handle a weak_definition of constant 0 for an omitted EH frame. bool SupportsWeakOmittedEHFrame; // Defaults to true. + /// ShortenEHDataON64Bit - True if target exception table format requires + /// 32-bit data in certain places even when targeting 64-bits. + bool ShortenEHDataOn64Bit; // Defaults to false. + /// DwarfSectionOffsetDirective - Special section offset directive. const char* DwarfSectionOffsetDirective; // Defaults to NULL @@ -592,6 +596,9 @@ bool getSupportsWeakOmittedEHFrame() const { return SupportsWeakOmittedEHFrame; } + bool getShortenEHDataOn64Bit() const { + return ShortenEHDataOn64Bit; + } const char *getDwarfSectionOffsetDirective() const { return DwarfSectionOffsetDirective; } Modified: llvm/trunk/lib/CodeGen/DwarfWriter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/DwarfWriter.cpp?rev=46029&r1=46028&r2=46029&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/DwarfWriter.cpp (original) +++ llvm/trunk/lib/CodeGen/DwarfWriter.cpp Tue Jan 15 17:24:56 2008 @@ -2835,11 +2835,13 @@ Asm->EOL("Personality (pcrel sdata4 indirect)"); - PrintRelDirective(); + PrintRelDirective(TAI->getShortenEHDataOn64Bit()); O << TAI->getPersonalityPrefix(); Asm->EmitExternalGlobal((const GlobalVariable *)(Personality)); O << TAI->getPersonalitySuffix(); - O << "-" << TAI->getPCSymbol(); + if (!TAI->getShortenEHDataOn64Bit()) { + O << "-" << TAI->getPCSymbol(); + } Asm->EOL("Personality"); Asm->EmitULEB128Bytes(DW_EH_PE_pcrel); @@ -2917,7 +2919,7 @@ // If there is a personality and landing pads then point to the language // specific data area in the exception table. if (EHFrameInfo.PersonalityIndex) { - Asm->EmitULEB128Bytes(4); + Asm->EmitULEB128Bytes(TAI->getShortenEHDataOn64Bit() ? 8 : 4); Asm->EOL("Augmentation size"); if (EHFrameInfo.hasLandingPads) { @@ -3284,24 +3286,26 @@ } EmitSectionOffset(BeginTag, "eh_func_begin", BeginNumber, SubprogramCount, - false, true); + TAI->getShortenEHDataOn64Bit(), true); Asm->EOL("Region start"); if (!S.EndLabel) { - EmitDifference("eh_func_end", SubprogramCount, BeginTag, BeginNumber); + EmitDifference("eh_func_end", SubprogramCount, BeginTag, BeginNumber, + TAI->getShortenEHDataOn64Bit()); } else { - EmitDifference("label", S.EndLabel, BeginTag, BeginNumber); + EmitDifference("label", S.EndLabel, BeginTag, BeginNumber, + TAI->getShortenEHDataOn64Bit()); } Asm->EOL("Region length"); if (!S.PadLabel) { - if (TD->getPointerSize() == sizeof(int32_t)) + if (TD->getPointerSize() == sizeof(int32_t) || TAI->getShortenEHDataOn64Bit()) Asm->EmitInt32(0); else Asm->EmitInt64(0); } else { EmitSectionOffset("label", "eh_func_begin", S.PadLabel, SubprogramCount, - false, true); + TAI->getShortenEHDataOn64Bit(), true); } Asm->EOL("Landing pad"); Modified: llvm/trunk/lib/Target/PowerPC/PPCTargetAsmInfo.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCTargetAsmInfo.cpp?rev=46029&r1=46028&r2=46029&view=diff ============================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCTargetAsmInfo.cpp (original) +++ llvm/trunk/lib/Target/PowerPC/PPCTargetAsmInfo.cpp Tue Jan 15 17:24:56 2008 @@ -50,6 +50,7 @@ StaticCtorsSection = ".mod_init_func"; StaticDtorsSection = ".mod_term_func"; } + SwitchToSectionDirective = "\t.section "; UsedDirective = "\t.no_dead_strip\t"; WeakDefDirective = "\t.weak_definition "; WeakRefDirective = "\t.weak_reference "; Modified: llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp?rev=46029&r1=46028&r2=46029&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp (original) +++ llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp Tue Jan 15 17:24:56 2008 @@ -358,7 +358,8 @@ O << "\n"; - if (ExceptionHandling && TAI->doesSupportExceptionHandling() && MMI) { + if (ExceptionHandling && TAI->doesSupportExceptionHandling() && MMI && + !Subtarget->is64Bit()) { // Add the (possibly multiple) personalities to the set of global values. const std::vector& Personalities = MMI->getPersonalities(); Modified: llvm/trunk/lib/Target/X86/X86TargetAsmInfo.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86TargetAsmInfo.cpp?rev=46029&r1=46028&r2=46029&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86TargetAsmInfo.cpp (original) +++ llvm/trunk/lib/Target/X86/X86TargetAsmInfo.cpp Tue Jan 15 17:24:56 2008 @@ -59,6 +59,7 @@ SixteenByteConstantSection = "\t.literal16\n"; ReadOnlySection = "\t.const\n"; LCOMMDirective = "\t.lcomm\t"; + SwitchToSectionDirective = "\t.section "; COMMDirectiveTakesAlignment = false; HasDotTypeDotSizeDirective = false; if (TM.getRelocationModel() == Reloc::Static) { @@ -68,8 +69,13 @@ StaticCtorsSection = ".mod_init_func"; StaticDtorsSection = ".mod_term_func"; } - PersonalityPrefix = "L"; - PersonalitySuffix = "$non_lazy_ptr"; + if (Subtarget->is64Bit()) { + PersonalityPrefix = ""; + PersonalitySuffix = "+4 at GOTPCREL"; + } else { + PersonalityPrefix = "L"; + PersonalitySuffix = "$non_lazy_ptr"; + } NeedsIndirectEncoding = true; InlineAsmStart = "# InlineAsm Start"; InlineAsmEnd = "# InlineAsm End"; @@ -102,11 +108,12 @@ DwarfMacInfoSection = ".section __DWARF,__debug_macinfo,regular,debug"; // Exceptions handling - if (!Subtarget->is64Bit()) - SupportsExceptionHandling = true; + SupportsExceptionHandling = true; GlobalEHDirective = "\t.globl\t"; SupportsWeakOmittedEHFrame = false; AbsoluteEHSectionOffsets = false; + if (Subtarget->is64Bit()) + ShortenEHDataOn64Bit = true; DwarfEHFrameSection = ".section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support"; DwarfExceptionSection = ".section __DATA,__gcc_except_tab"; From dalej at apple.com Tue Jan 15 17:25:27 2008 From: dalej at apple.com (Dale Johannesen) Date: Tue, 15 Jan 2008 23:25:27 -0000 Subject: [llvm-commits] [llvm] r46030 - /llvm/trunk/lib/Target/TargetAsmInfo.cpp Message-ID: <200801152325.m0FNPRuv021629@zion.cs.uiuc.edu> Author: johannes Date: Tue Jan 15 17:25:27 2008 New Revision: 46030 URL: http://llvm.org/viewvc/llvm-project?rev=46030&view=rev Log: Missed file from previous checkin. Modified: llvm/trunk/lib/Target/TargetAsmInfo.cpp Modified: llvm/trunk/lib/Target/TargetAsmInfo.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetAsmInfo.cpp?rev=46030&r1=46029&r2=46030&view=diff ============================================================================== --- llvm/trunk/lib/Target/TargetAsmInfo.cpp (original) +++ llvm/trunk/lib/Target/TargetAsmInfo.cpp Tue Jan 15 17:25:27 2008 @@ -87,6 +87,7 @@ DwarfRequiresFrameSection(true), GlobalEHDirective(0), SupportsWeakOmittedEHFrame(true), + ShortenEHDataOn64Bit(false), DwarfSectionOffsetDirective(0), DwarfAbbrevSection(".debug_abbrev"), DwarfInfoSection(".debug_info"), From evan.cheng at apple.com Tue Jan 15 17:26:36 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 15 Jan 2008 23:26:36 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46031 - in /llvm-gcc-4.2/trunk/gcc/config/i386: i386.c llvm-i386-target.h llvm-i386.cpp Message-ID: <200801152326.m0FNQaOi021708@zion.cs.uiuc.edu> Author: evancheng Date: Tue Jan 15 17:26:36 2008 New Revision: 46031 URL: http://llvm.org/viewvc/llvm-project?rev=46031&view=rev Log: Clean up code. Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386.c llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/i386.c?rev=46031&r1=46030&r2=46031&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/i386.c (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/i386.c Tue Jan 15 17:26:36 2008 @@ -21527,15 +21527,18 @@ /* APPLE LOCAL begin LLVM */ -/* Target hook for llvm-abi.h. It returns true if an aggregate of the - specified type should be passed in memory. This is only called for - x86-64. */ -int llvm_x86_64_should_pass_aggregate_in_memory(tree type) { - int needed_intregs, needed_sseregs; - enum machine_mode mode = type_natural_mode (type); - return !examine_argument(mode, type, 1, &needed_intregs, &needed_sseregs); +/* These are wrappers for type_natural_mode and examine_argument which are + both static functions. */ +enum machine_mode ix86_getNaturalModeForType(tree type) { + return type_natural_mode(type); } +int ix86_HowToPassArgument(enum machine_mode mode, tree type, int in_return, + int *int_nregs, int *sse_nregs) { + return examine_argument(mode, type, in_return, int_nregs, sse_nregs); +} + + /* APPLE LOCAL end LLVM */ #include "gt-i386.h" Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h?rev=46031&r1=46030&r2=46031&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h Tue Jan 15 17:26:36 2008 @@ -62,11 +62,10 @@ } \ } -extern int llvm_x86_64_should_pass_aggregate_in_memory(tree); +extern bool llvm_x86_64_should_pass_aggregate_in_memory(tree); #define LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) \ - ((!TARGET_64BIT) \ - ? true : llvm_x86_64_should_pass_aggregate_in_memory(X)) + (!TARGET_64BIT || llvm_x86_64_should_pass_aggregate_in_memory(X)) /* LLVM LOCAL end (ENTIRE FILE!) */ Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp?rev=46031&r1=46030&r2=46031&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Tue Jan 15 17:26:36 2008 @@ -660,4 +660,18 @@ return false; } +/* These are defined in i386.c */ +extern "C" enum machine_mode ix86_getNaturalModeForType(tree); +extern "C" int ix86_HowToPassArgument(enum machine_mode, tree, int, int*, int*); + +/* Target hook for llvm-abi.h. It returns true if an aggregate of the + specified type should be passed in memory. This is only called for + x86-64. */ +bool llvm_x86_64_should_pass_aggregate_in_memory(tree type) { + int IntRegs, SSERegs; + enum machine_mode Mode = ix86_getNaturalModeForType(type); + /* If ix86_HowToPassArgument return 0, then it's passed byval in memory.*/ + return !ix86_HowToPassArgument(Mode, type, 1, &IntRegs, &SSERegs); +} + /* LLVM LOCAL end (ENTIRE FILE!) */ From sabre at nondot.org Tue Jan 15 17:27:40 2008 From: sabre at nondot.org (Chris Lattner) Date: Tue, 15 Jan 2008 23:27:40 -0000 Subject: [llvm-commits] [llvm] r46032 - /llvm/trunk/Makefile.rules Message-ID: <200801152327.m0FNRepJ021813@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 17:27:40 2008 New Revision: 46032 URL: http://llvm.org/viewvc/llvm-project?rev=46032&view=rev Log: Commit a piece that I missed before, patch by Alain Frisch Modified: llvm/trunk/Makefile.rules Modified: llvm/trunk/Makefile.rules URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile.rules?rev=46032&r1=46031&r2=46032&view=diff ============================================================================== --- llvm/trunk/Makefile.rules (original) +++ llvm/trunk/Makefile.rules Tue Jan 15 17:27:40 2008 @@ -483,8 +483,14 @@ ProgInstall = $(INSTALL) $(Install.StripFlag) -m 0755 ScriptInstall = $(INSTALL) -m 0755 DataInstall = $(INSTALL) -m 0644 -TableGen = $(TBLGEN) -I $(PROJ_SRC_DIR) -I$(PROJ_SRC_ROOT)/include \ - -I $(PROJ_SRC_ROOT)/lib/Target + +# When compiling under Mingw/Cygwin, the tblgen tool expects Windows +# paths. In this case, the SYSPATH function (defined in +# Makefile.config) transforms Unix paths into Windows paths. +TableGen = $(TBLGEN) -I $(call SYSPATH, $(PROJ_SRC_DIR)) \ + -I $(call SYSPATH, $(PROJ_SRC_ROOT)/include) \ + -I $(call SYSPATH, $(PROJ_SRC_ROOT)/lib/Target) + Archive = $(AR) $(AR.Flags) LArchive = $(LLVMToolDir)/llvm-ar rcsf ifdef RANLIB @@ -1248,57 +1254,57 @@ $(TARGET:%=$(ObjDir)/%GenRegisterNames.inc.tmp): \ $(ObjDir)/%GenRegisterNames.inc.tmp : %.td $(ObjDir)/.dir $(Echo) "Building $( References: <200801152250.m0FMop2w018551@zion.cs.uiuc.edu> <478D393C.9070009@frisch.fr> Message-ID: On Jan 15, 2008, at 2:52 PM, Alain Frisch wrote: > Great, thanks! > > (To make it work, note that Makefile.rules also needs to be patched.) Ah, missed that piece, thank you for mentioning it! -chris From dpatel at apple.com Tue Jan 15 17:52:34 2008 From: dpatel at apple.com (Devang Patel) Date: Tue, 15 Jan 2008 23:52:34 -0000 Subject: [llvm-commits] [llvm] r46033 - in /llvm/trunk: include/llvm/LinkTimeOptimizer.h tools/lto/lto.cpp Message-ID: <200801152352.m0FNqY2L023211@zion.cs.uiuc.edu> Author: dpatel Date: Tue Jan 15 17:52:34 2008 New Revision: 46033 URL: http://llvm.org/viewvc/llvm-project?rev=46033&view=rev Log: - Introduces versioning macro LLVM_LTO_VERSION - Communicate symbol visibility - Communicate code generation model Modified: llvm/trunk/include/llvm/LinkTimeOptimizer.h llvm/trunk/tools/lto/lto.cpp Modified: llvm/trunk/include/llvm/LinkTimeOptimizer.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LinkTimeOptimizer.h?rev=46033&r1=46032&r2=46033&view=diff ============================================================================== --- llvm/trunk/include/llvm/LinkTimeOptimizer.h (original) +++ llvm/trunk/include/llvm/LinkTimeOptimizer.h Tue Jan 15 17:52:34 2008 @@ -20,6 +20,8 @@ #include #include +#define LLVM_LTO_VERSION 2 + namespace llvm { class Module; @@ -45,6 +47,19 @@ LTOInternalLinkage // Rename collisions when linking (static functions) }; + enum LTOVisibilityTypes { + LTODefaultVisibility = 0, ///< The GV is visible + LTOHiddenVisibility, ///< The GV is hidden + LTOProtectedVisibility ///< The GV is protected + }; + + + enum LTOCodeGenModel { + LTO_CGM_Static, + LTO_CGM_Dynamic, + LTO_CGM_DynamicNoPIC + }; + /// This class represents LLVM symbol information without exposing details /// of LLVM global values. It encapsulates symbol linkage information. This /// is typically used in hash_map where associated name identifies the @@ -54,10 +69,13 @@ public: LTOLinkageTypes getLinkage() const { return linkage; } + LTOVisibilityTypes getVisibility() const { return visibility; } void mayBeNotUsed(); - LLVMSymbol (enum LTOLinkageTypes lt, GlobalValue *g, const std::string &n, - const std::string &m, int a) : linkage(lt), gv(g), name(n), + LLVMSymbol (enum LTOLinkageTypes lt, enum LTOVisibilityTypes vis, + GlobalValue *g, const std::string &n, + const std::string &m, int a) : linkage(lt), visibility(vis), + gv(g), name(n), mangledName(m), alignment(a) {} const char *getName() { return name.c_str(); } @@ -66,6 +84,7 @@ private: enum LTOLinkageTypes linkage; + enum LTOVisibilityTypes visibility; GlobalValue *gv; std::string name; std::string mangledName; @@ -91,11 +110,12 @@ NameToSymbolMap &, std::set &) = 0; virtual enum LTOStatus optimizeModules(const std::string &, - std::vector &, - std::string &, bool, - const char *) = 0; + std::vector &exportList, + std::string &targetTriple, + bool saveTemps, const char *) = 0; virtual void getTargetTriple(const std::string &, std::string &) = 0; virtual void removeModule (const std::string &InputFilename) = 0; + virtual void setCodeGenModel(LTOCodeGenModel CGM) = 0; virtual void printVersion () = 0; virtual ~LinkTimeOptimizer() = 0; }; @@ -115,17 +135,20 @@ std::set &references); enum LTOStatus optimizeModules(const std::string &OutputFilename, std::vector &exportList, - std::string &targetTriple, bool saveTemps, - const char *); + std::string &targetTriple, + bool saveTemps, const char *); void getTargetTriple(const std::string &InputFilename, std::string &targetTriple); void removeModule (const std::string &InputFilename); void printVersion(); + void setCodeGenModel(LTOCodeGenModel CGM) { + CGModel = CGM; + } + // Constructors and destructors - LTO() { + LTO() : Target(NULL), CGModel(LTO_CGM_Dynamic) { /// TODO: Use Target info, it is available at this time. - Target = NULL; } ~LTO(); @@ -140,6 +163,7 @@ NameToSymbolMap allSymbols; NameToModuleMap allModules; TargetMachine *Target; + LTOCodeGenModel CGModel; }; } // End llvm namespace @@ -148,6 +172,6 @@ /// linker to use dlopen() interface to dynamically load LinkTimeOptimizer. /// extern "C" helps, because dlopen() interface uses name to find the symbol. extern "C" -llvm::LinkTimeOptimizer *createLLVMOptimizer(); +llvm::LinkTimeOptimizer *createLLVMOptimizer(unsigned VERSION = LLVM_LTO_VERSION); #endif Modified: llvm/trunk/tools/lto/lto.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lto/lto.cpp?rev=46033&r1=46032&r2=46033&view=diff ============================================================================== --- llvm/trunk/tools/lto/lto.cpp (original) +++ llvm/trunk/tools/lto/lto.cpp Tue Jan 15 17:52:34 2008 @@ -45,8 +45,15 @@ using namespace llvm; extern "C" -llvm::LinkTimeOptimizer *createLLVMOptimizer() +llvm::LinkTimeOptimizer *createLLVMOptimizer(unsigned VERSION) { + // Linker records LLVM_LTO_VERSION based on llvm optimizer available + // during linker build. Match linker's recorded LTO VERSION number + // with installed llvm optimizer version. If these numbers do not match + // then linker may not be able to use llvm optimizer dynamically. + if (VERSION != LLVM_LTO_VERSION) + return NULL; + llvm::LTO *l = new llvm::LTO(); return l; } @@ -74,6 +81,20 @@ return lt; } +// MAP LLVM VisibilityType to LTO VisibilityType +static LTOVisibilityTypes +getLTOVisibilityType(GlobalValue *v) +{ + LTOVisibilityTypes vis; + if (v->hasHiddenVisibility()) + vis = LTOHiddenVisibility; + else if (v->hasProtectedVisibility()) + vis = LTOProtectedVisibility; + else + vis = LTODefaultVisibility; + return vis; +} + // Find exeternal symbols referenced by VALUE. This is a recursive function. static void findExternalRefs(Value *value, std::set &references, @@ -164,13 +185,12 @@ modules.push_back(m); for (Module::iterator f = m->begin(), e = m->end(); f != e; ++f) { - LTOLinkageTypes lt = getLTOLinkageType(f); - + LTOVisibilityTypes vis = getLTOVisibilityType(f); if (!f->isDeclaration() && lt != LTOInternalLinkage && strncmp (f->getName().c_str(), "llvm.", 5)) { int alignment = ( 16 > f->getAlignment() ? 16 : f->getAlignment()); - LLVMSymbol *newSymbol = new LLVMSymbol(lt, f, f->getName(), + LLVMSymbol *newSymbol = new LLVMSymbol(lt, vis, f, f->getName(), mangler.getValueName(f), Log2_32(alignment)); symbols[newSymbol->getMangledName()] = newSymbol; @@ -180,19 +200,21 @@ // Collect external symbols referenced by this function. for (Function::iterator b = f->begin(), fe = f->end(); b != fe; ++b) for (BasicBlock::iterator i = b->begin(), be = b->end(); - i != be; ++i) + i != be; ++i) { for (unsigned count = 0, total = i->getNumOperands(); count != total; ++count) findExternalRefs(i->getOperand(count), references, mangler); + } } for (Module::global_iterator v = m->global_begin(), e = m->global_end(); v != e; ++v) { LTOLinkageTypes lt = getLTOLinkageType(v); + LTOVisibilityTypes vis = getLTOVisibilityType(v); if (!v->isDeclaration() && lt != LTOInternalLinkage && strncmp (v->getName().c_str(), "llvm.", 5)) { const TargetData *TD = Target->getTargetData(); - LLVMSymbol *newSymbol = new LLVMSymbol(lt, v, v->getName(), + LLVMSymbol *newSymbol = new LLVMSymbol(lt, vis, v, v->getName(), mangler.getValueName(v), TD->getPreferredAlignmentLog(v)); symbols[newSymbol->getMangledName()] = newSymbol; @@ -354,8 +376,7 @@ LTO::optimizeModules(const std::string &OutputFilename, std::vector &exportList, std::string &targetTriple, - bool saveTemps, - const char *FinalOutputFilename) + bool saveTemps, const char *FinalOutputFilename) { if (modules.empty()) return LTO_NO_WORK; @@ -374,6 +395,18 @@ sys::Path FinalOutputPath(FinalOutputFilename); FinalOutputPath.eraseSuffix(); + switch(CGModel) { + case LTO_CGM_Dynamic: + Target->setRelocationModel(Reloc::PIC_); + break; + case LTO_CGM_DynamicNoPIC: + Target->setRelocationModel(Reloc::DynamicNoPIC); + break; + case LTO_CGM_Static: + Target->setRelocationModel(Reloc::Static); + break; + } + if (saveTemps) { std::string tempFileName(FinalOutputPath.c_str()); tempFileName += "0.bc"; From kremenek at apple.com Tue Jan 15 17:53:54 2008 From: kremenek at apple.com (Ted Kremenek) Date: Tue, 15 Jan 2008 23:53:54 -0000 Subject: [llvm-commits] [llvm] r46034 - /llvm/trunk/include/llvm/ADT/ImmutableMap.h Message-ID: <200801152353.m0FNrsXd023330@zion.cs.uiuc.edu> Author: kremenek Date: Tue Jan 15 17:53:53 2008 New Revision: 46034 URL: http://llvm.org/viewvc/llvm-project?rev=46034&view=rev Log: Changed ImmutableMap::find to return an iterator instead of a pointer to the tree node. Modified: llvm/trunk/include/llvm/ADT/ImmutableMap.h Modified: llvm/trunk/include/llvm/ADT/ImmutableMap.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/ImmutableMap.h?rev=46034&r1=46033&r2=46034&view=diff ============================================================================== --- llvm/trunk/include/llvm/ADT/ImmutableMap.h (original) +++ llvm/trunk/include/llvm/ADT/ImmutableMap.h Tue Jan 15 17:53:53 2008 @@ -98,15 +98,7 @@ bool contains(key_type_ref K) const { return Root ? Root->contains(K) : false; } - - data_type* find(key_type_ref K) const { - if (Root) { - TreeTy* T = Root->find(K); - if (T) return &T->getValue().second; - } - - return NULL; - } + bool operator==(ImmutableMap RHS) const { return Root && RHS.Root ? Root->isEqual(*RHS.Root) : Root == RHS.Root; @@ -171,7 +163,7 @@ iterator() {} iterator(TreeTy* t) : itr(t) {} - friend class ImmutableSet; + friend class ImmutableMap; public: inline value_type_ref operator*() const { return itr->getValue(); } @@ -189,6 +181,15 @@ iterator begin() const { return iterator(Root); } iterator end() const { return iterator(); } + iterator find(key_type_ref K) const { + if (Root) { + TreeTy* T = Root->find(K); + if (T) return iterator(T); + } + + return iterator(); + } + //===--------------------------------------------------===// // Utility methods. //===--------------------------------------------------===// From isanbard at gmail.com Tue Jan 15 18:47:04 2008 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 16 Jan 2008 00:47:04 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46039 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Message-ID: <200801160047.m0G0l4Cb027149@zion.cs.uiuc.edu> Author: void Date: Tue Jan 15 18:47:01 2008 New Revision: 46039 URL: http://llvm.org/viewvc/llvm-project?rev=46039&view=rev Log: If we are building a compiler for target T on host H, and H has a different type of endianness than T, then the builtin defines are generated incorrectly. For instance, a compiler built on an X86 machine to target a PPC machine will generate something like: #define __FLT_MIN__ $.75079687365372222456778186655567717873896992796e-52F when run on the PPC machine. Instead, it should generate something like: #define __FLT_MIN__ 1.17549435e-38F This flips the bytes if the endianness doesn't match. Note, this doesn't apply to long doubles. Those are (potentially) trickier. Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=46039&r1=46038&r2=46039&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Tue Jan 15 18:47:01 2008 @@ -5466,6 +5466,14 @@ double V; }; if (Ty==Type::FloatTy || Ty==Type::DoubleTy) { + // Determine endianness of host machine. + union { + int x; + char y[sizeof(int)]; + } u; + u.x = 1; + bool BigEndian = (u.y[0] != 1); + REAL_VALUE_TO_TARGET_DOUBLE(TREE_REAL_CST(exp), RealArr); // Here's how this works: @@ -5477,16 +5485,21 @@ // This, then, makes the conversion pretty simple. The tricky part is // getting the byte ordering correct and make sure you don't print any // more than 32 bits per integer on platforms with ints > 32 bits. - - UArr[0] = RealArr[0]; // Long -> int convert - UArr[1] = RealArr[1]; - + // // We want to switch the words of UArr if host and target endianness // do not match. FLOAT_WORDS_BIG_ENDIAN describes the target endianness. // The host's used to be available in HOST_WORDS_BIG_ENDIAN, but the gcc // maintainers removed this in a fit of cleanliness between 4.0 // and 4.2. For now, host and target endianness must match. + if (BigEndian == FLOAT_WORDS_BIG_ENDIAN) { + UArr[0] = RealArr[0]; // Long -> int convert + UArr[1] = RealArr[1]; + } else { + UArr[0] = RealArr[1]; // Long -> int convert + UArr[1] = RealArr[0]; + } + return ConstantFP::get(Ty, Ty==Type::FloatTy ? APFloat((float)V) : APFloat(V)); } else if (Ty==Type::X86_FP80Ty) { From sabre at nondot.org Tue Jan 15 19:15:27 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 01:15:27 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46041 - in /llvm-gcc-4.2/trunk/gcc: config/darwin.h llvm-backend.cpp llvm.h objc/objc-act.c varasm.c Message-ID: <200801160115.m0G1FRCJ029022@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 19:15:26 2008 New Revision: 46041 URL: http://llvm.org/viewvc/llvm-project?rev=46041&view=rev Log: The final ultimate(?) fix for the silly objc .reference thing. Instead of ignoring them, we now queue them up as a file-scope inline asm block. This allows us to emit the same directives as gcc. Modified: llvm-gcc-4.2/trunk/gcc/config/darwin.h llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp llvm-gcc-4.2/trunk/gcc/llvm.h llvm-gcc-4.2/trunk/gcc/objc/objc-act.c llvm-gcc-4.2/trunk/gcc/varasm.c Modified: llvm-gcc-4.2/trunk/gcc/config/darwin.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/darwin.h?rev=46041&r1=46040&r2=46041&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/darwin.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/darwin.h Tue Jan 15 19:15:26 2008 @@ -920,7 +920,22 @@ #undef TARGET_ASM_RELOC_RW_MASK #define TARGET_ASM_RELOC_RW_MASK machopic_reloc_rw_mask - +/* LLVM LOCAL begin */ +#ifdef ENABLE_LLVM +#define ASM_DECLARE_UNRESOLVED_REFERENCE(FILE,NAME) \ + do { \ + if (FILE) { \ + char Buffer[strlen(NAME)+30]; \ + sprintf(Buffer, "\t.lazy_reference %s", NAME); \ + if (MACHOPIC_INDIRECT) \ + sprintf(Buffer, "\t.lazy_reference %s", NAME); \ + else \ + sprintf(Buffer, "\t.reference %s", NAME); \ + llvm_emit_file_scope_asm(Buffer); \ + } \ + } while (0) +#else +/* LLVM LOCAL end */ #define ASM_DECLARE_UNRESOLVED_REFERENCE(FILE,NAME) \ do { \ if (FILE) { \ @@ -932,6 +947,8 @@ fprintf (FILE, "\n"); \ } \ } while (0) +/* LLVM LOCAL */ +#endif /*ENABLE_LLVM*/ #define ASM_DECLARE_CLASS_REFERENCE(FILE,NAME) \ do { \ Modified: llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp?rev=46041&r1=46040&r2=46041&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp Tue Jan 15 19:15:26 2008 @@ -1282,14 +1282,12 @@ // llvm_emit_file_scope_asm - Emit the specified string as a file-scope inline // asm block. // -void llvm_emit_file_scope_asm(tree string) { - if (TREE_CODE(string) == ADDR_EXPR) - string = TREE_OPERAND(string, 0); +void llvm_emit_file_scope_asm(const char *string) { if (TheModule->getModuleInlineAsm().empty()) - TheModule->setModuleInlineAsm(TREE_STRING_POINTER(string)); + TheModule->setModuleInlineAsm(string); else TheModule->setModuleInlineAsm(TheModule->getModuleInlineAsm() + "\n" + - TREE_STRING_POINTER(string)); + string); } Modified: llvm-gcc-4.2/trunk/gcc/llvm.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm.h?rev=46041&r1=46040&r2=46041&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm.h (original) +++ llvm-gcc-4.2/trunk/gcc/llvm.h Tue Jan 15 19:15:26 2008 @@ -76,7 +76,7 @@ /* llvm_emit_file_scope_asm - Emit the specified string as a file-scope inline * asm block. */ -void llvm_emit_file_scope_asm(union tree_node*); +void llvm_emit_file_scope_asm(const char*); /* llvm_emit_typedef - Emit the specified TYPE_DECL if desired. */ Modified: llvm-gcc-4.2/trunk/gcc/objc/objc-act.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/objc/objc-act.c?rev=46041&r1=46040&r2=46041&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/objc/objc-act.c (original) +++ llvm-gcc-4.2/trunk/gcc/objc/objc-act.c Tue Jan 15 19:15:26 2008 @@ -18261,11 +18261,7 @@ #ifdef ASM_DECLARE_UNRESOLVED_REFERENCE if (flag_next_runtime) { - /* LLVM LOCAL begin - radar 5681912 */ -#ifndef ENABLE_LLVM ASM_DECLARE_UNRESOLVED_REFERENCE (asm_out_file, string); -#endif - /* LLVM LOCAL end - radar 5681912 */ return; } #endif Modified: llvm-gcc-4.2/trunk/gcc/varasm.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/varasm.c?rev=46041&r1=46040&r2=46041&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/varasm.c (original) +++ llvm-gcc-4.2/trunk/gcc/varasm.c Tue Jan 15 19:15:26 2008 @@ -1201,7 +1201,9 @@ { /* LLVM LOCAL begin */ #ifdef ENABLE_LLVM - llvm_emit_file_scope_asm(string); + if (TREE_CODE(string) == ADDR_EXPR) + string = TREE_OPERAND(string, 0); + llvm_emit_file_scope_asm(TREE_STRING_POINTER(string)); return; #endif /* LLVM LOCAL end */ From sabre at nondot.org Tue Jan 15 19:19:04 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 01:19:04 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r46042 - in /llvm-gcc-4.0/trunk/gcc: config/darwin.h llvm-backend.cpp llvm.h objc/objc-act.c varasm.c Message-ID: <200801160119.m0G1J4um029240@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 19:19:03 2008 New Revision: 46042 URL: http://llvm.org/viewvc/llvm-project?rev=46042&view=rev Log: The final ultimate(?) fix for the silly objc .reference thing. Instead of ignoring them, we now queue them up as a file-scope inline asm block. This allows us to emit the same directives as gcc. Modified: llvm-gcc-4.0/trunk/gcc/config/darwin.h llvm-gcc-4.0/trunk/gcc/llvm-backend.cpp llvm-gcc-4.0/trunk/gcc/llvm.h llvm-gcc-4.0/trunk/gcc/objc/objc-act.c llvm-gcc-4.0/trunk/gcc/varasm.c Modified: llvm-gcc-4.0/trunk/gcc/config/darwin.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/config/darwin.h?rev=46042&r1=46041&r2=46042&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/config/darwin.h (original) +++ llvm-gcc-4.0/trunk/gcc/config/darwin.h Tue Jan 15 19:19:03 2008 @@ -1381,7 +1381,22 @@ #undef TARGET_ASM_FUNCTION_RODATA_SECTION #define TARGET_ASM_FUNCTION_RODATA_SECTION default_no_function_rodata_section - +/* LLVM LOCAL begin */ +#ifdef ENABLE_LLVM +#define ASM_DECLARE_UNRESOLVED_REFERENCE(FILE,NAME) \ + do { \ + if (FILE) { \ + char Buffer[strlen(NAME)+30]; \ + sprintf(Buffer, "\t.lazy_reference %s", NAME); \ + if (MACHOPIC_INDIRECT) \ + sprintf(Buffer, "\t.lazy_reference %s", NAME); \ + else \ + sprintf(Buffer, "\t.reference %s", NAME); \ + llvm_emit_file_scope_asm(Buffer); \ + } \ + } while (0) +#else +/* LLVM LOCAL end */ #define ASM_DECLARE_UNRESOLVED_REFERENCE(FILE,NAME) \ do { \ if (FILE) { \ @@ -1393,6 +1408,8 @@ fprintf (FILE, "\n"); \ } \ } while (0) +/* LLVM LOCAL */ +#endif /*ENABLE_LLVM*/ #define ASM_DECLARE_CLASS_REFERENCE(FILE,NAME) \ do { \ Modified: llvm-gcc-4.0/trunk/gcc/llvm-backend.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/llvm-backend.cpp?rev=46042&r1=46041&r2=46042&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/llvm-backend.cpp (original) +++ llvm-gcc-4.0/trunk/gcc/llvm-backend.cpp Tue Jan 15 19:19:03 2008 @@ -1212,14 +1212,12 @@ // llvm_emit_file_scope_asm - Emit the specified string as a file-scope inline // asm block. // -void llvm_emit_file_scope_asm(tree string) { - if (TREE_CODE(string) == ADDR_EXPR) - string = TREE_OPERAND(string, 0); +void llvm_emit_file_scope_asm(const char *string) { if (TheModule->getModuleInlineAsm().empty()) - TheModule->setModuleInlineAsm(TREE_STRING_POINTER(string)); + TheModule->setModuleInlineAsm(string); else TheModule->setModuleInlineAsm(TheModule->getModuleInlineAsm() + "\n" + - TREE_STRING_POINTER(string)); + string); } Modified: llvm-gcc-4.0/trunk/gcc/llvm.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/llvm.h?rev=46042&r1=46041&r2=46042&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/llvm.h (original) +++ llvm-gcc-4.0/trunk/gcc/llvm.h Tue Jan 15 19:19:03 2008 @@ -73,7 +73,7 @@ /* llvm_emit_file_scope_asm - Emit the specified string as a file-scope inline * asm block. */ -void llvm_emit_file_scope_asm(union tree_node*); +void llvm_emit_file_scope_asm(const char*); /* llvm_emit_typedef - Emit the specified TYPE_DECL if desired. */ Modified: llvm-gcc-4.0/trunk/gcc/objc/objc-act.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/objc/objc-act.c?rev=46042&r1=46041&r2=46042&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/objc/objc-act.c (original) +++ llvm-gcc-4.0/trunk/gcc/objc/objc-act.c Tue Jan 15 19:19:03 2008 @@ -18365,11 +18365,7 @@ #ifdef ASM_DECLARE_UNRESOLVED_REFERENCE if (flag_next_runtime) { - /* APPLE LOCAL begin LLVM */ -#ifdef ENABLE_LLVM ASM_DECLARE_UNRESOLVED_REFERENCE (asm_out_file, string); -#endif - /* APPLE LOCAL end LLVM */ return; } #endif Modified: llvm-gcc-4.0/trunk/gcc/varasm.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/varasm.c?rev=46042&r1=46041&r2=46042&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/varasm.c (original) +++ llvm-gcc-4.0/trunk/gcc/varasm.c Tue Jan 15 19:19:03 2008 @@ -1064,7 +1064,9 @@ { /* APPLE LOCAL begin LLVM */ #ifdef ENABLE_LLVM - llvm_emit_file_scope_asm(string); + if (TREE_CODE(string) == ADDR_EXPR) + string = TREE_OPERAND(string, 0); + llvm_emit_file_scope_asm(TREE_STRING_POINTER(string)); return; #endif /* APPLE LOCAL end LLVM */ From isanbard at gmail.com Tue Jan 15 19:24:51 2008 From: isanbard at gmail.com (Bill Wendling) Date: Tue, 15 Jan 2008 17:24:51 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r46041 - in /llvm-gcc-4.2/trunk/gcc: config/darwin.h llvm-backend.cpp llvm.h objc/objc-act.c varasm.c In-Reply-To: <200801160115.m0G1FRCJ029022@zion.cs.uiuc.edu> References: <200801160115.m0G1FRCJ029022@zion.cs.uiuc.edu> Message-ID: <16e5fdf90801151724h19f189abrf1fdbf814c2ec986@mail.gmail.com> On Jan 15, 2008 5:15 PM, Chris Lattner wrote: > Author: lattner > Date: Tue Jan 15 19:15:26 2008 > New Revision: 46041 > > URL: http://llvm.org/viewvc/llvm-project?rev=46041&view=rev > Log: > The final ultimate(?) fix for the silly objc .reference thing. Instead of ignoring > them, we now queue them up as a file-scope inline asm block. This allows us to > emit the same directives as gcc. > *crosses fingers* ============================================================================== > --- llvm-gcc-4.2/trunk/gcc/config/darwin.h (original) > +++ llvm-gcc-4.2/trunk/gcc/config/darwin.h Tue Jan 15 19:15:26 2008 > @@ -920,7 +920,22 @@ > #undef TARGET_ASM_RELOC_RW_MASK > #define TARGET_ASM_RELOC_RW_MASK machopic_reloc_rw_mask > > - > +/* LLVM LOCAL begin */ > +#ifdef ENABLE_LLVM > +#define ASM_DECLARE_UNRESOLVED_REFERENCE(FILE,NAME) \ > + do { \ > + if (FILE) { \ > + char Buffer[strlen(NAME)+30]; \ > + sprintf(Buffer, "\t.lazy_reference %s", NAME); \ Why do you have this line here? > + if (MACHOPIC_INDIRECT) \ > + sprintf(Buffer, "\t.lazy_reference %s", NAME); \ > + else \ > + sprintf(Buffer, "\t.reference %s", NAME); \ > + llvm_emit_file_scope_asm(Buffer); \ > + } \ > + } while (0) -bw From isanbard at gmail.com Tue Jan 15 19:30:14 2008 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 16 Jan 2008 01:30:14 -0000 Subject: [llvm-commits] [llvm] r46043 - /llvm/tags/Apple/llvmCore-2008/ Message-ID: <200801160130.m0G1UEbx030140@zion.cs.uiuc.edu> Author: void Date: Tue Jan 15 19:30:13 2008 New Revision: 46043 URL: http://llvm.org/viewvc/llvm-project?rev=46043&view=rev Log: Creating llvmCore-2008 branch Added: llvm/tags/Apple/llvmCore-2008/ - copied from r46042, llvm/trunk/ From isanbard at gmail.com Tue Jan 15 19:31:38 2008 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 16 Jan 2008 01:31:38 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46044 - /llvm-gcc-4.2/tags/Apple/llvmgcc42-2008/ Message-ID: <200801160131.m0G1VcC8030268@zion.cs.uiuc.edu> Author: void Date: Tue Jan 15 19:31:37 2008 New Revision: 46044 URL: http://llvm.org/viewvc/llvm-project?rev=46044&view=rev Log: Creating llvmgcc42-2008 branch Added: llvm-gcc-4.2/tags/Apple/llvmgcc42-2008/ - copied from r46043, llvm-gcc-4.2/trunk/ From dpatel at apple.com Tue Jan 15 21:33:07 2008 From: dpatel at apple.com (Devang Patel) Date: Wed, 16 Jan 2008 03:33:07 -0000 Subject: [llvm-commits] [llvm] r46045 - in /llvm/trunk: lib/Transforms/IPO/StripSymbols.cpp test/Transforms/StripSymbols/ test/Transforms/StripSymbols/2007-01-15-llvm.used.ll test/Transforms/StripSymbols/Output/ test/Transforms/StripSymbols/dg.exp Message-ID: <200801160333.m0G3X74h005515@zion.cs.uiuc.edu> Author: dpatel Date: Tue Jan 15 21:33:05 2008 New Revision: 46045 URL: http://llvm.org/viewvc/llvm-project?rev=46045&view=rev Log: Do not strip llvm.used values. Added: llvm/trunk/test/Transforms/StripSymbols/ llvm/trunk/test/Transforms/StripSymbols/2007-01-15-llvm.used.ll llvm/trunk/test/Transforms/StripSymbols/Output/ llvm/trunk/test/Transforms/StripSymbols/dg.exp Modified: llvm/trunk/lib/Transforms/IPO/StripSymbols.cpp Modified: llvm/trunk/lib/Transforms/IPO/StripSymbols.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/StripSymbols.cpp?rev=46045&r1=46044&r2=46045&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/IPO/StripSymbols.cpp (original) +++ llvm/trunk/lib/Transforms/IPO/StripSymbols.cpp Tue Jan 15 21:33:05 2008 @@ -29,6 +29,7 @@ #include "llvm/ValueSymbolTable.h" #include "llvm/TypeSymbolTable.h" #include "llvm/Support/Compiler.h" +#include "llvm/ADT/SmallPtrSet.h" using namespace llvm; namespace { @@ -100,13 +101,34 @@ // If we're not just stripping debug info, strip all symbols from the // functions and the names from any internal globals. if (!OnlyDebugInfo) { + SmallPtrSet llvmUsedValues; + Value *LLVMUsed = M.getValueSymbolTable().lookup("llvm.used"); + if (LLVMUsed) { + // Collect values that are preserved as per explicit request. + // llvm.used is used to list these values. + if (GlobalVariable *GV = dyn_cast(LLVMUsed)) { + if (ConstantArray *InitList = + dyn_cast(GV->getInitializer())) { + for (unsigned i = 0, e = InitList->getNumOperands(); i != e; ++i) { + if (ConstantExpr *CE = + dyn_cast(InitList->getOperand(i))) + if (CE->isCast()) + llvmUsedValues.insert(CE->getOperand(0)); + } + } + } + } + for (Module::global_iterator I = M.global_begin(), E = M.global_end(); - I != E; ++I) - if (I->hasInternalLinkage()) + I != E; ++I) { + if (I->hasInternalLinkage() && llvmUsedValues.count(I) == 0) I->setName(""); // Internal symbols can't participate in linkage + else if (I->getName() == "llvm.used") { + } + } for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) { - if (I->hasInternalLinkage()) + if (I->hasInternalLinkage() && llvmUsedValues.count(I) == 0) I->setName(""); // Internal symbols can't participate in linkage StripSymtab(I->getValueSymbolTable()); } Added: llvm/trunk/test/Transforms/StripSymbols/2007-01-15-llvm.used.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/StripSymbols/2007-01-15-llvm.used.ll?rev=46045&view=auto ============================================================================== --- llvm/trunk/test/Transforms/StripSymbols/2007-01-15-llvm.used.ll (added) +++ llvm/trunk/test/Transforms/StripSymbols/2007-01-15-llvm.used.ll Tue Jan 15 21:33:05 2008 @@ -0,0 +1,15 @@ +; RUN: llvm-as < %s | opt -strip | llvm-dis | grep foo | count 2 +; RUN: llvm-as < %s | opt -strip | llvm-dis | grep bar | count 2 + at llvm.used = appending global [2 x i8*] [ i8* bitcast (i32* @foo to i8*), i8* bitcast (i32 ()* @bar to i8*) ], section "llvm.metadata" ; <[2 x i8*]*> [#uses=0] + at foo = internal constant i32 41 ; [#uses=1] + +define internal i32 @bar() nounwind { +entry: + ret i32 42 +} + +define i32 @main() nounwind { +entry: + ret i32 0 +} + Added: llvm/trunk/test/Transforms/StripSymbols/dg.exp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/StripSymbols/dg.exp?rev=46045&view=auto ============================================================================== --- llvm/trunk/test/Transforms/StripSymbols/dg.exp (added) +++ llvm/trunk/test/Transforms/StripSymbols/dg.exp Tue Jan 15 21:33:05 2008 @@ -0,0 +1,3 @@ +load_lib llvm.exp + +RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,llx,c,cpp,tr}]] From sabre at nondot.org Tue Jan 15 21:53:23 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 03:53:23 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46046 - /llvm-gcc-4.2/trunk/gcc/config/darwin.h Message-ID: <200801160353.m0G3rNc8007152@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 21:53:20 2008 New Revision: 46046 URL: http://llvm.org/viewvc/llvm-project?rev=46046&view=rev Log: remove a dead line, thanks to bill for pointing this out. Modified: llvm-gcc-4.2/trunk/gcc/config/darwin.h Modified: llvm-gcc-4.2/trunk/gcc/config/darwin.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/darwin.h?rev=46046&r1=46045&r2=46046&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/darwin.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/darwin.h Tue Jan 15 21:53:20 2008 @@ -926,7 +926,6 @@ do { \ if (FILE) { \ char Buffer[strlen(NAME)+30]; \ - sprintf(Buffer, "\t.lazy_reference %s", NAME); \ if (MACHOPIC_INDIRECT) \ sprintf(Buffer, "\t.lazy_reference %s", NAME); \ else \ From sabre at nondot.org Tue Jan 15 21:54:18 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 03:54:18 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r46047 - /llvm-gcc-4.0/trunk/gcc/config/darwin.h Message-ID: <200801160354.m0G3sIrG007235@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 21:54:18 2008 New Revision: 46047 URL: http://llvm.org/viewvc/llvm-project?rev=46047&view=rev Log: remove a dead line, thanks to bill for pointing this out. Modified: llvm-gcc-4.0/trunk/gcc/config/darwin.h Modified: llvm-gcc-4.0/trunk/gcc/config/darwin.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/config/darwin.h?rev=46047&r1=46046&r2=46047&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/config/darwin.h (original) +++ llvm-gcc-4.0/trunk/gcc/config/darwin.h Tue Jan 15 21:54:18 2008 @@ -1387,7 +1387,6 @@ do { \ if (FILE) { \ char Buffer[strlen(NAME)+30]; \ - sprintf(Buffer, "\t.lazy_reference %s", NAME); \ if (MACHOPIC_INDIRECT) \ sprintf(Buffer, "\t.lazy_reference %s", NAME); \ else \ From clattner at apple.com Tue Jan 15 21:55:56 2008 From: clattner at apple.com (Chris Lattner) Date: Tue, 15 Jan 2008 19:55:56 -0800 Subject: [llvm-commits] [llvm] r46045 - in /llvm/trunk: lib/Transforms/IPO/StripSymbols.cpp test/Transforms/StripSymbols/ test/Transforms/StripSymbols/2007-01-15-llvm.used.ll test/Transforms/StripSymbols/Output/ test/Transforms/StripSymbols/dg.exp In-Reply-To: <200801160333.m0G3X74h005515@zion.cs.uiuc.edu> References: <200801160333.m0G3X74h005515@zion.cs.uiuc.edu> Message-ID: On Jan 15, 2008, at 7:33 PM, Devang Patel wrote: > URL: http://llvm.org/viewvc/llvm-project?rev=46045&view=rev > Log: > Do not strip llvm.used values. Nice catch, -Chris From clattner at apple.com Tue Jan 15 22:00:57 2008 From: clattner at apple.com (Chris Lattner) Date: Tue, 15 Jan 2008 20:00:57 -0800 Subject: [llvm-commits] Fix for PR1798 (ScalarEvolution) In-Reply-To: <478D2769.8060503@fastmail.fm> References: <478D2769.8060503@fastmail.fm> Message-ID: <8FDBF4AD-7FBD-4155-8E33-B5299FAC064C@apple.com> On Jan 15, 2008, at 1:36 PM, Wojciech Matyjewicz wrote: > The attached patch should fix the aforementioned bug. It passes > DejaGnu > testsuite. Nick also checked that it passes llvm-test and llvm-gcc > bootstrap (thanks!). Oooh cool! > > The patch: > 1) changes SCEVSDivExpr into SCEVUDivExpr, > 2) replaces PartialFact() function with BinomialCoefficient(); the > computations in BinomialCoefficient() are performed with the > apprioprate > bitwidth necessary to avoid overflow. > > The short explanation why the patch should be correct is contained in > the comments. The longer can be found in the bugzilla discussion: > http://llvm.org/bugs/show_bug.cgi?id=1798. > > However, there is one problem. The fix needs support for integers of > arbitrary bitwitdth to work in every possible case. Here is a short > explanation why: > To evaluate a chrec of length K at a given iteration we need, in > general, to generate LLVM code performing accurate multiplication of K > numbers. Suppose, W is their bitwidth. Then, multiplication need to > use > K*W bits, what can potentially be an arbitrary number. > > I can see two ways what we can do now: > 1) wait for the backend support, > 2) make the patch unoptimal by using the more bits than needed to > perform the multiplication (the minimum power of 2 greater or equal > to K*W) I think we should wait to address this after LLVM 2.2 branches. That said, the short-term fix is to round up to the next power of two (e.g. 32 or 64 bits) and disable this transformation when that size is not a "normal" llvm size (8, 16, 32, 64). Hopefully llvm 2.3 will have real APInt support in the code generator, at which time we can remove these hacks. :) Does this sound reasonable? -Chris From isanbard at gmail.com Tue Jan 15 23:46:35 2008 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 16 Jan 2008 05:46:35 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46048 - /llvm-gcc-4.2/tags/Apple/llvmgcc42-2008/trunk/ Message-ID: <200801160546.m0G5kZHl016293@zion.cs.uiuc.edu> Author: void Date: Tue Jan 15 23:46:33 2008 New Revision: 46048 URL: http://llvm.org/viewvc/llvm-project?rev=46048&view=rev Log: Creating llvmgcc42-2008 branch Added: llvm-gcc-4.2/tags/Apple/llvmgcc42-2008/trunk/ - copied from r46047, llvm-gcc-4.2/trunk/ From sabre at nondot.org Tue Jan 15 23:49:24 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 05:49:24 -0000 Subject: [llvm-commits] [llvm] r46050 - in /llvm/trunk: include/llvm/CodeGen/SelectionDAGNodes.h lib/CodeGen/SelectionDAG/DAGCombiner.cpp lib/CodeGen/SelectionDAG/SelectionDAG.cpp Message-ID: <200801160549.m0G5nOCF016468@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 23:49:24 2008 New Revision: 46050 URL: http://llvm.org/viewvc/llvm-project?rev=46050&view=rev Log: Factor the ReachesChainWithoutSideEffects out of dag combiner into a public SDOperand::reachesChainWithoutSideEffects method. No functionality change. Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h?rev=46050&r1=46049&r2=46050&view=diff ============================================================================== --- llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h (original) +++ llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h Tue Jan 15 23:49:24 2008 @@ -780,6 +780,14 @@ inline bool isTargetOpcode() const; inline unsigned getTargetOpcode() const; + + /// reachesChainWithoutSideEffects - Return true if this operand (which must + /// be a chain) reaches the specified operand without crossing any + /// side-effecting instructions. In practice, this looks through token + /// factors and non-volatile loads. In order to remain efficient, this only + /// looks a couple of nodes in, it does not do an exhaustive search. + bool reachesChainWithoutSideEffects(SDOperand Dest, unsigned Depth = 2) const; + /// hasOneUse - Return true if there is exactly one operation using this /// result value of the defining operator. inline bool hasOneUse() const; Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=46050&r1=46049&r2=46050&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Tue Jan 15 23:49:24 2008 @@ -4122,33 +4122,6 @@ return SDOperand(); } -/// ReachesChainWithoutSideEffects - Do a little local search to see if Src can -/// reach Dest without any side effects like a store, or call. Non-volatile -/// loads are ok though. -static bool ReachesChainWithoutSideEffects(SDOperand Src, SDOperand Dest, - unsigned Depth = 0) { - if (Src == Dest) return true; - - // Don't search too deeply, we just want to be able to see through - // TokenFactor's etc. - if (Depth == 2) return false; - - // If this is a token factor, all inputs to the TF happen in parallel. If any - // of the operands of the TF reach dest, then we can do the xform. - if (Src.getOpcode() == ISD::TokenFactor) { - for (unsigned i = 0, e = Src.getNumOperands(); i != e; ++i) - if (ReachesChainWithoutSideEffects(Src.getOperand(i), Dest, Depth+1)) - return true; - return false; - } - - // Loads don't have side effects, look through them. - if (LoadSDNode *Ld = dyn_cast(Src)) { - if (!Ld->isVolatile()) - return ReachesChainWithoutSideEffects(Ld->getChain(), Dest, Depth+1); - } - return false; -} SDOperand DAGCombiner::visitSTORE(SDNode *N) { StoreSDNode *ST = cast(N); @@ -4283,7 +4256,7 @@ !ST->isVolatile() && // There can't be any side effects between the load and store, such as // a call or store. - ReachesChainWithoutSideEffects(Chain, SDOperand(Ld, 1))) { + Chain.reachesChainWithoutSideEffects(SDOperand(Ld, 1))) { // The store is dead, remove it. return Chain; } Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp?rev=46050&r1=46049&r2=46050&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Tue Jan 15 23:49:24 2008 @@ -3562,6 +3562,37 @@ return false; } +/// reachesChainWithoutSideEffects - Return true if this operand (which must +/// be a chain) reaches the specified operand without crossing any +/// side-effecting instructions. In practice, this looks through token +/// factors and non-volatile loads. In order to remain efficient, this only +/// looks a couple of nodes in, it does not do an exhaustive search. +bool SDOperand::reachesChainWithoutSideEffects(SDOperand Dest, + unsigned Depth) const { + if (*this == Dest) return true; + + // Don't search too deeply, we just want to be able to see through + // TokenFactor's etc. + if (Depth == 0) return false; + + // If this is a token factor, all inputs to the TF happen in parallel. If any + // of the operands of the TF reach dest, then we can do the xform. + if (getOpcode() == ISD::TokenFactor) { + for (unsigned i = 0, e = getNumOperands(); i != e; ++i) + if (getOperand(i).reachesChainWithoutSideEffects(Dest, Depth-1)) + return true; + return false; + } + + // Loads don't have side effects, look through them. + if (LoadSDNode *Ld = dyn_cast(*this)) { + if (!Ld->isVolatile()) + return Ld->getChain().reachesChainWithoutSideEffects(Dest, Depth-1); + } + return false; +} + + static void findPredecessor(SDNode *N, const SDNode *P, bool &found, SmallPtrSet &Visited) { if (found || !Visited.insert(N)) From sabre at nondot.org Tue Jan 15 23:52:18 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 05:52:18 -0000 Subject: [llvm-commits] [llvm] r46052 - /llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Message-ID: <200801160552.m0G5qIgE016655@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 23:52:18 2008 New Revision: 46052 URL: http://llvm.org/viewvc/llvm-project?rev=46052&view=rev Log: various whitespace cleanups, no functionality change. Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=46052&r1=46051&r2=46052&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Tue Jan 15 23:52:18 2008 @@ -683,16 +683,16 @@ /// GetPossiblePreceedingTailCall - Get preceeding X86ISD::TAILCALL node if it /// exists skip possible ISD:TokenFactor. static SDOperand GetPossiblePreceedingTailCall(SDOperand Chain) { - if (Chain.getOpcode()==X86ISD::TAILCALL) { + if (Chain.getOpcode() == X86ISD::TAILCALL) { return Chain; - } else if (Chain.getOpcode()==ISD::TokenFactor) { + } else if (Chain.getOpcode() == ISD::TokenFactor) { if (Chain.getNumOperands() && - Chain.getOperand(0).getOpcode()==X86ISD::TAILCALL) + Chain.getOperand(0).getOpcode() == X86ISD::TAILCALL) return Chain.getOperand(0); } return Chain; } - + /// LowerRET - Lower an ISD::RET node. SDOperand X86TargetLowering::LowerRET(SDOperand Op, SelectionDAG &DAG) { assert((Op.getNumOperands() & 1) == 1 && "ISD::RET should have odd # args"); @@ -718,14 +718,14 @@ SDOperand TailCall = Chain; SDOperand TargetAddress = TailCall.getOperand(1); SDOperand StackAdjustment = TailCall.getOperand(2); - assert ( ((TargetAddress.getOpcode() == ISD::Register && + assert(((TargetAddress.getOpcode() == ISD::Register && (cast(TargetAddress)->getReg() == X86::ECX || cast(TargetAddress)->getReg() == X86::R9)) || TargetAddress.getOpcode() == ISD::TargetExternalSymbol || TargetAddress.getOpcode() == ISD::TargetGlobalAddress) && "Expecting an global address, external symbol, or register"); - assert( StackAdjustment.getOpcode() == ISD::Constant && - "Expecting a const value"); + assert(StackAdjustment.getOpcode() == ISD::Constant && + "Expecting a const value"); SmallVector Operands; Operands.push_back(Chain.getOperand(0)); From sabre at nondot.org Tue Jan 15 23:53:06 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 05:53:06 -0000 Subject: [llvm-commits] [llvm] r46053 - /llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Message-ID: <200801160553.m0G5r69f016721@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 23:53:06 2008 New Revision: 46053 URL: http://llvm.org/viewvc/llvm-project?rev=46053&view=rev Log: make the 'fp return in ST(0)' optimization smart enough to look through token factor Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=46053&r1=46052&r2=46053&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Tue Jan 15 23:53:06 2008 @@ -767,7 +767,7 @@ // If this is a load into a scalarsse value, don't store the loaded value // back to the stack, only to reload it: just replace the scalar-sse load. if (ISD::isNON_EXTLoad(Value.Val) && - (Chain == Value.getValue(1) || Chain == Value.getOperand(0))) { + Chain.reachesChainWithoutSideEffects(Value.getOperand(0))) { Chain = Value.getOperand(0); MemLoc = Value.getOperand(1); } else { From sabre at nondot.org Tue Jan 15 23:56:59 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 05:56:59 -0000 Subject: [llvm-commits] [llvm] r46054 - in /llvm/trunk: lib/Target/X86/X86ISelLowering.cpp test/CodeGen/X86/fp-stack-retcopy.ll Message-ID: <200801160557.m0G5v0eP016985@zion.cs.uiuc.edu> Author: lattner Date: Tue Jan 15 23:56:59 2008 New Revision: 46054 URL: http://llvm.org/viewvc/llvm-project?rev=46054&view=rev Log: My previous commit had an incomplete message, it should have been: make the 'fp return in ST(0)' optimization smart enough to look through token factor nodes. THis allows us to compile testcases like CodeGen/X86/fp-stack-retcopy.ll into: _carg: subl $12, %esp call L_foo$stub fstpl (%esp) fldl (%esp) addl $12, %esp ret instead of: _carg: subl $28, %esp call L_foo$stub fstpl 16(%esp) movsd 16(%esp), %xmm0 movsd %xmm0, 8(%esp) fldl 8(%esp) addl $28, %esp ret Still not optimal, but much better and this is a trivial patch. Fixing the rest requires invasive surgery that is is not llvm 2.2 material. Added: llvm/trunk/test/CodeGen/X86/fp-stack-retcopy.ll Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=46054&r1=46053&r2=46054&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Tue Jan 15 23:56:59 2008 @@ -767,7 +767,7 @@ // If this is a load into a scalarsse value, don't store the loaded value // back to the stack, only to reload it: just replace the scalar-sse load. if (ISD::isNON_EXTLoad(Value.Val) && - Chain.reachesChainWithoutSideEffects(Value.getOperand(0))) { + Chain.reachesChainWithoutSideEffects(Value.getOperand(0))) { Chain = Value.getOperand(0); MemLoc = Value.getOperand(1); } else { Added: llvm/trunk/test/CodeGen/X86/fp-stack-retcopy.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/fp-stack-retcopy.ll?rev=46054&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/X86/fp-stack-retcopy.ll (added) +++ llvm/trunk/test/CodeGen/X86/fp-stack-retcopy.ll Tue Jan 15 23:56:59 2008 @@ -0,0 +1,12 @@ +; This should not copy the result of foo into an xmm register. +; RUN: llvm-as < %s | llc -march=x86 -mcpu=yonah -mtriple=i686-apple-darwin9 | not grep xmm +; rdar://5689903 + +declare double @foo() + +define double @carg({ double, double }* byval %z) nounwind { +entry: + %tmp5 = tail call double @foo() nounwind ; [#uses=1] + ret double %tmp5 +} + From sabre at nondot.org Wed Jan 16 00:19:45 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 06:19:45 -0000 Subject: [llvm-commits] [llvm] r46055 - in /llvm/trunk/lib/Target/X86: X86ISelLowering.cpp X86ISelLowering.h Message-ID: <200801160619.m0G6JjJv018401@zion.cs.uiuc.edu> Author: lattner Date: Wed Jan 16 00:19:45 2008 New Revision: 46055 URL: http://llvm.org/viewvc/llvm-project?rev=46055&view=rev Log: introduce a isTypeInSSEReg predicate, which allows us to simplify some code. No functionality change. Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp llvm/trunk/lib/Target/X86/X86ISelLowering.h Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=46055&r1=46054&r2=46055&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Wed Jan 16 00:19:45 2008 @@ -760,8 +760,7 @@ // If this is an FP return with ScalarSSE, we need to move the value from // an XMM register onto the fp-stack. - if ((X86ScalarSSEf32 && RVLocs[0].getValVT()==MVT::f32) || - (X86ScalarSSEf64 && RVLocs[0].getValVT()==MVT::f64)) { + if (isTypeInSSEReg(RVLocs[0].getValVT())) { SDOperand MemLoc; // If this is a load into a scalarsse value, don't store the loaded value @@ -836,8 +835,7 @@ // If we are using ScalarSSE, store ST(0) to the stack and reload it into // an XMM register. - if ((X86ScalarSSEf32 && RVLocs[0].getValVT() == MVT::f32) || - (X86ScalarSSEf64 && RVLocs[0].getValVT() == MVT::f64)) { + if (isTypeInSSEReg(RVLocs[0].getValVT())) { SDOperand StoreLoc; const Value *SrcVal = 0; int SrcValOffset = 0; @@ -3862,18 +3860,15 @@ StackSlot, NULL, 0); // These are really Legal; caller falls through into that case. - if (SrcVT==MVT::i32 && Op.getValueType() == MVT::f32 && X86ScalarSSEf32) + if (SrcVT == MVT::i32 && isTypeInSSEReg(Op.getValueType())) return Result; - if (SrcVT==MVT::i32 && Op.getValueType() == MVT::f64 && X86ScalarSSEf64) - return Result; - if (SrcVT==MVT::i64 && Op.getValueType() != MVT::f80 && + if (SrcVT == MVT::i64 && Op.getValueType() != MVT::f80 && Subtarget->is64Bit()) return Result; // Build the FILD SDVTList Tys; - bool useSSE = (X86ScalarSSEf32 && Op.getValueType() == MVT::f32) || - (X86ScalarSSEf64 && Op.getValueType() == MVT::f64); + bool useSSE = isTypeInSSEReg(Op.getValueType()); if (useSSE) Tys = DAG.getVTList(MVT::f64, MVT::Other, MVT::Flag); else @@ -3916,10 +3911,7 @@ // These are really Legal. if (Op.getValueType() == MVT::i32 && - X86ScalarSSEf32 && Op.getOperand(0).getValueType() == MVT::f32) - return std::make_pair(SDOperand(), SDOperand()); - if (Op.getValueType() == MVT::i32 && - X86ScalarSSEf64 && Op.getOperand(0).getValueType() == MVT::f64) + isTypeInSSEReg(Op.getOperand(0).getValueType())) return std::make_pair(SDOperand(), SDOperand()); if (Subtarget->is64Bit() && Op.getValueType() == MVT::i64 && @@ -3942,8 +3934,7 @@ SDOperand Chain = DAG.getEntryNode(); SDOperand Value = Op.getOperand(0); - if ((X86ScalarSSEf32 && Op.getOperand(0).getValueType() == MVT::f32) || - (X86ScalarSSEf64 && Op.getOperand(0).getValueType() == MVT::f64)) { + if (isTypeInSSEReg(Op.getOperand(0).getValueType())) { assert(Op.getValueType() == MVT::i64 && "Invalid FP_TO_SINT to lower!"); Chain = DAG.getStore(Chain, Value, StackSlot, NULL, 0); SDVTList Tys = DAG.getVTList(Op.getOperand(0).getValueType(), MVT::Other); @@ -4172,13 +4163,12 @@ SDOperand Cmp = Cond.getOperand(1); unsigned Opc = Cmp.getOpcode(); MVT::ValueType VT = Op.getValueType(); + bool IllegalFPCMov = false; - if (VT == MVT::f32 && !X86ScalarSSEf32) - IllegalFPCMov = !hasFPCMov(cast(CC)->getSignExtended()); - else if (VT == MVT::f64 && !X86ScalarSSEf64) - IllegalFPCMov = !hasFPCMov(cast(CC)->getSignExtended()); - else if (VT == MVT::f80) + if (MVT::isFloatingPoint(VT) && !MVT::isVector(VT) && + !isTypeInSSEReg(VT)) // FPStack? IllegalFPCMov = !hasFPCMov(cast(CC)->getSignExtended()); + if ((Opc == X86ISD::CMP || Opc == X86ISD::COMI || Opc == X86ISD::UCOMI) && !IllegalFPCMov) { Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.h?rev=46055&r1=46054&r2=46055&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.h (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.h Wed Jan 16 00:19:45 2008 @@ -425,6 +425,13 @@ /// When SSE2 is available, use it for f64 operations. bool X86ScalarSSEf32; bool X86ScalarSSEf64; + + /// isTypeInSSEReg - Return true if the specified scalar FP type is computed + /// in an SSE register, not on the X87 floating point stack. + bool isTypeInSSEReg(MVT::ValueType VT) const { + return (VT == MVT::f64 && X86ScalarSSEf64) || // f64 is when SSE2 + (VT == MVT::f32 && X86ScalarSSEf32); // f32 is when SSE1 + } SDNode *LowerCallResult(SDOperand Chain, SDOperand InFlag, SDNode*TheCall, unsigned CallingConv, SelectionDAG &DAG); From sabre at nondot.org Wed Jan 16 00:22:05 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 06:22:05 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46056 - /llvm-gcc-4.2/trunk/gcc/config/darwin.h Message-ID: <200801160622.m0G6M56l018550@zion.cs.uiuc.edu> Author: lattner Date: Wed Jan 16 00:22:04 2008 New Revision: 46056 URL: http://llvm.org/viewvc/llvm-project?rev=46056&view=rev Log: VLA's aren't c90, use alloca instead. Modified: llvm-gcc-4.2/trunk/gcc/config/darwin.h Modified: llvm-gcc-4.2/trunk/gcc/config/darwin.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/darwin.h?rev=46056&r1=46055&r2=46056&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/darwin.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/darwin.h Wed Jan 16 00:22:04 2008 @@ -925,7 +925,7 @@ #define ASM_DECLARE_UNRESOLVED_REFERENCE(FILE,NAME) \ do { \ if (FILE) { \ - char Buffer[strlen(NAME)+30]; \ + char *Buffer = alloca(strlen(NAME)+30); \ if (MACHOPIC_INDIRECT) \ sprintf(Buffer, "\t.lazy_reference %s", NAME); \ else \ From sabre at nondot.org Wed Jan 16 00:22:21 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 06:22:21 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r46057 - /llvm-gcc-4.0/trunk/gcc/config/darwin.h Message-ID: <200801160622.m0G6MLIC018582@zion.cs.uiuc.edu> Author: lattner Date: Wed Jan 16 00:22:21 2008 New Revision: 46057 URL: http://llvm.org/viewvc/llvm-project?rev=46057&view=rev Log: vla's aren't C90, use alloca instead. Modified: llvm-gcc-4.0/trunk/gcc/config/darwin.h Modified: llvm-gcc-4.0/trunk/gcc/config/darwin.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/config/darwin.h?rev=46057&r1=46056&r2=46057&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/config/darwin.h (original) +++ llvm-gcc-4.0/trunk/gcc/config/darwin.h Wed Jan 16 00:22:21 2008 @@ -1386,7 +1386,7 @@ #define ASM_DECLARE_UNRESOLVED_REFERENCE(FILE,NAME) \ do { \ if (FILE) { \ - char Buffer[strlen(NAME)+30]; \ + char *Buffer = alloca(strlen(NAME)+30); \ if (MACHOPIC_INDIRECT) \ sprintf(Buffer, "\t.lazy_reference %s", NAME); \ else \ From sabre at nondot.org Wed Jan 16 00:24:27 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 06:24:27 -0000 Subject: [llvm-commits] [llvm] r46058 - in /llvm/trunk/lib/Target/X86: X86ISelLowering.cpp X86ISelLowering.h Message-ID: <200801160624.m0G6ORNF018771@zion.cs.uiuc.edu> Author: lattner Date: Wed Jan 16 00:24:21 2008 New Revision: 46058 URL: http://llvm.org/viewvc/llvm-project?rev=46058&view=rev Log: make it more clear that this predicate only applies to scalar FP types. Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp llvm/trunk/lib/Target/X86/X86ISelLowering.h Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=46058&r1=46057&r2=46058&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Wed Jan 16 00:24:21 2008 @@ -760,7 +760,7 @@ // If this is an FP return with ScalarSSE, we need to move the value from // an XMM register onto the fp-stack. - if (isTypeInSSEReg(RVLocs[0].getValVT())) { + if (isScalarFPTypeInSSEReg(RVLocs[0].getValVT())) { SDOperand MemLoc; // If this is a load into a scalarsse value, don't store the loaded value @@ -835,7 +835,7 @@ // If we are using ScalarSSE, store ST(0) to the stack and reload it into // an XMM register. - if (isTypeInSSEReg(RVLocs[0].getValVT())) { + if (isScalarFPTypeInSSEReg(RVLocs[0].getValVT())) { SDOperand StoreLoc; const Value *SrcVal = 0; int SrcValOffset = 0; @@ -3860,7 +3860,7 @@ StackSlot, NULL, 0); // These are really Legal; caller falls through into that case. - if (SrcVT == MVT::i32 && isTypeInSSEReg(Op.getValueType())) + if (SrcVT == MVT::i32 && isScalarFPTypeInSSEReg(Op.getValueType())) return Result; if (SrcVT == MVT::i64 && Op.getValueType() != MVT::f80 && Subtarget->is64Bit()) @@ -3868,7 +3868,7 @@ // Build the FILD SDVTList Tys; - bool useSSE = isTypeInSSEReg(Op.getValueType()); + bool useSSE = isScalarFPTypeInSSEReg(Op.getValueType()); if (useSSE) Tys = DAG.getVTList(MVT::f64, MVT::Other, MVT::Flag); else @@ -3911,7 +3911,7 @@ // These are really Legal. if (Op.getValueType() == MVT::i32 && - isTypeInSSEReg(Op.getOperand(0).getValueType())) + isScalarFPTypeInSSEReg(Op.getOperand(0).getValueType())) return std::make_pair(SDOperand(), SDOperand()); if (Subtarget->is64Bit() && Op.getValueType() == MVT::i64 && @@ -3934,7 +3934,7 @@ SDOperand Chain = DAG.getEntryNode(); SDOperand Value = Op.getOperand(0); - if (isTypeInSSEReg(Op.getOperand(0).getValueType())) { + if (isScalarFPTypeInSSEReg(Op.getOperand(0).getValueType())) { assert(Op.getValueType() == MVT::i64 && "Invalid FP_TO_SINT to lower!"); Chain = DAG.getStore(Chain, Value, StackSlot, NULL, 0); SDVTList Tys = DAG.getVTList(Op.getOperand(0).getValueType(), MVT::Other); @@ -4166,7 +4166,7 @@ bool IllegalFPCMov = false; if (MVT::isFloatingPoint(VT) && !MVT::isVector(VT) && - !isTypeInSSEReg(VT)) // FPStack? + !isScalarFPTypeInSSEReg(VT)) // FPStack? IllegalFPCMov = !hasFPCMov(cast(CC)->getSignExtended()); if ((Opc == X86ISD::CMP || Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.h?rev=46058&r1=46057&r2=46058&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.h (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.h Wed Jan 16 00:24:21 2008 @@ -426,9 +426,9 @@ bool X86ScalarSSEf32; bool X86ScalarSSEf64; - /// isTypeInSSEReg - Return true if the specified scalar FP type is computed - /// in an SSE register, not on the X87 floating point stack. - bool isTypeInSSEReg(MVT::ValueType VT) const { + /// isScalarFPTypeInSSEReg - Return true if the specified scalar FP type is + /// computed in an SSE register, not on the X87 floating point stack. + bool isScalarFPTypeInSSEReg(MVT::ValueType VT) const { return (VT == MVT::f64 && X86ScalarSSEf64) || // f64 is when SSE2 (VT == MVT::f32 && X86ScalarSSEf32); // f32 is when SSE1 } From isanbard at gmail.com Wed Jan 16 00:27:13 2008 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 16 Jan 2008 06:27:13 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46059 - /llvm-gcc-4.2/tags/Apple/llvmgcc42-2009/ Message-ID: <200801160627.m0G6RD1s018916@zion.cs.uiuc.edu> Author: void Date: Wed Jan 16 00:27:12 2008 New Revision: 46059 URL: http://llvm.org/viewvc/llvm-project?rev=46059&view=rev Log: Creating llvmgcc42-2009 branch Added: llvm-gcc-4.2/tags/Apple/llvmgcc42-2009/ - copied from r46058, llvm-gcc-4.2/trunk/ From sabre at nondot.org Wed Jan 16 00:32:03 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 06:32:03 -0000 Subject: [llvm-commits] [llvm] r46060 - /llvm/trunk/test/CodeGen/X86/fp-stack-ret-store.ll Message-ID: <200801160632.m0G6W3aq019143@zion.cs.uiuc.edu> Author: lattner Date: Wed Jan 16 00:32:02 2008 New Revision: 46060 URL: http://llvm.org/viewvc/llvm-project?rev=46060&view=rev Log: make sure to use a cpu that has sse. Modified: llvm/trunk/test/CodeGen/X86/fp-stack-ret-store.ll Modified: llvm/trunk/test/CodeGen/X86/fp-stack-ret-store.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/fp-stack-ret-store.ll?rev=46060&r1=46059&r2=46060&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/X86/fp-stack-ret-store.ll (original) +++ llvm/trunk/test/CodeGen/X86/fp-stack-ret-store.ll Wed Jan 16 00:32:02 2008 @@ -1,4 +1,4 @@ -; RUN: llvm-as < %s | llc | not grep movss +; RUN: llvm-as < %s | llc -mcpu=yonah | not grep movss target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128" target triple = "i686-apple-darwin8" From asl at math.spbu.ru Wed Jan 16 00:49:55 2008 From: asl at math.spbu.ru (Anton Korobeynikov) Date: Wed, 16 Jan 2008 09:49:55 +0300 Subject: [llvm-commits] [llvm-gcc-4.2] r46039 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp In-Reply-To: <200801160047.m0G0l4Cb027149@zion.cs.uiuc.edu> References: <200801160047.m0G0l4Cb027149@zion.cs.uiuc.edu> Message-ID: Hello, Bill > + if (BigEndian == FLOAT_WORDS_BIG_ENDIAN) { > + UArr[0] = RealArr[0]; // Long -> int convert > + UArr[1] = RealArr[1]; > + } else { > + UArr[0] = RealArr[1]; // Long -> int convert > + UArr[1] = RealArr[0]; > + } > + Why don't do just something like this: UArr[0] = RealArr[0]; // Long -> int convert UArr[1] = RealArr[1]; if (BigEndian == FLOAT_WORDS_BIG_ENDIAN) std::swap(UArr[0], UArr[1]); This looks to me pretty much readable. -- With best regards, Anton Korobeynikov Faculty of Mathematics and Mechanics, Saint Petersburg State University From sabre at nondot.org Wed Jan 16 00:57:08 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 06:57:08 -0000 Subject: [llvm-commits] [llvm] r46061 - /llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Message-ID: <200801160657.m0G6v8d5020507@zion.cs.uiuc.edu> Author: lattner Date: Wed Jan 16 00:57:07 2008 New Revision: 46061 URL: http://llvm.org/viewvc/llvm-project?rev=46061&view=rev Log: Change legalizeop of FP_ROUND and FP_EXTEND to not fall through into the ANY_EXTEND/ZERO_EXTEND/SIGN_EXTEND code to simplify it. Unmerge the code for FP_ROUND and FP_EXTEND from each other to make each one simpler. Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=46061&r1=46060&r2=46061&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Wed Jan 16 00:57:07 2008 @@ -3569,18 +3569,50 @@ } break; - case ISD::FP_EXTEND: + case ISD::FP_EXTEND: { + MVT::ValueType newVT = Op.getValueType(); + MVT::ValueType oldVT = Op.getOperand(0).getValueType(); + if (TLI.getConvertAction(oldVT, newVT) == TargetLowering::Expand) { + // The only other way we can lower this is to turn it into a STORE, + // LOAD pair, targetting a temporary location (a stack slot). + + // NOTE: there is a choice here between constantly creating new stack + // slots and always reusing the same one. We currently always create + // new ones, as reuse may inhibit scheduling. + const Type *Ty = MVT::getTypeForValueType(oldVT); + uint64_t TySize = TLI.getTargetData()->getABITypeSize(Ty); + unsigned Align = TLI.getTargetData()->getPrefTypeAlignment(Ty); + MachineFunction &MF = DAG.getMachineFunction(); + int SSFI = + MF.getFrameInfo()->CreateStackObject(TySize, Align); + SDOperand StackSlot = DAG.getFrameIndex(SSFI, TLI.getPointerTy()); + Result = DAG.getStore(DAG.getEntryNode(), Node->getOperand(0), + StackSlot, NULL, 0); + Result = DAG.getExtLoad(ISD::EXTLOAD, newVT, + Result, StackSlot, NULL, 0, oldVT); + break; + } + } + switch (getTypeAction(Node->getOperand(0).getValueType())) { + case Expand: assert(0 && "Shouldn't need to expand other operators here!"); + case Legal: + Tmp1 = LegalizeOp(Node->getOperand(0)); + Result = DAG.UpdateNodeOperands(Result, Tmp1); + break; + case Promote: + Tmp1 = PromoteOp(Node->getOperand(0)); + Result = DAG.getNode(ISD::FP_EXTEND, Op.getValueType(), Tmp1); + break; + } + break; case ISD::FP_ROUND: { MVT::ValueType newVT = Op.getValueType(); MVT::ValueType oldVT = Op.getOperand(0).getValueType(); if (TLI.getConvertAction(oldVT, newVT) == TargetLowering::Expand) { - if (Node->getOpcode() == ISD::FP_ROUND && oldVT == MVT::ppcf128) { + if (oldVT == MVT::ppcf128) { SDOperand Lo, Hi; ExpandOp(Node->getOperand(0), Lo, Hi); - if (newVT == MVT::f64) - Result = Hi; - else - Result = DAG.getNode(ISD::FP_ROUND, newVT, Hi); + Result = DAG.getNode(ISD::FP_ROUND, newVT, Hi); break; } else { // The only other way we can lower this is to turn it into a STORE, @@ -3589,30 +3621,31 @@ // NOTE: there is a choice here between constantly creating new stack // slots and always reusing the same one. We currently always create // new ones, as reuse may inhibit scheduling. - MVT::ValueType slotVT = - (Node->getOpcode() == ISD::FP_EXTEND) ? oldVT : newVT; - const Type *Ty = MVT::getTypeForValueType(slotVT); + const Type *Ty = MVT::getTypeForValueType(newVT); uint64_t TySize = TLI.getTargetData()->getABITypeSize(Ty); unsigned Align = TLI.getTargetData()->getPrefTypeAlignment(Ty); MachineFunction &MF = DAG.getMachineFunction(); - int SSFI = - MF.getFrameInfo()->CreateStackObject(TySize, Align); + int SSFI = MF.getFrameInfo()->CreateStackObject(TySize, Align); SDOperand StackSlot = DAG.getFrameIndex(SSFI, TLI.getPointerTy()); - if (Node->getOpcode() == ISD::FP_EXTEND) { - Result = DAG.getStore(DAG.getEntryNode(), Node->getOperand(0), - StackSlot, NULL, 0); - Result = DAG.getExtLoad(ISD::EXTLOAD, newVT, - Result, StackSlot, NULL, 0, oldVT); - } else { - Result = DAG.getTruncStore(DAG.getEntryNode(), Node->getOperand(0), - StackSlot, NULL, 0, newVT); - Result = DAG.getLoad(newVT, Result, StackSlot, NULL, 0); - } + Result = DAG.getTruncStore(DAG.getEntryNode(), Node->getOperand(0), + StackSlot, NULL, 0, newVT); + Result = DAG.getLoad(newVT, Result, StackSlot, NULL, 0); break; } } } - // FALL THROUGH + switch (getTypeAction(Node->getOperand(0).getValueType())) { + case Expand: assert(0 && "Shouldn't need to expand other operators here!"); + case Legal: + Tmp1 = LegalizeOp(Node->getOperand(0)); + Result = DAG.UpdateNodeOperands(Result, Tmp1); + break; + case Promote: + Tmp1 = PromoteOp(Node->getOperand(0)); + Result = DAG.getNode(ISD::FP_ROUND, Op.getValueType(), Tmp1); + break; + } + break; case ISD::ANY_EXTEND: case ISD::ZERO_EXTEND: case ISD::SIGN_EXTEND: @@ -3641,16 +3674,6 @@ Result, DAG.getValueType(Node->getOperand(0).getValueType())); break; - case ISD::FP_EXTEND: - Result = PromoteOp(Node->getOperand(0)); - if (Result.getValueType() != Op.getValueType()) - // Dynamically dead while we have only 2 FP types. - Result = DAG.getNode(ISD::FP_EXTEND, Op.getValueType(), Result); - break; - case ISD::FP_ROUND: - Result = PromoteOp(Node->getOperand(0)); - Result = DAG.getNode(Node->getOpcode(), Op.getValueType(), Result); - break; } } break; From sabre at nondot.org Wed Jan 16 01:03:22 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 07:03:22 -0000 Subject: [llvm-commits] [llvm] r46062 - /llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Message-ID: <200801160703.m0G73MjK020959@zion.cs.uiuc.edu> Author: lattner Date: Wed Jan 16 01:03:22 2008 New Revision: 46062 URL: http://llvm.org/viewvc/llvm-project?rev=46062&view=rev Log: simplify a bunch of code by using SelectionDAG::CreateStackTemporary instead of inlining its body. Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=46062&r1=46061&r2=46062&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Wed Jan 16 01:03:22 2008 @@ -3579,13 +3579,7 @@ // NOTE: there is a choice here between constantly creating new stack // slots and always reusing the same one. We currently always create // new ones, as reuse may inhibit scheduling. - const Type *Ty = MVT::getTypeForValueType(oldVT); - uint64_t TySize = TLI.getTargetData()->getABITypeSize(Ty); - unsigned Align = TLI.getTargetData()->getPrefTypeAlignment(Ty); - MachineFunction &MF = DAG.getMachineFunction(); - int SSFI = - MF.getFrameInfo()->CreateStackObject(TySize, Align); - SDOperand StackSlot = DAG.getFrameIndex(SSFI, TLI.getPointerTy()); + SDOperand StackSlot = DAG.CreateStackTemporary(oldVT); Result = DAG.getStore(DAG.getEntryNode(), Node->getOperand(0), StackSlot, NULL, 0); Result = DAG.getExtLoad(ISD::EXTLOAD, newVT, @@ -3621,12 +3615,7 @@ // NOTE: there is a choice here between constantly creating new stack // slots and always reusing the same one. We currently always create // new ones, as reuse may inhibit scheduling. - const Type *Ty = MVT::getTypeForValueType(newVT); - uint64_t TySize = TLI.getTargetData()->getABITypeSize(Ty); - unsigned Align = TLI.getTargetData()->getPrefTypeAlignment(Ty); - MachineFunction &MF = DAG.getMachineFunction(); - int SSFI = MF.getFrameInfo()->CreateStackObject(TySize, Align); - SDOperand StackSlot = DAG.getFrameIndex(SSFI, TLI.getPointerTy()); + SDOperand StackSlot = DAG.CreateStackTemporary(newVT); Result = DAG.getTruncStore(DAG.getEntryNode(), Node->getOperand(0), StackSlot, NULL, 0, newVT); Result = DAG.getLoad(newVT, Result, StackSlot, NULL, 0); @@ -3708,13 +3697,7 @@ // NOTE: there is a choice here between constantly creating new stack // slots and always reusing the same one. We currently always create // new ones, as reuse may inhibit scheduling. - const Type *Ty = MVT::getTypeForValueType(ExtraVT); - uint64_t TySize = TLI.getTargetData()->getABITypeSize(Ty); - unsigned Align = TLI.getTargetData()->getPrefTypeAlignment(Ty); - MachineFunction &MF = DAG.getMachineFunction(); - int SSFI = - MF.getFrameInfo()->CreateStackObject(TySize, Align); - SDOperand StackSlot = DAG.getFrameIndex(SSFI, TLI.getPointerTy()); + SDOperand StackSlot = DAG.CreateStackTemporary(ExtraVT); Result = DAG.getTruncStore(DAG.getEntryNode(), Node->getOperand(0), StackSlot, NULL, 0, ExtraVT); Result = DAG.getExtLoad(ISD::EXTLOAD, Node->getValueType(0), @@ -5070,14 +5053,9 @@ if (Op0.getValueType() == MVT::i32) { // simple 32-bit [signed|unsigned] integer to float/double expansion - // get the stack frame index of a 8 byte buffer, pessimistically aligned - MachineFunction &MF = DAG.getMachineFunction(); - const Type *F64Type = MVT::getTypeForValueType(MVT::f64); - unsigned StackAlign = - (unsigned)TLI.getTargetData()->getPrefTypeAlignment(F64Type); - int SSFI = MF.getFrameInfo()->CreateStackObject(8, StackAlign); - // get address of 8 byte buffer - SDOperand StackSlot = DAG.getFrameIndex(SSFI, TLI.getPointerTy()); + // Get the stack frame index of a 8 byte buffer. + SDOperand StackSlot = DAG.CreateStackTemporary(MVT::f64); + // word offset constant for Hi/Lo address computation SDOperand WordOff = DAG.getConstant(sizeof(int), TLI.getPointerTy()); // set up Hi and Lo (into buffer) address based on endian From isanbard at gmail.com Wed Jan 16 01:23:34 2008 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 16 Jan 2008 07:23:34 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46063 - /llvm-gcc-4.2/trunk/gcc/config/i386/i386-protos.h Message-ID: <200801160723.m0G7NYI9022222@zion.cs.uiuc.edu> Author: void Date: Wed Jan 16 01:23:34 2008 New Revision: 46063 URL: http://llvm.org/viewvc/llvm-project?rev=46063&view=rev Log: Prototypes required. Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386-protos.h Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386-protos.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/i386-protos.h?rev=46063&r1=46062&r2=46063&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/i386-protos.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/i386-protos.h Wed Jan 16 01:23:34 2008 @@ -255,3 +255,9 @@ /* APPLE LOCAL 3399553 */ extern void ix86_expand_flt_rounds (rtx); extern int asm_preferred_eh_data_format (int, int); + +/* LLVM LOCAL begin */ +enum machine_mode ix86_getNaturalModeForType(tree type); +int ix86_HowToPassArgument(enum machine_mode mode, tree type, int in_return, + int *int_nregs, int *sse_nregs); +/* LLVM LOCAL end */ From isanbard at gmail.com Wed Jan 16 01:27:20 2008 From: isanbard at gmail.com (Bill Wendling) Date: Tue, 15 Jan 2008 23:27:20 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r46039 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp In-Reply-To: References: <200801160047.m0G0l4Cb027149@zion.cs.uiuc.edu> Message-ID: <4766B5B3-323A-4877-B594-305F543447D8@gmail.com> Hi Anton, >> + if (BigEndian == FLOAT_WORDS_BIG_ENDIAN) { >> + UArr[0] = RealArr[0]; // Long -> int convert >> + UArr[1] = RealArr[1]; >> + } else { >> + UArr[0] = RealArr[1]; // Long -> int convert >> + UArr[1] = RealArr[0]; >> + } >> + > Why don't do just something like this: > UArr[0] = RealArr[0]; // Long -> int convert > UArr[1] = RealArr[1]; > > if (BigEndian == FLOAT_WORDS_BIG_ENDIAN) > std::swap(UArr[0], UArr[1]); > > This looks to me pretty much readable. Either way is fine. You're correct that your way is a bit more readable. Done. -bw From isanbard at gmail.com Wed Jan 16 01:28:16 2008 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 16 Jan 2008 07:28:16 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46064 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Message-ID: <200801160728.m0G7SHXf022495@zion.cs.uiuc.edu> Author: void Date: Wed Jan 16 01:28:16 2008 New Revision: 46064 URL: http://llvm.org/viewvc/llvm-project?rev=46064&view=rev Log: Simplify the code to make it more readable. Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=46064&r1=46063&r2=46064&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Wed Jan 16 01:28:16 2008 @@ -5492,13 +5492,11 @@ // maintainers removed this in a fit of cleanliness between 4.0 // and 4.2. For now, host and target endianness must match. - if (BigEndian == FLOAT_WORDS_BIG_ENDIAN) { - UArr[0] = RealArr[0]; // Long -> int convert - UArr[1] = RealArr[1]; - } else { - UArr[0] = RealArr[1]; // Long -> int convert - UArr[1] = RealArr[0]; - } + UArr[0] = RealArr[0]; // Long -> int convert + UArr[1] = RealArr[1]; + + if (BigEndian != FLOAT_WORDS_BIG_ENDIAN) + std::swap(UArr[0], UArr[1]); return ConstantFP::get(Ty, Ty==Type::FloatTy ? APFloat((float)V) : APFloat(V)); From wmatyjewicz at fastmail.fm Wed Jan 16 01:29:55 2008 From: wmatyjewicz at fastmail.fm (Wojciech Matyjewicz) Date: Wed, 16 Jan 2008 08:29:55 +0100 Subject: [llvm-commits] Fix for PR1798 (ScalarEvolution) In-Reply-To: <8FDBF4AD-7FBD-4155-8E33-B5299FAC064C@apple.com> References: <478D2769.8060503@fastmail.fm> <8FDBF4AD-7FBD-4155-8E33-B5299FAC064C@apple.com> Message-ID: <478DB273.9090905@fastmail.fm> Chris Lattner wrote: > I think we should wait to address this after LLVM 2.2 branches. That > said, the short-term fix is to round up to the next power of two (e.g. > 32 or 64 bits) and disable this transformation when that size is not a > "normal" llvm size (8, 16, 32, 64). > > Hopefully llvm 2.3 will have real APInt support in the code generator, > at which time we can remove these hacks. :) > > Does this sound reasonable? Yes, it does. I'll add the hacks and commit the patch after LLVM 2.2 release. -Wojtek From asl at math.spbu.ru Wed Jan 16 01:43:55 2008 From: asl at math.spbu.ru (Anton Korobeynikov) Date: Wed, 16 Jan 2008 10:43:55 +0300 Subject: [llvm-commits] [llvm-gcc-4.2] r46039 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp In-Reply-To: <4766B5B3-323A-4877-B594-305F543447D8@gmail.com> References: <200801160047.m0G0l4Cb027149@zion.cs.uiuc.edu> <4766B5B3-323A-4877-B594-305F543447D8@gmail.com> Message-ID: On 1/16/08, Bill Wendling wrote: > Either way is fine. You're correct that your way is a bit more > readable. Done. Thanks! -- With best regards, Anton Korobeynikov Faculty of Mathematics and Mechanics, Saint Petersburg State University From sabre at nondot.org Wed Jan 16 01:45:30 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 07:45:30 -0000 Subject: [llvm-commits] [llvm] r46065 - /llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Message-ID: <200801160745.m0G7jUL5023562@zion.cs.uiuc.edu> Author: lattner Date: Wed Jan 16 01:45:30 2008 New Revision: 46065 URL: http://llvm.org/viewvc/llvm-project?rev=46065&view=rev Log: rename ExpandBIT_CONVERT to EmitStackConvert, generalizing it to allow it to emit different load and store kinds. Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=46065&r1=46064&r2=46065&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Wed Jan 16 01:45:30 2008 @@ -199,7 +199,8 @@ SDOperand ExpandIntToFP(bool isSigned, MVT::ValueType DestTy, SDOperand Source); - SDOperand ExpandBIT_CONVERT(MVT::ValueType DestVT, SDOperand SrcOp); + SDOperand EmitStackConvert(SDOperand SrcOp, MVT::ValueType SlotVT, + MVT::ValueType DestVT); SDOperand ExpandBUILD_VECTOR(SDNode *Node); SDOperand ExpandSCALAR_TO_VECTOR(SDNode *Node); SDOperand ExpandLegalINT_TO_FP(bool isSigned, @@ -3326,7 +3327,8 @@ } case ISD::BIT_CONVERT: if (!isTypeLegal(Node->getOperand(0).getValueType())) { - Result = ExpandBIT_CONVERT(Node->getValueType(0), Node->getOperand(0)); + Result = EmitStackConvert(Node->getOperand(0), Node->getValueType(0), + Node->getValueType(0)); } else if (MVT::isVector(Op.getOperand(0).getValueType())) { // The input has to be a vector type, we have to either scalarize it, pack // it, or convert it based on whether the input vector type is legal. @@ -3357,7 +3359,8 @@ Node->getOperand(0).getValueType())) { default: assert(0 && "Unknown operation action!"); case TargetLowering::Expand: - Result = ExpandBIT_CONVERT(Node->getValueType(0), Node->getOperand(0)); + Result = EmitStackConvert(Node->getOperand(0), Node->getValueType(0), + Node->getValueType(0)); break; case TargetLowering::Legal: Tmp1 = LegalizeOp(Node->getOperand(0)); @@ -3583,7 +3586,7 @@ Result = DAG.getStore(DAG.getEntryNode(), Node->getOperand(0), StackSlot, NULL, 0); Result = DAG.getExtLoad(ISD::EXTLOAD, newVT, - Result, StackSlot, NULL, 0, oldVT); + Result, StackSlot, NULL, 0, oldVT); break; } } @@ -3872,7 +3875,8 @@ } break; case ISD::BIT_CONVERT: - Result = ExpandBIT_CONVERT(Node->getValueType(0), Node->getOperand(0)); + Result = EmitStackConvert(Node->getOperand(0), Node->getValueType(0), + Node->getValueType(0)); Result = PromoteOp(Result); break; @@ -4559,18 +4563,36 @@ RHS = Tmp2; } -/// ExpandBIT_CONVERT - Expand a BIT_CONVERT node into a store/load combination. -/// The resultant code need not be legal. Note that SrcOp is the input operand -/// to the BIT_CONVERT, not the BIT_CONVERT node itself. -SDOperand SelectionDAGLegalize::ExpandBIT_CONVERT(MVT::ValueType DestVT, - SDOperand SrcOp) { +/// EmitStackConvert - Emit a store/load combination to the stack. This stores +/// SrcOp to a stack slot of type SlotVT, truncating it if needed. It then does +/// a load from the stack slot to DestVT, extending it if needed. +/// The resultant code need not be legal. +SDOperand SelectionDAGLegalize::EmitStackConvert(SDOperand SrcOp, + MVT::ValueType SlotVT, + MVT::ValueType DestVT) { // Create the stack frame object. - SDOperand FIPtr = DAG.CreateStackTemporary(DestVT); + SDOperand FIPtr = DAG.CreateStackTemporary(SlotVT); + + unsigned SrcSize = MVT::getSizeInBits(SrcOp.getValueType()); + unsigned SlotSize = MVT::getSizeInBits(SlotVT); + unsigned DestSize = MVT::getSizeInBits(DestVT); + + // Emit a store to the stack slot. Use a truncstore if the input value is + // later than DestVT. + SDOperand Store; + if (SrcSize > SlotSize) + Store = DAG.getTruncStore(DAG.getEntryNode(), SrcOp, FIPtr, NULL, 0,SlotVT); + else { + assert(SrcSize == SlotSize && "Invalid store"); + Store = DAG.getStore(DAG.getEntryNode(), SrcOp, FIPtr, NULL, 0); + } - // Emit a store to the stack slot. - SDOperand Store = DAG.getStore(DAG.getEntryNode(), SrcOp, FIPtr, NULL, 0); // Result is a load from the stack slot. - return DAG.getLoad(DestVT, Store, FIPtr, NULL, 0); + if (SlotSize == DestSize) + return DAG.getLoad(DestVT, Store, FIPtr, NULL, 0); + + assert(SlotSize < DestSize && "Unknown extension!"); + return DAG.getExtLoad(ISD::EXTLOAD, DestVT, Store, FIPtr, NULL, 0, SlotVT); } SDOperand SelectionDAGLegalize::ExpandSCALAR_TO_VECTOR(SDNode *Node) { @@ -5726,7 +5748,7 @@ // Turn this into a load/store pair by default. if (Tmp.Val == 0) - Tmp = ExpandBIT_CONVERT(VT, Node->getOperand(0)); + Tmp = EmitStackConvert(Node->getOperand(0), VT, VT); ExpandOp(Tmp, Lo, Hi); break; From sabre at nondot.org Wed Jan 16 01:51:34 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 07:51:34 -0000 Subject: [llvm-commits] [llvm] r46066 - /llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Message-ID: <200801160751.m0G7pY7Q023886@zion.cs.uiuc.edu> Author: lattner Date: Wed Jan 16 01:51:34 2008 New Revision: 46066 URL: http://llvm.org/viewvc/llvm-project?rev=46066&view=rev Log: merge a few pieces of code that do the store/load to stack pattern to use EmitStackConvert now. Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=46066&r1=46065&r2=46066&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Wed Jan 16 01:51:34 2008 @@ -3573,20 +3573,12 @@ break; case ISD::FP_EXTEND: { - MVT::ValueType newVT = Op.getValueType(); - MVT::ValueType oldVT = Op.getOperand(0).getValueType(); - if (TLI.getConvertAction(oldVT, newVT) == TargetLowering::Expand) { + MVT::ValueType DstVT = Op.getValueType(); + MVT::ValueType SrcVT = Op.getOperand(0).getValueType(); + if (TLI.getConvertAction(SrcVT, DstVT) == TargetLowering::Expand) { // The only other way we can lower this is to turn it into a STORE, // LOAD pair, targetting a temporary location (a stack slot). - - // NOTE: there is a choice here between constantly creating new stack - // slots and always reusing the same one. We currently always create - // new ones, as reuse may inhibit scheduling. - SDOperand StackSlot = DAG.CreateStackTemporary(oldVT); - Result = DAG.getStore(DAG.getEntryNode(), Node->getOperand(0), - StackSlot, NULL, 0); - Result = DAG.getExtLoad(ISD::EXTLOAD, newVT, - Result, StackSlot, NULL, 0, oldVT); + Result = EmitStackConvert(Node->getOperand(0), SrcVT, DstVT); break; } } @@ -3603,25 +3595,18 @@ } break; case ISD::FP_ROUND: { - MVT::ValueType newVT = Op.getValueType(); - MVT::ValueType oldVT = Op.getOperand(0).getValueType(); - if (TLI.getConvertAction(oldVT, newVT) == TargetLowering::Expand) { - if (oldVT == MVT::ppcf128) { + MVT::ValueType DstVT = Op.getValueType(); + MVT::ValueType SrcVT = Op.getOperand(0).getValueType(); + if (TLI.getConvertAction(SrcVT, DstVT) == TargetLowering::Expand) { + if (SrcVT == MVT::ppcf128) { SDOperand Lo, Hi; ExpandOp(Node->getOperand(0), Lo, Hi); - Result = DAG.getNode(ISD::FP_ROUND, newVT, Hi); + Result = DAG.getNode(ISD::FP_ROUND, DstVT, Hi); break; } else { // The only other way we can lower this is to turn it into a STORE, // LOAD pair, targetting a temporary location (a stack slot). - - // NOTE: there is a choice here between constantly creating new stack - // slots and always reusing the same one. We currently always create - // new ones, as reuse may inhibit scheduling. - SDOperand StackSlot = DAG.CreateStackTemporary(newVT); - Result = DAG.getTruncStore(DAG.getEntryNode(), Node->getOperand(0), - StackSlot, NULL, 0, newVT); - Result = DAG.getLoad(newVT, Result, StackSlot, NULL, 0); + Result = EmitStackConvert(Node->getOperand(0), DstVT, DstVT); break; } } @@ -3700,11 +3685,8 @@ // NOTE: there is a choice here between constantly creating new stack // slots and always reusing the same one. We currently always create // new ones, as reuse may inhibit scheduling. - SDOperand StackSlot = DAG.CreateStackTemporary(ExtraVT); - Result = DAG.getTruncStore(DAG.getEntryNode(), Node->getOperand(0), - StackSlot, NULL, 0, ExtraVT); - Result = DAG.getExtLoad(ISD::EXTLOAD, Node->getValueType(0), - Result, StackSlot, NULL, 0, ExtraVT); + Result = EmitStackConvert(Node->getOperand(0), ExtraVT, + Node->getValueType(0)); } else { assert(0 && "Unknown op"); } From clattner at apple.com Wed Jan 16 01:52:56 2008 From: clattner at apple.com (Chris Lattner) Date: Tue, 15 Jan 2008 23:52:56 -0800 Subject: [llvm-commits] Fix for PR1798 (ScalarEvolution) In-Reply-To: <478DB273.9090905@fastmail.fm> References: <478D2769.8060503@fastmail.fm> <8FDBF4AD-7FBD-4155-8E33-B5299FAC064C@apple.com> <478DB273.9090905@fastmail.fm> Message-ID: On Jan 15, 2008, at 11:29 PM, Wojciech Matyjewicz wrote: > Chris Lattner wrote: >> I think we should wait to address this after LLVM 2.2 branches. That >> said, the short-term fix is to round up to the next power of two >> (e.g. >> 32 or 64 bits) and disable this transformation when that size is >> not a >> "normal" llvm size (8, 16, 32, 64). >> >> Hopefully llvm 2.3 will have real APInt support in the code >> generator, >> at which time we can remove these hacks. :) >> >> Does this sound reasonable? > > Yes, it does. I'll add the hacks and commit the patch after LLVM 2.2 > release. Thanks! -Chris From duncan.sands at math.u-psud.fr Wed Jan 16 01:56:43 2008 From: duncan.sands at math.u-psud.fr (Duncan Sands) Date: Wed, 16 Jan 2008 08:56:43 +0100 Subject: [llvm-commits] [llvm-gcc-4.2] r46039 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp In-Reply-To: <200801160047.m0G0l4Cb027149@zion.cs.uiuc.edu> References: <200801160047.m0G0l4Cb027149@zion.cs.uiuc.edu> Message-ID: <200801160856.43901.duncan.sands@math.u-psud.fr> Hi Bill, > + // Determine endianness of host machine. > + union { > + int x; > + char y[sizeof(int)]; > + } u; > + u.x = 1; > + bool BigEndian = (u.y[0] != 1); how about using bigEndianHost in System/Host.h instead? Ciao, Duncan. From duncan.sands at math.u-psud.fr Wed Jan 16 02:07:11 2008 From: duncan.sands at math.u-psud.fr (Duncan Sands) Date: Wed, 16 Jan 2008 09:07:11 +0100 Subject: [llvm-commits] =?iso-8859-1?q?=5Bllvm=5D_r45850_-=09/llvm/trunk/l?= =?iso-8859-1?q?ib/VMCore/Verifier=2Ecpp?= In-Reply-To: References: <200801110213.m0B2DBvu014340@zion.cs.uiuc.edu> <200801130918.48618.baldrick@free.fr> Message-ID: <200801160907.12129.duncan.sands@math.u-psud.fr> Hi Chris, > ArgPromotion does do this, and I added a testcase to verify it. It > looks like it recomputes the Function's param attrs perfectly and just > applies that attr list to all calls. try this example. Argpromotion deletes the zeroext attribute on the call. ; RUN: llvm-as < %s | opt -argpromotion | llvm-dis | grep zeroext %struct.ss = type { i32, i64 } define internal void @f(%struct.ss* byval %b, i32* byval %X, i32 %i) nounwind { entry: %tmp = getelementptr %struct.ss* %b, i32 0, i32 0 %tmp1 = load i32* %tmp, align 4 %tmp2 = add i32 %tmp1, 1 store i32 %tmp2, i32* %tmp, align 4 store i32 0, i32* %X ret void } define i32 @test(i32* %X) { entry: %S = alloca %struct.ss ; <%struct.ss*> [#uses=4] %tmp1 = getelementptr %struct.ss* %S, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %tmp1, align 8 %tmp4 = getelementptr %struct.ss* %S, i32 0, i32 1 ; [#uses=1] store i64 2, i64* %tmp4, align 4 call void @f( %struct.ss* byval %S, i32* byval %X, i32 zeroext 0) ret i32 0 } From evan.cheng at apple.com Wed Jan 16 02:21:19 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Wed, 16 Jan 2008 08:21:19 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46067 - /llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Message-ID: <200801160821.m0G8LJjc026113@zion.cs.uiuc.edu> Author: evancheng Date: Wed Jan 16 02:21:18 2008 New Revision: 46067 URL: http://llvm.org/viewvc/llvm-project?rev=46067&view=rev Log: Testing for parameter passing, not for return value. Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp?rev=46067&r1=46066&r2=46067&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Wed Jan 16 02:21:18 2008 @@ -671,7 +671,7 @@ int IntRegs, SSERegs; enum machine_mode Mode = ix86_getNaturalModeForType(type); /* If ix86_HowToPassArgument return 0, then it's passed byval in memory.*/ - return !ix86_HowToPassArgument(Mode, type, 1, &IntRegs, &SSERegs); + return !ix86_HowToPassArgument(Mode, type, 0, &IntRegs, &SSERegs); } /* LLVM LOCAL end (ENTIRE FILE!) */ From baldrick at free.fr Wed Jan 16 04:25:59 2008 From: baldrick at free.fr (Duncan Sands) Date: Wed, 16 Jan 2008 10:25:59 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r46068 - /llvm-gcc-4.0/trunk/gcc/llvm-abi.h Message-ID: <200801161026.m0GAQ6Gs011729@zion.cs.uiuc.edu> Author: baldrick Date: Wed Jan 16 04:25:43 2008 New Revision: 46068 URL: http://llvm.org/viewvc/llvm-project?rev=46068&view=rev Log: Fix warning: extra tokens at end of #ifndef directive Modified: llvm-gcc-4.0/trunk/gcc/llvm-abi.h Modified: llvm-gcc-4.0/trunk/gcc/llvm-abi.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/llvm-abi.h?rev=46068&r1=46067&r2=46068&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/llvm-abi.h (original) +++ llvm-gcc-4.0/trunk/gcc/llvm-abi.h Wed Jan 16 04:25:43 2008 @@ -133,7 +133,7 @@ // LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR - Return true if this aggregate // value should be passed by reference by passing its address with the byval // attribute bit set. The default is false. -#ifndef LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) +#ifndef LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR #define LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) \ false #endif From baldrick at free.fr Wed Jan 16 08:43:44 2008 From: baldrick at free.fr (Duncan Sands) Date: Wed, 16 Jan 2008 14:43:44 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46069 - /llvm-gcc-4.2/trunk/gcc/ada/utils.c Message-ID: <200801161443.m0GEhlsj025679@zion.cs.uiuc.edu> Author: baldrick Date: Wed Jan 16 08:43:39 2008 New Revision: 46069 URL: http://llvm.org/viewvc/llvm-project?rev=46069&view=rev Log: Mark the Ada exception begin handler 'nothrow'. This can reduce the amount of eh code output, and is safe since currently the handler... does nothing at all! Modified: llvm-gcc-4.2/trunk/gcc/ada/utils.c Modified: llvm-gcc-4.2/trunk/gcc/ada/utils.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/ada/utils.c?rev=46069&r1=46068&r2=46069&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/ada/utils.c (original) +++ llvm-gcc-4.2/trunk/gcc/ada/utils.c Wed Jan 16 08:43:39 2008 @@ -571,6 +571,8 @@ ptr_void_type_node, endlink)), NULL_TREE, false, true, true, NULL, Empty); + /* LLVM local */ + TREE_NOTHROW (begin_handler_decl) = 1; end_handler_decl = create_subprog_decl (get_identifier ("__gnat_end_handler"), NULL_TREE, From sabre at nondot.org Wed Jan 16 11:59:32 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 17:59:32 -0000 Subject: [llvm-commits] [llvm] r46072 - /llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Message-ID: <200801161759.m0GHxWAe004586@zion.cs.uiuc.edu> Author: lattner Date: Wed Jan 16 11:59:31 2008 New Revision: 46072 URL: http://llvm.org/viewvc/llvm-project?rev=46072&view=rev Log: Fix a ppc long double regression I introduced yesterday due to a simplification. This fixes automotive-basicmath on PPC. Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp?rev=46072&r1=46071&r2=46072&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Wed Jan 16 11:59:31 2008 @@ -1753,6 +1753,7 @@ case ISD::FP_EXTEND: assert(MVT::isFloatingPoint(VT) && MVT::isFloatingPoint(Operand.getValueType()) && "Invalid FP cast!"); + if (Operand.getValueType() == VT) return Operand; // noop conversion. break; case ISD::SIGN_EXTEND: assert(MVT::isInteger(VT) && MVT::isInteger(Operand.getValueType()) && From sabre at nondot.org Wed Jan 16 12:03:52 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 18:03:52 -0000 Subject: [llvm-commits] [llvm] r46073 - /llvm/trunk/test/CodeGen/PowerPC/longdbl-truncate.ll Message-ID: <200801161803.m0GI3quu005001@zion.cs.uiuc.edu> Author: lattner Date: Wed Jan 16 12:03:52 2008 New Revision: 46073 URL: http://llvm.org/viewvc/llvm-project?rev=46073&view=rev Log: add testcase for regression Added: llvm/trunk/test/CodeGen/PowerPC/longdbl-truncate.ll Added: llvm/trunk/test/CodeGen/PowerPC/longdbl-truncate.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/PowerPC/longdbl-truncate.ll?rev=46073&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/PowerPC/longdbl-truncate.ll (added) +++ llvm/trunk/test/CodeGen/PowerPC/longdbl-truncate.ll Wed Jan 16 12:03:52 2008 @@ -0,0 +1,9 @@ +; RUN: llvm-as < %s | llc +target datalayout = "E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f128:64:128" +target triple = "powerpc-apple-darwin8" + +define double @SolveCubic(ppc_fp128 %X) { +entry: + %Y = fptrunc ppc_fp128 %X to double + ret double %Y +} From clattner at apple.com Wed Jan 16 12:40:30 2008 From: clattner at apple.com (Chris Lattner) Date: Wed, 16 Jan 2008 10:40:30 -0800 Subject: [llvm-commits] [llvm] r45850 - /llvm/trunk/lib/VMCore/Verifier.cpp In-Reply-To: <200801160907.12129.duncan.sands@math.u-psud.fr> References: <200801110213.m0B2DBvu014340@zion.cs.uiuc.edu> <200801130918.48618.baldrick@free.fr> <200801160907.12129.duncan.sands@math.u-psud.fr> Message-ID: <7EC95C3A-2B1F-4D49-A6E0-6C097A5C74E2@apple.com> On Jan 16, 2008, at 12:07 AM, Duncan Sands wrote: > Hi Chris, >> ArgPromotion does do this, and I added a testcase to verify it. It >> looks like it recomputes the Function's param attrs perfectly and >> just >> applies that attr list to all calls. > > try this example. Argpromotion deletes the zeroext attribute on the > call. Right, it deletes it because the attr is on the call not the function. I can make this work, but shouldn't the attr also be on the function? -Chris > > ; RUN: llvm-as < %s | opt -argpromotion | llvm-dis | grep zeroext > > %struct.ss = type { i32, i64 } > > define internal void @f(%struct.ss* byval %b, i32* byval %X, i32 > %i) nounwind { > entry: > %tmp = getelementptr %struct.ss* %b, i32 0, i32 0 > %tmp1 = load i32* %tmp, align 4 > %tmp2 = add i32 %tmp1, 1 > store i32 %tmp2, i32* %tmp, align 4 > > store i32 0, i32* %X > ret void > } > > define i32 @test(i32* %X) { > entry: > %S = alloca %struct.ss ; <%struct.ss*> [#uses=4] > %tmp1 = getelementptr %struct.ss* %S, i32 0, i32 0 ; > [#uses=1] > store i32 1, i32* %tmp1, align 8 > %tmp4 = getelementptr %struct.ss* %S, i32 0, i32 1 ; > [#uses=1] > store i64 2, i64* %tmp4, align 4 > call void @f( %struct.ss* byval %S, i32* byval %X, i32 zeroext 0) > ret i32 0 > } From isanbard at gmail.com Wed Jan 16 12:49:48 2008 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 16 Jan 2008 18:49:48 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46077 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Message-ID: <200801161849.m0GInm3O009217@zion.cs.uiuc.edu> Author: void Date: Wed Jan 16 12:49:47 2008 New Revision: 46077 URL: http://llvm.org/viewvc/llvm-project?rev=46077&view=rev Log: Use the big endian check already in llvm/System/Host.h. Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=46077&r1=46076&r2=46077&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Wed Jan 16 12:49:47 2008 @@ -36,6 +36,7 @@ #include "llvm/Module.h" #include "llvm/ParameterAttributes.h" #include "llvm/Analysis/ConstantFolding.h" +#include "llvm/System/Host.h" #include "llvm/Support/MathExtras.h" #include "llvm/Target/TargetAsmInfo.h" #include "llvm/Target/TargetData.h" @@ -5466,14 +5467,6 @@ double V; }; if (Ty==Type::FloatTy || Ty==Type::DoubleTy) { - // Determine endianness of host machine. - union { - int x; - char y[sizeof(int)]; - } u; - u.x = 1; - bool BigEndian = (u.y[0] != 1); - REAL_VALUE_TO_TARGET_DOUBLE(TREE_REAL_CST(exp), RealArr); // Here's how this works: @@ -5495,7 +5488,7 @@ UArr[0] = RealArr[0]; // Long -> int convert UArr[1] = RealArr[1]; - if (BigEndian != FLOAT_WORDS_BIG_ENDIAN) + if (llvm::sys::bigEndianHost() != FLOAT_WORDS_BIG_ENDIAN) std::swap(UArr[0], UArr[1]); return ConstantFP::get(Ty, Ty==Type::FloatTy ? APFloat((float)V) From isanbard at gmail.com Wed Jan 16 12:50:35 2008 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 16 Jan 2008 10:50:35 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r46039 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp In-Reply-To: <200801160856.43901.duncan.sands@math.u-psud.fr> References: <200801160047.m0G0l4Cb027149@zion.cs.uiuc.edu> <200801160856.43901.duncan.sands@math.u-psud.fr> Message-ID: <16e5fdf90801161050s294c21d0sb0ae2211a60856ab@mail.gmail.com> On Jan 15, 2008 11:56 PM, Duncan Sands wrote: > Hi Bill, > > > + // Determine endianness of host machine. > > + union { > > + int x; > > + char y[sizeof(int)]; > > + } u; > > + u.x = 1; > > + bool BigEndian = (u.y[0] != 1); > > how about using bigEndianHost in System/Host.h instead? > Good idea! Done. -bw From dalej at apple.com Wed Jan 16 13:59:28 2008 From: dalej at apple.com (Dale Johannesen) Date: Wed, 16 Jan 2008 19:59:28 -0000 Subject: [llvm-commits] [llvm] r46088 - in /llvm/trunk: include/llvm/CodeGen/MachineModuleInfo.h lib/CodeGen/DwarfWriter.cpp lib/CodeGen/MachineModuleInfo.cpp Message-ID: <200801161959.m0GJxSPX014013@zion.cs.uiuc.edu> Author: johannes Date: Wed Jan 16 13:59:28 2008 New Revision: 46088 URL: http://llvm.org/viewvc/llvm-project?rev=46088&view=rev Log: Do not mark EH tables no-dead-strip unless the associated function is so marked. Modified: llvm/trunk/include/llvm/CodeGen/MachineModuleInfo.h llvm/trunk/lib/CodeGen/DwarfWriter.cpp llvm/trunk/lib/CodeGen/MachineModuleInfo.cpp Modified: llvm/trunk/include/llvm/CodeGen/MachineModuleInfo.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineModuleInfo.h?rev=46088&r1=46087&r2=46088&view=diff ============================================================================== --- llvm/trunk/include/llvm/CodeGen/MachineModuleInfo.h (original) +++ llvm/trunk/include/llvm/CodeGen/MachineModuleInfo.h Wed Jan 16 13:59:28 2008 @@ -35,6 +35,7 @@ #include "llvm/Support/DataTypes.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/UniqueVector.h" +#include "llvm/ADT/SmallPtrSet.h" #include "llvm/GlobalValue.h" #include "llvm/Pass.h" @@ -1037,6 +1038,10 @@ // common EH frames. std::vector Personalities; + // UsedFunctions - the functions in the llvm.used list in a more easily + // searchable format. + SmallPtrSet UsedFunctions; + bool CallsEHReturn; bool CallsUnwindInit; public: @@ -1235,6 +1240,11 @@ return Personalities; } + // UsedFunctions - Return set of the functions in the llvm.used list. + const SmallPtrSet& getUsedFunctions() const { + return UsedFunctions; + } + /// addCatchTypeInfo - Provide the catch typeinfo for a landing pad. /// void addCatchTypeInfo(MachineBasicBlock *LandingPad, Modified: llvm/trunk/lib/CodeGen/DwarfWriter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/DwarfWriter.cpp?rev=46088&r1=46087&r2=46088&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/DwarfWriter.cpp (original) +++ llvm/trunk/lib/CodeGen/DwarfWriter.cpp Wed Jan 16 13:59:28 2008 @@ -2764,15 +2764,14 @@ bool hasCalls; bool hasLandingPads; std::vector Moves; - Function::LinkageTypes linkage; + const Function * function; FunctionEHFrameInfo(const std::string &FN, unsigned Num, unsigned P, bool hC, bool hL, const std::vector &M, - Function::LinkageTypes l): + const Function *f): FnName(FN), Number(Num), PersonalityIndex(P), - hasCalls(hC), hasLandingPads(hL), Moves(M), - linkage(l) { } + hasCalls(hC), hasLandingPads(hL), Moves(M), function (f) { } }; std::vector EHFrames; @@ -2869,19 +2868,21 @@ /// EmitEHFrame - Emit function exception frame information. /// void EmitEHFrame(const FunctionEHFrameInfo &EHFrameInfo) { + Function::LinkageTypes linkage = EHFrameInfo.function->getLinkage(); + Asm->SwitchToTextSection(TAI->getDwarfEHFrameSection()); // Externally visible entry into the functions eh frame info. // If the corresponding function is static, this should not be // externally visible. - if (EHFrameInfo.linkage != Function::InternalLinkage) { + if (linkage != Function::InternalLinkage) { if (const char *GlobalEHDirective = TAI->getGlobalEHDirective()) O << GlobalEHDirective << EHFrameInfo.FnName << "\n"; } // If corresponding function is weak definition, this should be too. - if ((EHFrameInfo.linkage == Function::WeakLinkage || - EHFrameInfo.linkage == Function::LinkOnceLinkage) && + if ((linkage == Function::WeakLinkage || + linkage == Function::LinkOnceLinkage) && TAI->getWeakDefDirective()) O << TAI->getWeakDefDirective() << EHFrameInfo.FnName << "\n"; @@ -2889,12 +2890,17 @@ // omit the EH Frame, but some environments do not handle weak absolute // symbols. if (!EHFrameInfo.hasCalls && - ((EHFrameInfo.linkage != Function::WeakLinkage && - EHFrameInfo.linkage != Function::LinkOnceLinkage) || + ((linkage != Function::WeakLinkage && + linkage != Function::LinkOnceLinkage) || !TAI->getWeakDefDirective() || TAI->getSupportsWeakOmittedEHFrame())) { O << EHFrameInfo.FnName << " = 0\n"; + // This name has no connection to the function, so it might get + // dead-stripped when the function is not, erroneously. Prohibit + // dead-stripping unconditionally. + if (const char *UsedDirective = TAI->getUsedDirective()) + O << UsedDirective << EHFrameInfo.FnName << "\n\n"; } else { O << EHFrameInfo.FnName << ":\n"; @@ -2941,10 +2947,16 @@ Asm->EmitAlignment(2); EmitLabel("eh_frame_end", EHFrameInfo.Number); - } - if (const char *UsedDirective = TAI->getUsedDirective()) - O << UsedDirective << EHFrameInfo.FnName << "\n\n"; + // If the function is marked used, this table should be also. We cannot + // make the mark unconditional in this case, since retaining the table + // also retains the function in this case, and there is code around + // that depends on unused functions (calling undefined externals) being + // dead-stripped to link correctly. Yes, there really is. + if (MMI->getUsedFunctions().count(EHFrameInfo.function)) + if (const char *UsedDirective = TAI->getUsedDirective()) + O << UsedDirective << EHFrameInfo.FnName << "\n\n"; + } } /// EmitExceptionTable - Emit landing pads and actions. @@ -3414,7 +3426,7 @@ MF->getFrameInfo()->hasCalls(), !MMI->getLandingPads().empty(), MMI->getFrameMoves(), - MF->getFunction()->getLinkage())); + MF->getFunction())); } }; Modified: llvm/trunk/lib/CodeGen/MachineModuleInfo.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineModuleInfo.cpp?rev=46088&r1=46087&r2=46088&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/MachineModuleInfo.cpp (original) +++ llvm/trunk/lib/CodeGen/MachineModuleInfo.cpp Wed Jan 16 13:59:28 2008 @@ -1552,6 +1552,21 @@ /// void MachineModuleInfo::AnalyzeModule(Module &M) { SetupCompileUnits(M); + + // Insert functions in the llvm.used array into UsedFunctions. + GlobalVariable *GV = M.getGlobalVariable("llvm.used"); + if (!GV || !GV->hasInitializer()) return; + + // Should be an array of 'i8*'. + ConstantArray *InitList = dyn_cast(GV->getInitializer()); + if (InitList == 0) return; + + for (unsigned i = 0, e = InitList->getNumOperands(); i != e; ++i) { + if (ConstantExpr *CE = dyn_cast(InitList->getOperand(i))) + if (CE->getOpcode() == Instruction::BitCast) + if (Function *F = dyn_cast(CE->getOperand(0))) + UsedFunctions.insert(F); + } } /// needsFrameInfo - Returns true if we need to gather callee-saved register From sabre at nondot.org Wed Jan 16 15:10:06 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 21:10:06 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46089 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Message-ID: <200801162110.m0GLA6qg018634@zion.cs.uiuc.edu> Author: lattner Date: Wed Jan 16 15:10:05 2008 New Revision: 46089 URL: http://llvm.org/viewvc/llvm-project?rev=46089&view=rev Log: Wire up __builtin_bswap32/64 to llvm.bswap. This is a 4.2-only feature. Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=46089&r1=46088&r2=46089&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Wed Jan 16 15:10:05 2008 @@ -4167,6 +4167,16 @@ Result = Builder.CreateIntCast(Result, DestTy, "cast"); return true; } + case BUILT_IN_BSWAP32: + case BUILT_IN_BSWAP64: { + Value *Amt = Emit(TREE_VALUE(TREE_OPERAND(exp, 1)), 0); + EmitBuiltinUnaryIntOp(Amt, Result, Intrinsic::bswap); + const Type *DestTy = ConvertType(TREE_TYPE(exp)); + if (Result->getType() != DestTy) + Result = Builder.CreateIntCast(Result, DestTy, "cast"); + return true; + } + case BUILT_IN_SQRT: case BUILT_IN_SQRTF: case BUILT_IN_SQRTL: From sabre at nondot.org Wed Jan 16 15:35:44 2008 From: sabre at nondot.org (Chris Lattner) Date: Wed, 16 Jan 2008 21:35:44 -0000 Subject: [llvm-commits] [llvm] r46090 - /llvm/trunk/lib/Transforms/IPO/StripSymbols.cpp Message-ID: <200801162135.m0GLZiYu020454@zion.cs.uiuc.edu> Author: lattner Date: Wed Jan 16 15:35:43 2008 New Revision: 46090 URL: http://llvm.org/viewvc/llvm-project?rev=46090&view=rev Log: Handle attribute(used) global variables that are i8. Modified: llvm/trunk/lib/Transforms/IPO/StripSymbols.cpp Modified: llvm/trunk/lib/Transforms/IPO/StripSymbols.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/StripSymbols.cpp?rev=46090&r1=46089&r2=46090&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/IPO/StripSymbols.cpp (original) +++ llvm/trunk/lib/Transforms/IPO/StripSymbols.cpp Wed Jan 16 15:35:43 2008 @@ -101,20 +101,21 @@ // If we're not just stripping debug info, strip all symbols from the // functions and the names from any internal globals. if (!OnlyDebugInfo) { - SmallPtrSet llvmUsedValues; - Value *LLVMUsed = M.getValueSymbolTable().lookup("llvm.used"); - if (LLVMUsed) { + SmallPtrSet llvmUsedValues; + if (GlobalVariable *LLVMUsed = M.getGlobalVariable("llvm.used")) { + llvmUsedValues.insert(LLVMUsed); // Collect values that are preserved as per explicit request. // llvm.used is used to list these values. - if (GlobalVariable *GV = dyn_cast(LLVMUsed)) { - if (ConstantArray *InitList = - dyn_cast(GV->getInitializer())) { - for (unsigned i = 0, e = InitList->getNumOperands(); i != e; ++i) { - if (ConstantExpr *CE = - dyn_cast(InitList->getOperand(i))) - if (CE->isCast()) - llvmUsedValues.insert(CE->getOperand(0)); - } + if (ConstantArray *Inits = + dyn_cast(LLVMUsed->getInitializer())) { + for (unsigned i = 0, e = Inits->getNumOperands(); i != e; ++i) { + if (GlobalValue *GV = dyn_cast(Inits->getOperand(i))) + llvmUsedValues.insert(GV); + else if (ConstantExpr *CE = + dyn_cast(Inits->getOperand(i))) + if (CE->getOpcode() == Instruction::BitCast) + if (GlobalValue *GV = dyn_cast(CE->getOperand(0))) + llvmUsedValues.insert(GV); } } } @@ -123,8 +124,6 @@ I != E; ++I) { if (I->hasInternalLinkage() && llvmUsedValues.count(I) == 0) I->setName(""); // Internal symbols can't participate in linkage - else if (I->getName() == "llvm.used") { - } } for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) { From isanbard at gmail.com Wed Jan 16 16:18:28 2008 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 16 Jan 2008 22:18:28 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46094 - /llvm-gcc-4.2/trunk/build_gcc Message-ID: <200801162218.m0GMIS49022830@zion.cs.uiuc.edu> Author: void Date: Wed Jan 16 16:18:26 2008 New Revision: 46094 URL: http://llvm.org/viewvc/llvm-project?rev=46094&view=rev Log: Some of the drivers are named foo-bar-qux-llvm-g++ instead of foo-bar-qux-g++. Get both of them as is required. Modified: llvm-gcc-4.2/trunk/build_gcc Modified: llvm-gcc-4.2/trunk/build_gcc URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/build_gcc?rev=46094&r1=46093&r2=46094&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/build_gcc (original) +++ llvm-gcc-4.2/trunk/build_gcc Wed Jan 16 16:18:26 2008 @@ -373,7 +373,7 @@ $DIR/dst-*-$t/$DEST_ROOT/bin/$t-apple-darwin$DARWIN_VERS-gcc-$VERS || exit 1 # APPLE LOCAL LLVM build_gcc bug with non-/usr $DEST_ROOT lipo -output .$DEST_ROOT/bin/$t-apple-darwin$DARWIN_VERS-llvm-g++-$MAJ_VERS -create \ - $DIR/dst-*-$t/$DEST_ROOT/bin/$t-apple-darwin$DARWIN_VERS-g++* || exit 1 + $DIR/dst-*-$t/$DEST_ROOT/bin/$t-apple-darwin$DARWIN_VERS-*g++* || exit 1 done # lib From baldrick at free.fr Wed Jan 16 16:50:05 2008 From: baldrick at free.fr (Duncan Sands) Date: Wed, 16 Jan 2008 22:50:05 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46097 - /llvm-gcc-4.2/trunk/gcc/ada/decl.c Message-ID: <200801162250.m0GMo5e5024405@zion.cs.uiuc.edu> Author: baldrick Date: Wed Jan 16 16:50:04 2008 New Revision: 46097 URL: http://llvm.org/viewvc/llvm-project?rev=46097&view=rev Log: Restore a placeholder substitution that was accidentally dropped in revision 45523. The testcase is FrontendAda/placeholder.adb. Modified: llvm-gcc-4.2/trunk/gcc/ada/decl.c Modified: llvm-gcc-4.2/trunk/gcc/ada/decl.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/ada/decl.c?rev=46097&r1=46096&r2=46097&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/ada/decl.c (original) +++ llvm-gcc-4.2/trunk/gcc/ada/decl.c Wed Jan 16 16:50:04 2008 @@ -579,8 +579,11 @@ if (gnu_expr && kind == E_Constant) /* LLVM local begin */ { - gnu_type = TREE_TYPE (gnu_expr); - gnu_size = TYPE_SIZE (gnu_type); + gnu_type + = TREE_TYPE (gnu_expr); + gnu_size + = SUBSTITUTE_PLACEHOLDER_IN_EXPR + (TYPE_SIZE (gnu_type), gnu_expr); } /* LLVM local end */ From baldrick at free.fr Wed Jan 16 16:55:25 2008 From: baldrick at free.fr (Duncan Sands) Date: Wed, 16 Jan 2008 22:55:25 -0000 Subject: [llvm-commits] [llvm] r46098 - in /llvm/trunk: lib/Target/X86/X86ISelLowering.cpp test/CodeGen/X86/2008-01-16-Trampoline.ll Message-ID: <200801162255.m0GMtPMH024796@zion.cs.uiuc.edu> Author: baldrick Date: Wed Jan 16 16:55:25 2008 New Revision: 46098 URL: http://llvm.org/viewvc/llvm-project?rev=46098&view=rev Log: Trampoline support for x86-64. This looks like it should work, but I have no machine to test it on. Committed because it will at least cause no harm, and maybe someone can test it for me! Added: llvm/trunk/test/CodeGen/X86/2008-01-16-Trampoline.ll Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=46098&r1=46097&r2=46098&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Wed Jan 16 16:55:25 2008 @@ -4802,8 +4802,59 @@ SrcValueSDNode *TrmpSV = cast(Op.getOperand(4)); + const X86InstrInfo *TII = + ((X86TargetMachine&)getTargetMachine()).getInstrInfo(); + if (Subtarget->is64Bit()) { - return SDOperand(); // not yet supported + SDOperand OutChains[6]; + + // Large code-model. + + const unsigned char JMP64r = TII->getBaseOpcodeFor(X86::JMP64r); + const unsigned char MOV64ri = TII->getBaseOpcodeFor(X86::MOV64ri); + + const unsigned char N86R10 = + ((X86RegisterInfo*)RegInfo)->getX86RegNum(X86::R10); + const unsigned char N86R11 = + ((X86RegisterInfo*)RegInfo)->getX86RegNum(X86::R11); + + const unsigned char REX_WB = 0x40 | 0x08 | 0x01; // REX prefix + + // Load the pointer to the nested function into R11. + unsigned OpCode = ((MOV64ri | N86R11) << 8) | REX_WB; // movabsq r11 + SDOperand Addr = Trmp; + OutChains[0] = DAG.getStore(Root, DAG.getConstant(OpCode, MVT::i16), Addr, + TrmpSV->getValue(), TrmpSV->getOffset()); + + Addr = DAG.getNode(ISD::ADD, MVT::i64, Trmp, DAG.getConstant(2, MVT::i64)); + OutChains[1] = DAG.getStore(Root, FPtr, Addr, TrmpSV->getValue(), + TrmpSV->getOffset() + 2, false, 2); + + // Load the 'nest' parameter value into R10. + // R10 is specified in X86CallingConv.td + OpCode = ((MOV64ri | N86R10) << 8) | REX_WB; // movabsq r10 + Addr = DAG.getNode(ISD::ADD, MVT::i64, Trmp, DAG.getConstant(10, MVT::i64)); + OutChains[2] = DAG.getStore(Root, DAG.getConstant(OpCode, MVT::i16), Addr, + TrmpSV->getValue(), TrmpSV->getOffset() + 10); + + Addr = DAG.getNode(ISD::ADD, MVT::i64, Trmp, DAG.getConstant(12, MVT::i64)); + OutChains[3] = DAG.getStore(Root, Nest, Addr, TrmpSV->getValue(), + TrmpSV->getOffset() + 12, false, 2); + + // Jump to the nested function. + OpCode = (JMP64r << 8) | REX_WB; // jmpq *... + Addr = DAG.getNode(ISD::ADD, MVT::i64, Trmp, DAG.getConstant(20, MVT::i64)); + OutChains[4] = DAG.getStore(Root, DAG.getConstant(OpCode, MVT::i16), Addr, + TrmpSV->getValue(), TrmpSV->getOffset() + 20); + + unsigned char ModRM = N86R11 | (4 << 3) | (3 << 6); // ...r11 + Addr = DAG.getNode(ISD::ADD, MVT::i64, Trmp, DAG.getConstant(22, MVT::i64)); + OutChains[5] = DAG.getStore(Root, DAG.getConstant(ModRM, MVT::i8), Addr, + TrmpSV->getValue(), TrmpSV->getOffset() + 22); + + SDOperand Ops[] = + { Trmp, DAG.getNode(ISD::TokenFactor, MVT::Other, OutChains, 6) }; + return DAG.getNode(ISD::MERGE_VALUES, Op.Val->getVTList(), Ops, 2); } else { Function *Func = (Function *) cast(cast(Op.getOperand(5))->getValue()); @@ -4847,17 +4898,15 @@ break; } - const X86InstrInfo *TII = - ((X86TargetMachine&)getTargetMachine()).getInstrInfo(); - SDOperand OutChains[4]; SDOperand Addr, Disp; Addr = DAG.getNode(ISD::ADD, MVT::i32, Trmp, DAG.getConstant(10, MVT::i32)); Disp = DAG.getNode(ISD::SUB, MVT::i32, FPtr, Addr); - unsigned char MOV32ri = TII->getBaseOpcodeFor(X86::MOV32ri); - unsigned char N86Reg = ((X86RegisterInfo*)RegInfo)->getX86RegNum(NestReg); + const unsigned char MOV32ri = TII->getBaseOpcodeFor(X86::MOV32ri); + const unsigned char N86Reg = + ((X86RegisterInfo*)RegInfo)->getX86RegNum(NestReg); OutChains[0] = DAG.getStore(Root, DAG.getConstant(MOV32ri|N86Reg, MVT::i8), Trmp, TrmpSV->getValue(), TrmpSV->getOffset()); @@ -4865,7 +4914,7 @@ OutChains[1] = DAG.getStore(Root, Nest, Addr, TrmpSV->getValue(), TrmpSV->getOffset() + 1, false, 1); - unsigned char JMP = TII->getBaseOpcodeFor(X86::JMP); + const unsigned char JMP = TII->getBaseOpcodeFor(X86::JMP); Addr = DAG.getNode(ISD::ADD, MVT::i32, Trmp, DAG.getConstant(5, MVT::i32)); OutChains[2] = DAG.getStore(Root, DAG.getConstant(JMP, MVT::i8), Addr, TrmpSV->getValue() + 5, TrmpSV->getOffset()); Added: llvm/trunk/test/CodeGen/X86/2008-01-16-Trampoline.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2008-01-16-Trampoline.ll?rev=46098&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/X86/2008-01-16-Trampoline.ll (added) +++ llvm/trunk/test/CodeGen/X86/2008-01-16-Trampoline.ll Wed Jan 16 16:55:25 2008 @@ -0,0 +1,14 @@ +; RUN: llvm-as < %s | llc -march=x86 +; RUN: llvm-as < %s | llc -march=x86-64 + + %struct.FRAME.gnat__perfect_hash_generators__select_char_position__build_identical_keys_sets = type { i32, i32, void (i32, i32)*, i8 (i32, i32)* } + +define fastcc i32 @gnat__perfect_hash_generators__select_char_position__build_identical_keys_sets.5146(i64 %table.0.0, i64 %table.0.1, i32 %last, i32 %pos) { +entry: + %tramp22 = call i8* @llvm.init.trampoline( i8* null, i8* bitcast (void (%struct.FRAME.gnat__perfect_hash_generators__select_char_position__build_identical_keys_sets*, i32, i32)* @gnat__perfect_hash_generators__select_char_position__build_identical_keys_sets__move.5177 to i8*), i8* null ) ; [#uses=0] + unreachable +} + +declare void @gnat__perfect_hash_generators__select_char_position__build_identical_keys_sets__move.5177(%struct.FRAME.gnat__perfect_hash_generators__select_char_position__build_identical_keys_sets* nest , i32, i32) nounwind + +declare i8* @llvm.init.trampoline(i8*, i8*, i8*) nounwind From duncan.sands at math.u-psud.fr Wed Jan 16 16:58:27 2008 From: duncan.sands at math.u-psud.fr (Duncan Sands) Date: Wed, 16 Jan 2008 23:58:27 +0100 Subject: [llvm-commits] =?iso-8859-1?q?=5Bllvm=5D_r45850_-=09/llvm/trunk/l?= =?iso-8859-1?q?ib/VMCore/Verifier=2Ecpp?= In-Reply-To: <7EC95C3A-2B1F-4D49-A6E0-6C097A5C74E2@apple.com> References: <200801110213.m0B2DBvu014340@zion.cs.uiuc.edu> <200801160907.12129.duncan.sands@math.u-psud.fr> <7EC95C3A-2B1F-4D49-A6E0-6C097A5C74E2@apple.com> Message-ID: <200801162358.28991.duncan.sands@math.u-psud.fr> Hi Chris, > > try this example. Argpromotion deletes the zeroext attribute on the > > call. > > Right, it deletes it because the attr is on the call not the > function. I can make this work, but shouldn't the attr also be on the > function? the attributes on the call determine (for example) how the call is setup by the code generators. Logically speaking there should be no need to examine the called function, even if it is available. So I think it is better to not rely on the codegenerators kindly examining the function attributes. As such it is better not to drop call attributes in this way. Ciao, Duncan. From evan.cheng at apple.com Wed Jan 16 17:11:55 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Wed, 16 Jan 2008 23:11:55 -0000 Subject: [llvm-commits] [llvm] r46099 - in /llvm/trunk: lib/CodeGen/SelectionDAG/DAGCombiner.cpp test/CodeGen/X86/2008-01-16-InvalidDAGCombineXform.ll Message-ID: <200801162311.m0GNBte1026159@zion.cs.uiuc.edu> Author: evancheng Date: Wed Jan 16 17:11:54 2008 New Revision: 46099 URL: http://llvm.org/viewvc/llvm-project?rev=46099&view=rev Log: Fixes a nasty dag combiner bug that causes a bunch of tests to fail at -O0. It's not safe to use the two value CombineTo variant to combine away a dead load. e.g. v1, chain2 = load chain1, loc v2, chain3 = load chain2, loc v3 = add v2, c Now we replace use of v1 with undef, use of chain2 with chain1. ReplaceAllUsesWith() will iterate through uses of the first load and update operands: v1, chain2 = load chain1, loc v2, chain3 = load chain1, loc v3 = add v2, c Now the second load is the same as the first load, SelectionDAG cse will ensure the use of second load is replaced with the first load. v1, chain2 = load chain1, loc v3 = add v1, c Then v1 is replaced with undef and bad things happen. Added: llvm/trunk/test/CodeGen/X86/2008-01-16-InvalidDAGCombineXform.ll Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=46099&r1=46098&r2=46099&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Wed Jan 16 17:11:54 2008 @@ -4055,16 +4055,54 @@ if (!LD->isVolatile()) { if (N->getValueType(1) == MVT::Other) { // Unindexed loads. - if (N->hasNUsesOfValue(0, 0)) - return CombineTo(N, DAG.getNode(ISD::UNDEF, N->getValueType(0)), Chain); + if (N->hasNUsesOfValue(0, 0)) { + // It's not safe to use the two value CombineTo variant here. e.g. + // v1, chain2 = load chain1, loc + // v2, chain3 = load chain2, loc + // v3 = add v2, c + // Now we replace use of v1 with undef, use of chain2 with chain1. + // ReplaceAllUsesWith() will iterate through uses of the first load and + // update operands: + // v1, chain2 = load chain1, loc + // v2, chain3 = load chain1, loc + // v3 = add v2, c + // Now the second load is the same as the first load, SelectionDAG cse + // will ensure the use of second load is replaced with the first load. + // v1, chain2 = load chain1, loc + // v3 = add v1, c + // Then v1 is replaced with undef and bad things happen. + std::vector NowDead; + SDOperand Undef = DAG.getNode(ISD::UNDEF, N->getValueType(0)); + DOUT << "\nReplacing.6 "; DEBUG(N->dump(&DAG)); + DOUT << "\nWith: "; DEBUG(Undef.Val->dump(&DAG)); + DOUT << " and 1 other value\n"; + DAG.ReplaceAllUsesOfValueWith(SDOperand(N, 0), Undef, &NowDead); + DAG.ReplaceAllUsesOfValueWith(SDOperand(N, 1), Chain, &NowDead); + removeFromWorkList(N); + for (unsigned i = 0, e = NowDead.size(); i != e; ++i) + removeFromWorkList(NowDead[i]); + DAG.DeleteNode(N); + return SDOperand(N, 0); // Return N so it doesn't get rechecked! + } } else { // Indexed loads. assert(N->getValueType(2) == MVT::Other && "Malformed indexed loads?"); if (N->hasNUsesOfValue(0, 0) && N->hasNUsesOfValue(0, 1)) { - SDOperand Undef0 = DAG.getNode(ISD::UNDEF, N->getValueType(0)); - SDOperand Undef1 = DAG.getNode(ISD::UNDEF, N->getValueType(1)); - SDOperand To[] = { Undef0, Undef1, Chain }; - return CombineTo(N, To, 3); + std::vector NowDead; + SDOperand Undef = DAG.getNode(ISD::UNDEF, N->getValueType(0)); + DOUT << "\nReplacing.6 "; DEBUG(N->dump(&DAG)); + DOUT << "\nWith: "; DEBUG(Undef.Val->dump(&DAG)); + DOUT << " and 2 other values\n"; + DAG.ReplaceAllUsesOfValueWith(SDOperand(N, 0), Undef, &NowDead); + DAG.ReplaceAllUsesOfValueWith(SDOperand(N, 1), + DAG.getNode(ISD::UNDEF, N->getValueType(1)), + &NowDead); + DAG.ReplaceAllUsesOfValueWith(SDOperand(N, 2), Chain, &NowDead); + removeFromWorkList(N); + for (unsigned i = 0, e = NowDead.size(); i != e; ++i) + removeFromWorkList(NowDead[i]); + DAG.DeleteNode(N); + return SDOperand(N, 0); // Return N so it doesn't get rechecked! } } } Added: llvm/trunk/test/CodeGen/X86/2008-01-16-InvalidDAGCombineXform.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2008-01-16-InvalidDAGCombineXform.ll?rev=46099&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/X86/2008-01-16-InvalidDAGCombineXform.ll (added) +++ llvm/trunk/test/CodeGen/X86/2008-01-16-InvalidDAGCombineXform.ll Wed Jan 16 17:11:54 2008 @@ -0,0 +1,30 @@ +; RUN: llvm-as < %s | llc -march=x86 | not grep IMPLICIT_DEF + + %struct.node_t = type { double*, %struct.node_t*, %struct.node_t**, double**, double*, i32, i32 } + +define void @localize_local_bb19_bb(%struct.node_t** %cur_node) { +newFuncRoot: + %tmp1 = load %struct.node_t** %cur_node, align 4 ; <%struct.node_t*> [#uses=1] + %tmp2 = getelementptr %struct.node_t* %tmp1, i32 0, i32 4 ; [#uses=1] + %tmp3 = load double** %tmp2, align 4 ; [#uses=1] + %tmp4 = load %struct.node_t** %cur_node, align 4 ; <%struct.node_t*> [#uses=1] + %tmp5 = getelementptr %struct.node_t* %tmp4, i32 0, i32 4 ; [#uses=1] + store double* %tmp3, double** %tmp5, align 4 + %tmp6 = load %struct.node_t** %cur_node, align 4 ; <%struct.node_t*> [#uses=1] + %tmp7 = getelementptr %struct.node_t* %tmp6, i32 0, i32 3 ; [#uses=1] + %tmp8 = load double*** %tmp7, align 4 ; [#uses=1] + %tmp9 = load %struct.node_t** %cur_node, align 4 ; <%struct.node_t*> [#uses=1] + %tmp10 = getelementptr %struct.node_t* %tmp9, i32 0, i32 3 ; [#uses=1] + store double** %tmp8, double*** %tmp10, align 4 + %tmp11 = load %struct.node_t** %cur_node, align 4 ; <%struct.node_t*> [#uses=1] + %tmp12 = getelementptr %struct.node_t* %tmp11, i32 0, i32 0 ; [#uses=1] + %tmp13 = load double** %tmp12, align 4 ; [#uses=1] + %tmp14 = load %struct.node_t** %cur_node, align 4 ; <%struct.node_t*> [#uses=1] + %tmp15 = getelementptr %struct.node_t* %tmp14, i32 0, i32 0 ; [#uses=1] + store double* %tmp13, double** %tmp15, align 4 + %tmp16 = load %struct.node_t** %cur_node, align 4 ; <%struct.node_t*> [#uses=1] + %tmp17 = getelementptr %struct.node_t* %tmp16, i32 0, i32 1 ; <%struct.node_t**> [#uses=1] + %tmp18 = load %struct.node_t** %tmp17, align 4 ; <%struct.node_t*> [#uses=1] + store %struct.node_t* %tmp18, %struct.node_t** %cur_node, align 4 + ret void +} From clattner at apple.com Wed Jan 16 18:10:26 2008 From: clattner at apple.com (Chris Lattner) Date: Wed, 16 Jan 2008 16:10:26 -0800 Subject: [llvm-commits] [llvm] r45850 - /llvm/trunk/lib/VMCore/Verifier.cpp In-Reply-To: <200801162358.28991.duncan.sands@math.u-psud.fr> References: <200801110213.m0B2DBvu014340@zion.cs.uiuc.edu> <200801160907.12129.duncan.sands@math.u-psud.fr> <7EC95C3A-2B1F-4D49-A6E0-6C097A5C74E2@apple.com> <200801162358.28991.duncan.sands@math.u-psud.fr> Message-ID: <7C4B7DB1-192F-46FA-9513-17854E6995C0@apple.com> On Jan 16, 2008, at 2:58 PM, Duncan Sands wrote: > Hi Chris, > >>> try this example. Argpromotion deletes the zeroext attribute on the >>> call. >> >> Right, it deletes it because the attr is on the call not the >> function. I can make this work, but shouldn't the attr also be on >> the >> function? > > the attributes on the call determine (for example) how the call is > setup > by the code generators. Logically speaking there should be no need to > examine the called function, even if it is available. So I think it > is > better to not rely on the codegenerators kindly examining the function > attributes. As such it is better not to drop call attributes in this > way. I agree, I'll fix argpromote. However, the call and callee should both be marked zext, otherwise codegen of the callee won't do the right thing. -Chris From evan.cheng at apple.com Wed Jan 16 18:35:27 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Thu, 17 Jan 2008 00:35:27 -0000 Subject: [llvm-commits] [llvm] r46104 - /llvm/trunk/lib/CodeGen/RegAllocLocal.cpp Message-ID: <200801170035.m0H0ZRis031713@zion.cs.uiuc.edu> Author: evancheng Date: Wed Jan 16 18:35:26 2008 New Revision: 46104 URL: http://llvm.org/viewvc/llvm-project?rev=46104&view=rev Log: Replace std::vector with BitVector. Modified: llvm/trunk/lib/CodeGen/RegAllocLocal.cpp Modified: llvm/trunk/lib/CodeGen/RegAllocLocal.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegAllocLocal.cpp?rev=46104&r1=46103&r2=46104&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/RegAllocLocal.cpp (original) +++ llvm/trunk/lib/CodeGen/RegAllocLocal.cpp Wed Jan 16 18:35:26 2008 @@ -91,13 +91,15 @@ // scavenged. If a virtual register has simply been rematerialized, there // is no reason to spill it to memory when we need the register back. // - std::vector VirtRegModified; + BitVector VirtRegModified; void markVirtRegModified(unsigned Reg, bool Val = true) { assert(MRegisterInfo::isVirtualRegister(Reg) && "Illegal VirtReg!"); Reg -= MRegisterInfo::FirstVirtualRegister; - if (VirtRegModified.size() <= Reg) VirtRegModified.resize(Reg+1); - VirtRegModified[Reg] = Val; + if (Val) + VirtRegModified.set(Reg); + else + VirtRegModified.reset(Reg); } bool isVirtRegModified(unsigned Reg) const { @@ -819,7 +821,9 @@ // initialize the virtual->physical register map to have a 'null' // mapping for all virtual registers - Virt2PhysRegMap.grow(MF->getRegInfo().getLastVirtReg()); + unsigned LastVirtReg = MF->getRegInfo().getLastVirtReg(); + Virt2PhysRegMap.grow(LastVirtReg); + VirtRegModified.resize(LastVirtReg-MRegisterInfo::FirstVirtualRegister); // Loop over all of the basic blocks, eliminating virtual register references for (MachineFunction::iterator MBB = Fn.begin(), MBBe = Fn.end(); From sabre at nondot.org Wed Jan 16 19:17:03 2008 From: sabre at nondot.org (Chris Lattner) Date: Thu, 17 Jan 2008 01:17:03 -0000 Subject: [llvm-commits] [llvm] r46108 - in /llvm/trunk: lib/Transforms/IPO/ArgumentPromotion.cpp test/Transforms/ArgumentPromotion/attrs.ll Message-ID: <200801170117.m0H1H3mE001661@zion.cs.uiuc.edu> Author: lattner Date: Wed Jan 16 19:17:03 2008 New Revision: 46108 URL: http://llvm.org/viewvc/llvm-project?rev=46108&view=rev Log: Fix arg promotion to propagate the correct attrs on the calls to promoted functions. This is important for varargs calls in particular. Thanks to duncan for providing a great testcase. Added: llvm/trunk/test/Transforms/ArgumentPromotion/attrs.ll Modified: llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp Modified: llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp?rev=46108&r1=46107&r2=46108&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp (original) +++ llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp Wed Jan 16 19:17:03 2008 @@ -404,9 +404,9 @@ ParamAttrsVector ParamAttrsVec; const ParamAttrsList *PAL = F->getParamAttrs(); - unsigned index = 1; + unsigned ArgIndex = 1; for (Function::arg_iterator I = F->arg_begin(), E = F->arg_end(); I != E; - ++I, ++index) { + ++I, ++ArgIndex) { if (ByValArgsToTransform.count(I)) { // Just add all the struct element types. const Type *AgTy = cast(I->getType())->getElementType(); @@ -416,7 +416,7 @@ ++NumByValArgsPromoted; } else if (!ArgsToPromote.count(I)) { Params.push_back(I->getType()); - if (unsigned attrs = PAL ? PAL->getParamAttrs(index) : 0) + if (unsigned attrs = PAL ? PAL->getParamAttrs(ArgIndex) : 0) ParamAttrsVec.push_back(ParamAttrsWithIndex::get(Params.size(), attrs)); } else if (I->use_empty()) { ++NumArgumentsDead; @@ -454,10 +454,6 @@ const Type *RetTy = FTy->getReturnType(); - // Recompute the parameter attributes list based on the new arguments for - // the function. - PAL = ParamAttrsList::get(ParamAttrsVec); - // Work around LLVM bug PR56: the CWriter cannot emit varargs functions which // have zero fixed arguments. bool ExtraArgHack = false; @@ -472,7 +468,12 @@ // Create the new function body and insert it into the module... Function *NF = new Function(NFTy, F->getLinkage(), F->getName()); NF->setCallingConv(F->getCallingConv()); - NF->setParamAttrs(PAL); + + // Recompute the parameter attributes list based on the new arguments for + // the function. + NF->setParamAttrs(ParamAttrsList::get(ParamAttrsVec)); + ParamAttrsVec.clear(); PAL = 0; + if (F->hasCollector()) NF->setCollector(F->getCollector()); F->getParent()->getFunctionList().insert(F, NF); @@ -484,18 +485,24 @@ // Loop over all of the callers of the function, transforming the call sites // to pass in the loaded pointers. // - std::vector Args; + SmallVector Args; while (!F->use_empty()) { CallSite CS = CallSite::get(F->use_back()); Instruction *Call = CS.getInstruction(); - + PAL = CS.getParamAttrs(); + // Loop over the operands, inserting GEP and loads in the caller as // appropriate. CallSite::arg_iterator AI = CS.arg_begin(); + ArgIndex = 1; for (Function::arg_iterator I = F->arg_begin(), E = F->arg_end(); - I != E; ++I, ++AI) + I != E; ++I, ++AI, ++ArgIndex) if (!ArgsToPromote.count(I) && !ByValArgsToTransform.count(I)) { Args.push_back(*AI); // Unmodified argument + + if (unsigned Attrs = PAL ? PAL->getParamAttrs(ArgIndex) : 0) + ParamAttrsVec.push_back(ParamAttrsWithIndex::get(Args.size(), Attrs)); + } else if (ByValArgsToTransform.count(I)) { // Emit a GEP and load for each element of the struct. const Type *AgTy = cast(I->getType())->getElementType(); @@ -530,23 +537,27 @@ Args.push_back(Constant::getNullValue(Type::Int32Ty)); // Push any varargs arguments on the list - for (; AI != CS.arg_end(); ++AI) + for (; AI != CS.arg_end(); ++AI, ++ArgIndex) { Args.push_back(*AI); + if (unsigned Attrs = PAL ? PAL->getParamAttrs(ArgIndex) : 0) + ParamAttrsVec.push_back(ParamAttrsWithIndex::get(Args.size(), Attrs)); + } Instruction *New; if (InvokeInst *II = dyn_cast(Call)) { New = new InvokeInst(NF, II->getNormalDest(), II->getUnwindDest(), Args.begin(), Args.end(), "", Call); cast(New)->setCallingConv(CS.getCallingConv()); - cast(New)->setParamAttrs(PAL); + cast(New)->setParamAttrs(ParamAttrsList::get(ParamAttrsVec)); } else { New = new CallInst(NF, Args.begin(), Args.end(), "", Call); cast(New)->setCallingConv(CS.getCallingConv()); - cast(New)->setParamAttrs(PAL); + cast(New)->setParamAttrs(ParamAttrsList::get(ParamAttrsVec)); if (cast(Call)->isTailCall()) cast(New)->setTailCall(); } Args.clear(); + ParamAttrsVec.clear(); // Update the alias analysis implementation to know that we are replacing // the old call with a new one. Added: llvm/trunk/test/Transforms/ArgumentPromotion/attrs.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/ArgumentPromotion/attrs.ll?rev=46108&view=auto ============================================================================== --- llvm/trunk/test/Transforms/ArgumentPromotion/attrs.ll (added) +++ llvm/trunk/test/Transforms/ArgumentPromotion/attrs.ll Wed Jan 16 19:17:03 2008 @@ -0,0 +1,25 @@ +; RUN: llvm-as < %s | opt -argpromotion | llvm-dis | grep zeroext + + %struct.ss = type { i32, i64 } + +define internal void @f(%struct.ss* byval %b, i32* byval %X, i32 %i) nounwind { +entry: + %tmp = getelementptr %struct.ss* %b, i32 0, i32 0 + %tmp1 = load i32* %tmp, align 4 + %tmp2 = add i32 %tmp1, 1 + store i32 %tmp2, i32* %tmp, align 4 + + store i32 0, i32* %X + ret void +} + +define i32 @test(i32* %X) { +entry: + %S = alloca %struct.ss ; <%struct.ss*> [#uses=4] + %tmp1 = getelementptr %struct.ss* %S, i32 0, i32 0 ; [#uses=1] + store i32 1, i32* %tmp1, align 8 + %tmp4 = getelementptr %struct.ss* %S, i32 0, i32 1 ; [#uses=1] + store i64 2, i64* %tmp4, align 4 + call void @f( %struct.ss* byval %S, i32* byval %X, i32 zeroext 0) + ret i32 0 +} From dpatel at apple.com Wed Jan 16 19:41:18 2008 From: dpatel at apple.com (Devang Patel) Date: Thu, 17 Jan 2008 01:41:18 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46110 - /llvm-gcc-4.2/trunk/build_gcc Message-ID: <200801170141.m0H1fI6t003213@zion.cs.uiuc.edu> Author: dpatel Date: Wed Jan 16 19:41:18 2008 New Revision: 46110 URL: http://llvm.org/viewvc/llvm-project?rev=46110&view=rev Log: Fix more symlinks. Avoid deep links that assumes /Developer as the root installation folder. Modified: llvm-gcc-4.2/trunk/build_gcc Modified: llvm-gcc-4.2/trunk/build_gcc URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/build_gcc?rev=46110&r1=46109&r2=46110&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/build_gcc (original) +++ llvm-gcc-4.2/trunk/build_gcc Wed Jan 16 19:41:18 2008 @@ -527,8 +527,8 @@ # FIXME: This is a hack to get things working. for h in $HOSTS ; do - ln -s -f ../../../$DEST_ROOT/bin/$h-apple-darwin$DARWIN_VERS-llvm-gcc-$MAJ_VERS $h-apple-darwin$DARWIN_VERS-llvm-gcc-$MAJ_VERS || exit 1 - ln -s -f ../../../$DEST_ROOT/bin/$h-apple-darwin$DARWIN_VERS-llvm-g++-$MAJ_VERS $h-apple-darwin$DARWIN_VERS-llvm-g++-$MAJ_VERS || exit 1 + ln -s -f ../llvm-gcc-$MAJ_VERS/bin/$h-apple-darwin$DARWIN_VERS-llvm-gcc-$MAJ_VERS $h-apple-darwin$DARWIN_VERS-llvm-gcc-$MAJ_VERS || exit 1 + ln -s -f ../llvm-gcc-$MAJ_VERS/bin/$h-apple-darwin$DARWIN_VERS-llvm-g++-$MAJ_VERS $h-apple-darwin$DARWIN_VERS-llvm-g++-$MAJ_VERS || exit 1 done # Copy one of the libllvmgcc.dylib's up to libexec/gcc. From evan.cheng at apple.com Wed Jan 16 20:08:18 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Thu, 17 Jan 2008 02:08:18 -0000 Subject: [llvm-commits] [llvm] r46111 - in /llvm/trunk: lib/CodeGen/RegAllocLocal.cpp test/CodeGen/X86/2008-01-16-FPStackifierAssert.ll Message-ID: <200801170208.m0H28Jhx005282@zion.cs.uiuc.edu> Author: evancheng Date: Wed Jan 16 20:08:17 2008 New Revision: 46111 URL: http://llvm.org/viewvc/llvm-project?rev=46111&view=rev Log: When a live virtual register is being clobbered by an implicit def, it is spilled and the spill is its kill. However, if the local allocator has determined the register has not been modified (possible when its value was reloaded), it would not issue a restore. In that case, mark the last use of the virtual register as kill. Added: llvm/trunk/test/CodeGen/X86/2008-01-16-FPStackifierAssert.ll Modified: llvm/trunk/lib/CodeGen/RegAllocLocal.cpp Modified: llvm/trunk/lib/CodeGen/RegAllocLocal.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegAllocLocal.cpp?rev=46111&r1=46110&r2=46111&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/RegAllocLocal.cpp (original) +++ llvm/trunk/lib/CodeGen/RegAllocLocal.cpp Wed Jan 16 20:08:17 2008 @@ -86,6 +86,16 @@ // std::vector PhysRegsUseOrder; + // Virt2LastUseMap - This maps each virtual register to its last use + // (MachineInstr*, operand index pair). + IndexedMap, VirtReg2IndexFunctor> + Virt2LastUseMap; + + std::pair& getVirtRegLastUse(unsigned Reg) { + assert(MRegisterInfo::isVirtualRegister(Reg) && "Illegal VirtReg!"); + return Virt2LastUseMap[Reg]; + } + // VirtRegModified - This bitset contains information about which virtual // registers need to be spilled back to memory when their registers are // scavenged. If a virtual register has simply been rematerialized, there @@ -282,8 +292,12 @@ const TargetInstrInfo* TII = MBB.getParent()->getTarget().getInstrInfo(); - if (!isVirtRegModified(VirtReg)) + if (!isVirtRegModified(VirtReg)) { DOUT << " which has not been modified, so no store necessary!"; + std::pair &LastUse = getVirtRegLastUse(VirtReg); + if (LastUse.first) + LastUse.first->getOperand(LastUse.second).setIsKill(); + } // Otherwise, there is a virtual register corresponding to this physical // register. We only need to spill it into its stack slot if it has been @@ -507,6 +521,7 @@ MF->getRegInfo().setPhysRegUsed(PhysReg); MI->getOperand(OpNum).setReg(PhysReg); // Assign the input register + getVirtRegLastUse(VirtReg) = std::make_pair(MI, OpNum); return MI; } @@ -722,6 +737,7 @@ DestPhysReg = getReg(MBB, MI, DestVirtReg); MF->getRegInfo().setPhysRegUsed(DestPhysReg); markVirtRegModified(DestVirtReg); + getVirtRegLastUse(DestVirtReg) = std::make_pair((MachineInstr*)0, 0); MI->getOperand(i).setReg(DestPhysReg); // Assign the output register } } @@ -823,7 +839,8 @@ // mapping for all virtual registers unsigned LastVirtReg = MF->getRegInfo().getLastVirtReg(); Virt2PhysRegMap.grow(LastVirtReg); - VirtRegModified.resize(LastVirtReg-MRegisterInfo::FirstVirtualRegister); + Virt2LastUseMap.grow(LastVirtReg); + VirtRegModified.resize(LastVirtReg+1-MRegisterInfo::FirstVirtualRegister); // Loop over all of the basic blocks, eliminating virtual register references for (MachineFunction::iterator MBB = Fn.begin(), MBBe = Fn.end(); @@ -834,6 +851,7 @@ PhysRegsUsed.clear(); VirtRegModified.clear(); Virt2PhysRegMap.clear(); + Virt2LastUseMap.clear(); return true; } Added: llvm/trunk/test/CodeGen/X86/2008-01-16-FPStackifierAssert.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2008-01-16-FPStackifierAssert.ll?rev=46111&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/X86/2008-01-16-FPStackifierAssert.ll (added) +++ llvm/trunk/test/CodeGen/X86/2008-01-16-FPStackifierAssert.ll Wed Jan 16 20:08:17 2008 @@ -0,0 +1,35 @@ +; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 -regalloc=local + +define void @SolveCubic(double %a, double %b, double %c, double %d, i32* %solutions, double* %x) { +entry: + %tmp71 = load x86_fp80* null, align 16 ; [#uses=1] + %tmp72 = fdiv x86_fp80 %tmp71, 0xKC000C000000000000000 ; [#uses=1] + %tmp73 = add x86_fp80 0xK00000000000000000000, %tmp72 ; [#uses=1] + %tmp7374 = fptrunc x86_fp80 %tmp73 to double ; [#uses=1] + store double %tmp7374, double* null, align 8 + %tmp81 = load double* null, align 8 ; [#uses=1] + %tmp82 = add double %tmp81, 0x401921FB54442D18 ; [#uses=1] + %tmp83 = fdiv double %tmp82, 3.000000e+00 ; [#uses=1] + %tmp84 = call double @cos( double %tmp83 ) ; [#uses=1] + %tmp85 = mul double 0.000000e+00, %tmp84 ; [#uses=1] + %tmp8586 = fpext double %tmp85 to x86_fp80 ; [#uses=1] + %tmp87 = load x86_fp80* null, align 16 ; [#uses=1] + %tmp88 = fdiv x86_fp80 %tmp87, 0xKC000C000000000000000 ; [#uses=1] + %tmp89 = add x86_fp80 %tmp8586, %tmp88 ; [#uses=1] + %tmp8990 = fptrunc x86_fp80 %tmp89 to double ; [#uses=1] + store double %tmp8990, double* null, align 8 + %tmp97 = load double* null, align 8 ; [#uses=1] + %tmp98 = add double %tmp97, 0x402921FB54442D18 ; [#uses=1] + %tmp99 = fdiv double %tmp98, 3.000000e+00 ; [#uses=1] + %tmp100 = call double @cos( double %tmp99 ) ; [#uses=1] + %tmp101 = mul double 0.000000e+00, %tmp100 ; [#uses=1] + %tmp101102 = fpext double %tmp101 to x86_fp80 ; [#uses=1] + %tmp103 = load x86_fp80* null, align 16 ; [#uses=1] + %tmp104 = fdiv x86_fp80 %tmp103, 0xKC000C000000000000000 ; [#uses=1] + %tmp105 = add x86_fp80 %tmp101102, %tmp104 ; [#uses=1] + %tmp105106 = fptrunc x86_fp80 %tmp105 to double ; [#uses=1] + store double %tmp105106, double* null, align 8 + ret void +} + +declare double @cos(double) From dpatel at apple.com Wed Jan 16 20:10:09 2008 From: dpatel at apple.com (Devang Patel) Date: Thu, 17 Jan 2008 02:10:09 -0000 Subject: [llvm-commits] [llvm] r46112 - /llvm/trunk/utils/buildit/build_llvm Message-ID: <200801170210.m0H2A9Li005483@zion.cs.uiuc.edu> Author: dpatel Date: Wed Jan 16 20:10:08 2008 New Revision: 46112 URL: http://llvm.org/viewvc/llvm-project?rev=46112&view=rev Log: Enable CBE Modified: llvm/trunk/utils/buildit/build_llvm Modified: llvm/trunk/utils/buildit/build_llvm URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/buildit/build_llvm?rev=46112&r1=46111&r2=46112&view=diff ============================================================================== --- llvm/trunk/utils/buildit/build_llvm (original) +++ llvm/trunk/utils/buildit/build_llvm Wed Jan 16 20:10:08 2008 @@ -85,7 +85,7 @@ if [ \! -f Makefile.config ]; then $SRC_DIR/llvm/configure --prefix=$DEST_DIR$DEST_ROOT \ - --enable-targets=x86,powerpc --enable-assertions=$LLVM_ASSERTIONS \ + --enable-targets=x86,powerpc,cbe --enable-assertions=$LLVM_ASSERTIONS \ || exit 1 fi From evan.cheng at apple.com Wed Jan 16 22:18:56 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Thu, 17 Jan 2008 04:18:56 -0000 Subject: [llvm-commits] [llvm] r46113 - /llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp Message-ID: <200801170418.m0H4IupL014978@zion.cs.uiuc.edu> Author: evancheng Date: Wed Jan 16 22:18:54 2008 New Revision: 46113 URL: http://llvm.org/viewvc/llvm-project?rev=46113&view=rev Log: DAE bug fix. Don't lose parameter attributes on vararg arguments. Modified: llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp Modified: llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp?rev=46113&r1=46112&r2=46113&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp (original) +++ llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp Wed Jan 16 22:18:54 2008 @@ -590,15 +590,19 @@ ParamAttrsVec.push_back(ParamAttrsWithIndex::get(Args.size(), Attrs)); } - // Reconstruct the ParamAttrsList based on the vector we constructed. - PAL = ParamAttrsList::get(ParamAttrsVec); - if (ExtraArgHack) Args.push_back(UndefValue::get(Type::Int32Ty)); - // Push any varargs arguments on the list - for (; AI != CS.arg_end(); ++AI) + // Push any varargs arguments on the list. Don't forget their attributes. + for (; AI != CS.arg_end(); ++AI) { Args.push_back(*AI); + uint16_t Attrs = PAL ? PAL->getParamAttrs(index++) : 0; + if (Attrs) + ParamAttrsVec.push_back(ParamAttrsWithIndex::get(Args.size(), Attrs)); + } + + // Reconstruct the ParamAttrsList based on the vector we constructed. + PAL = ParamAttrsList::get(ParamAttrsVec); Instruction *New; if (InvokeInst *II = dyn_cast(Call)) { From tonic at nondot.org Wed Jan 16 23:09:49 2008 From: tonic at nondot.org (Tanya Lattner) Date: Thu, 17 Jan 2008 05:09:49 -0000 Subject: [llvm-commits] [llvm] r46114 - /llvm/branches/release_22/ Message-ID: <200801170509.m0H59oIg017630@zion.cs.uiuc.edu> Author: tbrethou Date: Wed Jan 16 23:09:49 2008 New Revision: 46114 URL: http://llvm.org/viewvc/llvm-project?rev=46114&view=rev Log: Creating 2.2 release branch Added: llvm/branches/release_22/ - copied from r46113, llvm/trunk/ From tonic at nondot.org Wed Jan 16 23:11:04 2008 From: tonic at nondot.org (Tanya Lattner) Date: Thu, 17 Jan 2008 05:11:04 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r46115 - /llvm-gcc-4.0/branches/release_22/ Message-ID: <200801170511.m0H5B4MV017724@zion.cs.uiuc.edu> Author: tbrethou Date: Wed Jan 16 23:11:03 2008 New Revision: 46115 URL: http://llvm.org/viewvc/llvm-project?rev=46115&view=rev Log: Creating 2.2 release branch. Added: llvm-gcc-4.0/branches/release_22/ - copied from r46114, llvm-gcc-4.0/trunk/ From tonic at nondot.org Wed Jan 16 23:11:31 2008 From: tonic at nondot.org (Tanya Lattner) Date: Thu, 17 Jan 2008 05:11:31 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46116 - /llvm-gcc-4.2/branches/release_22/ Message-ID: <200801170511.m0H5BVRa017763@zion.cs.uiuc.edu> Author: tbrethou Date: Wed Jan 16 23:11:31 2008 New Revision: 46116 URL: http://llvm.org/viewvc/llvm-project?rev=46116&view=rev Log: Creating 2.2 release branch. Added: llvm-gcc-4.2/branches/release_22/ - copied from r46115, llvm-gcc-4.2/trunk/ From tonic at nondot.org Wed Jan 16 23:12:22 2008 From: tonic at nondot.org (Tanya Lattner) Date: Thu, 17 Jan 2008 05:12:22 -0000 Subject: [llvm-commits] [test-suite] r46117 - /test-suite/branches/release_22/ Message-ID: <200801170512.m0H5CM0J017812@zion.cs.uiuc.edu> Author: tbrethou Date: Wed Jan 16 23:12:22 2008 New Revision: 46117 URL: http://llvm.org/viewvc/llvm-project?rev=46117&view=rev Log: Creating 2.2 release branch. Added: test-suite/branches/release_22/ - copied from r46116, test-suite/trunk/ From tonic at nondot.org Wed Jan 16 23:54:19 2008 From: tonic at nondot.org (Tanya Lattner) Date: Thu, 17 Jan 2008 05:54:19 -0000 Subject: [llvm-commits] [llvm] r46118 - in /llvm/branches/release_22: autoconf/configure.ac configure Message-ID: <200801170554.m0H5sKg9001108@zion.cs.uiuc.edu> Author: tbrethou Date: Wed Jan 16 23:54:18 2008 New Revision: 46118 URL: http://llvm.org/viewvc/llvm-project?rev=46118&view=rev Log: Set version to 2.2 Regenerated configure with autoconf 2.60. Do not use 2.61 until AutoGen.sh is updated! Modified: llvm/branches/release_22/autoconf/configure.ac llvm/branches/release_22/configure Modified: llvm/branches/release_22/autoconf/configure.ac URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_22/autoconf/configure.ac?rev=46118&r1=46117&r2=46118&view=diff ============================================================================== --- llvm/branches/release_22/autoconf/configure.ac (original) +++ llvm/branches/release_22/autoconf/configure.ac Wed Jan 16 23:54:18 2008 @@ -31,7 +31,7 @@ dnl===-----------------------------------------------------------------------=== dnl Initialize autoconf and define the package name, version number and dnl email address for reporting bugs. -AC_INIT([[llvm]],[[2.2svn]],[llvmbugs at cs.uiuc.edu]) +AC_INIT([[llvm]],[[2.2]],[llvmbugs at cs.uiuc.edu]) dnl Provide a copyright substitution and ensure the copyright notice is included dnl in the output of --version option of the generated configure script. Modified: llvm/branches/release_22/configure URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_22/configure?rev=46118&r1=46117&r2=46118&view=diff ============================================================================== --- llvm/branches/release_22/configure (original) +++ llvm/branches/release_22/configure Wed Jan 16 23:54:18 2008 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for llvm 2.2svn. +# Generated by GNU Autoconf 2.60 for llvm 2.2. # # Report bugs to . # @@ -14,8 +14,7 @@ ## M4sh Initialization. ## ## --------------------- ## -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh +# Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: @@ -24,13 +23,10 @@ alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi - - +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh # PATH needs CR @@ -223,7 +219,7 @@ else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +for as_dir in /usr/bin/posix$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -241,6 +237,7 @@ # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF +# Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: @@ -249,12 +246,10 @@ alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi - +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh : _ASEOF @@ -262,6 +257,7 @@ CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF +# Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: @@ -270,12 +266,10 @@ alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi - +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh : (as_func_return () { @@ -522,28 +516,19 @@ as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' +# Find out whether ``test -x'' works. Don't use a zero-byte file, as +# systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + as_executable_p="test -x" else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' + as_executable_p=: fi -as_executable_p=$as_test_x +rm -f conf$$.file # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -730,44 +715,44 @@ # Identity of this package. PACKAGE_NAME='llvm' PACKAGE_TARNAME='-llvm-' -PACKAGE_VERSION='2.2svn' -PACKAGE_STRING='llvm 2.2svn' +PACKAGE_VERSION='2.2' +PACKAGE_STRING='llvm 2.2' PACKAGE_BUGREPORT='llvmbugs at cs.uiuc.edu' ac_unique_file="lib/VMCore/Module.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include -#ifdef HAVE_SYS_TYPES_H +#if HAVE_SYS_TYPES_H # include #endif -#ifdef HAVE_SYS_STAT_H +#if HAVE_SYS_STAT_H # include #endif -#ifdef STDC_HEADERS +#if STDC_HEADERS # include # include #else -# ifdef HAVE_STDLIB_H +# if HAVE_STDLIB_H # include # endif #endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif -#ifdef HAVE_STRINGS_H +#if HAVE_STRINGS_H # include #endif -#ifdef HAVE_INTTYPES_H +#if HAVE_INTTYPES_H # include #endif -#ifdef HAVE_STDINT_H +#if HAVE_STDINT_H # include #endif -#ifdef HAVE_UNISTD_H +#if HAVE_UNISTD_H # include #endif" @@ -860,8 +845,8 @@ CXXFLAGS ac_ct_CXX LEX -LEX_OUTPUT_ROOT LEXLIB +LEX_OUTPUT_ROOT FLEX YACC YFLAGS @@ -951,7 +936,6 @@ CC CFLAGS LDFLAGS -LIBS CPPFLAGS CPP CXX @@ -1077,10 +1061,10 @@ -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval enable_$ac_feature=no ;; -docdir | --docdir | --docdi | --doc | --do) @@ -1096,10 +1080,10 @@ -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval enable_$ac_feature=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ @@ -1293,19 +1277,19 @@ -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + ac_package=`echo $ac_package| sed 's/-/_/g'` eval with_$ac_package=\$ac_optarg ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + ac_package=`echo $ac_package | sed 's/-/_/g'` eval with_$ac_package=no ;; --x) @@ -1474,7 +1458,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures llvm 2.2svn to adapt to many kinds of systems. +\`configure' configures llvm 2.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1540,7 +1524,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of llvm 2.2svn:";; + short | recursive ) echo "Configuration of llvm 2.2:";; esac cat <<\_ACEOF @@ -1597,7 +1581,6 @@ CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory - LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor @@ -1676,8 +1659,8 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -llvm configure 2.2svn -generated by GNU Autoconf 2.61 +llvm configure 2.2 +generated by GNU Autoconf 2.60 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. @@ -1692,8 +1675,8 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by llvm $as_me 2.2svn, which was -generated by GNU Autoconf 2.61. Invocation command line was +It was created by llvm $as_me 2.2, which was +generated by GNU Autoconf 2.60. Invocation command line was $ $0 $@ @@ -2427,7 +2410,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2467,7 +2450,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2524,7 +2507,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2565,7 +2548,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -2623,7 +2606,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2667,7 +2650,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2808,7 +2791,7 @@ # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. -for ac_file in $ac_files '' +for ac_file in $ac_files do test -f "$ac_file" || continue case $ac_file in @@ -2836,12 +2819,6 @@ test "$ac_cv_exeext" = no && ac_cv_exeext= else - ac_file='' -fi - -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } -if test -z "$ac_file"; then echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -2853,6 +2830,8 @@ fi ac_exeext=$ac_cv_exeext +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. @@ -3030,10 +3009,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 @@ -3088,10 +3084,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 @@ -3126,10 +3139,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 @@ -3165,10 +3195,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 @@ -3284,10 +3331,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 @@ -3377,10 +3441,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 @@ -3414,10 +3485,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else @@ -3482,10 +3560,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 @@ -3519,10 +3604,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else @@ -3577,7 +3669,7 @@ for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + { test -f "$ac_path_GREP" && $as_executable_p "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in @@ -3659,7 +3751,7 @@ for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + { test -f "$ac_path_EGREP" && $as_executable_p "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in @@ -3755,10 +3847,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 @@ -3934,10 +4043,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 @@ -3979,8 +4105,7 @@ int main () { -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \ - && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN) +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN bogus endian macros #endif @@ -4001,10 +4126,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then # It does; now see whether it defined to BIG_ENDIAN or not. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -4039,10 +4181,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_c_bigendian=yes else echo "$as_me: failed program was:" >&5 @@ -4093,10 +4252,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then ac_cv_c_bigendian=yes fi @@ -4226,7 +4402,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_BUILD_CC="${ac_build_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4264,7 +4440,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_BUILD_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4303,7 +4479,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -4781,10 +4957,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 @@ -4818,10 +5001,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else @@ -4886,10 +5076,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 @@ -4923,10 +5120,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else @@ -4983,7 +5187,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5027,7 +5231,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5145,10 +5349,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 @@ -5203,10 +5424,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 @@ -5241,10 +5479,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 @@ -5280,10 +5535,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 @@ -5399,10 +5671,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 @@ -5467,7 +5756,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5511,7 +5800,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5624,10 +5913,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 @@ -5682,10 +5988,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 @@ -5720,10 +6043,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 @@ -5759,10 +6099,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 @@ -5826,7 +6183,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LEX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5851,70 +6208,37 @@ done test -n "$LEX" || LEX=":" -if test "x$LEX" != "x:"; then - cat >conftest.l <<_ACEOF -%% -a { ECHO; } -b { REJECT; } -c { yymore (); } -d { yyless (1); } -e { yyless (input () != 0); } -f { unput (yytext[0]); } -. { BEGIN INITIAL; } -%% -#ifdef YYTEXT_POINTER -extern char *yytext; +if test -z "$LEXLIB" +then + { echo "$as_me:$LINENO: checking for yywrap in -lfl" >&5 +echo $ECHO_N "checking for yywrap in -lfl... $ECHO_C" >&6; } +if test "${ac_cv_lib_fl_yywrap+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lfl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" #endif +char yywrap (); int -main (void) +main () { - return ! yylex () + ! yywrap (); +return yywrap (); + ; + return 0; } _ACEOF -{ (ac_try="$LEX conftest.l" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$LEX conftest.l") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ echo "$as_me:$LINENO: checking lex output file root" >&5 -echo $ECHO_N "checking lex output file root... $ECHO_C" >&6; } -if test "${ac_cv_prog_lex_root+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -if test -f lex.yy.c; then - ac_cv_prog_lex_root=lex.yy -elif test -f lexyy.c; then - ac_cv_prog_lex_root=lexyy -else - { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 -echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} - { (exit 1); exit 1; }; } -fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 -echo "${ECHO_T}$ac_cv_prog_lex_root" >&6; } -LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root - -if test -z "${LEXLIB+set}"; then - { echo "$as_me:$LINENO: checking lex library" >&5 -echo $ECHO_N "checking lex library... $ECHO_C" >&6; } -if test "${ac_cv_lib_lex+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - ac_save_LIBS=$LIBS - ac_cv_lib_lex='none needed' - for ac_lib in '' -lfl -ll; do - LIBS="$ac_lib $ac_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -`cat $LEX_OUTPUT_ROOT.c` -_ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in @@ -5928,46 +6252,72 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_lex=$ac_lib + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_fl_yywrap=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - + ac_cv_lib_fl_yywrap=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - test "$ac_cv_lib_lex" != 'none needed' && break - done - LIBS=$ac_save_LIBS - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5 -echo "${ECHO_T}$ac_cv_lib_lex" >&6; } - test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex +LIBS=$ac_check_lib_save_LIBS fi - - -{ echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 -echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6; } -if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then +{ echo "$as_me:$LINENO: result: $ac_cv_lib_fl_yywrap" >&5 +echo "${ECHO_T}$ac_cv_lib_fl_yywrap" >&6; } +if test $ac_cv_lib_fl_yywrap = yes; then + LEXLIB="-lfl" +else + { echo "$as_me:$LINENO: checking for yywrap in -ll" >&5 +echo $ECHO_N "checking for yywrap in -ll... $ECHO_C" >&6; } +if test "${ac_cv_lib_l_yywrap+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - # POSIX says lex can declare yytext either as a pointer or an array; the -# default is implementation-dependent. Figure out which it is, since -# not all implementations provide the %pointer and %array declarations. -ac_cv_prog_lex_yytext_pointer=no -ac_save_LIBS=$LIBS -LIBS="$LEXLIB $ac_save_LIBS" + ac_check_lib_save_LIBS=$LIBS +LIBS="-ll $LIBS" cat >conftest.$ac_ext <<_ACEOF -#define YYTEXT_POINTER 1 -`cat $LEX_OUTPUT_ROOT.c` +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char yywrap (); +int +main () +{ +return yywrap (); + ; + return 0; +} _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" @@ -5982,22 +6332,147 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_prog_lex_yytext_pointer=yes + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_l_yywrap=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - + ac_cv_lib_l_yywrap=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_save_LIBS +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_l_yywrap" >&5 +echo "${ECHO_T}$ac_cv_lib_l_yywrap" >&6; } +if test $ac_cv_lib_l_yywrap = yes; then + LEXLIB="-ll" +fi + +fi + +fi + +if test "x$LEX" != "x:"; then + { echo "$as_me:$LINENO: checking lex output file root" >&5 +echo $ECHO_N "checking lex output file root... $ECHO_C" >&6; } +if test "${ac_cv_prog_lex_root+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # The minimal lex program is just a single line: %%. But some broken lexes +# (Solaris, I think it was) want two %% lines, so accommodate them. +cat >conftest.l <<_ACEOF +%% +%% +_ACEOF +{ (ac_try="$LEX conftest.l" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$LEX conftest.l") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +if test -f lex.yy.c; then + ac_cv_prog_lex_root=lex.yy +elif test -f lexyy.c; then + ac_cv_prog_lex_root=lexyy +else + { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 +echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} + { (exit 1); exit 1; }; } +fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 +echo "${ECHO_T}$ac_cv_prog_lex_root" >&6; } +rm -f conftest.l +LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root + +{ echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 +echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6; } +if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # POSIX says lex can declare yytext either as a pointer or an array; the +# default is implementation-dependent. Figure out which it is, since +# not all implementations provide the %pointer and %array declarations. +ac_cv_prog_lex_yytext_pointer=no +echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c +ac_save_LIBS=$LIBS +LIBS="$LIBS $LEXLIB" +cat >conftest.$ac_ext <<_ACEOF +`cat $LEX_OUTPUT_ROOT.c` +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_lex_yytext_pointer=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_save_LIBS +rm -f "${LEX_OUTPUT_ROOT}.c" fi { echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 @@ -6009,7 +6484,6 @@ _ACEOF fi -rm -f conftest.l $LEX_OUTPUT_ROOT.c fi @@ -6048,7 +6522,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_YACC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6195,7 +6669,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_CMP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6236,7 +6710,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_CP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6277,7 +6751,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_DATE="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6318,7 +6792,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_FIND="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6359,7 +6833,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GREP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6400,7 +6874,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_MKDIR="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6441,7 +6915,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_MV="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6481,7 +6955,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6521,7 +6995,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6578,7 +7052,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6619,7 +7093,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_SED="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6660,7 +7134,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_TAR="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6701,7 +7175,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_BINPWD="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6743,7 +7217,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GRAPHVIZ="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6799,7 +7273,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_DOT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6857,7 +7331,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GV="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6916,7 +7390,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_DOTTY="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6974,7 +7448,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7058,7 +7532,7 @@ # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -7121,7 +7595,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_BZIP2="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7162,7 +7636,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_DOXYGEN="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7203,7 +7677,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GROFF="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7244,7 +7718,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7285,7 +7759,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_POD2HTML="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7326,7 +7800,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_POD2MAN="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7367,7 +7841,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_RUNTEST="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7441,7 +7915,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_TCLSH="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7498,7 +7972,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ZIP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7539,7 +8013,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_OCAMLC="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7580,7 +8054,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_OCAMLOPT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7621,7 +8095,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_OCAMLDEP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7686,11 +8160,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then llvm_cv_link_use_r=yes else echo "$as_me: failed program was:" >&5 @@ -7699,7 +8189,7 @@ llvm_cv_link_use_r=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$oldcflags" ac_ext=c @@ -7742,10 +8232,10 @@ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; - const charset cs; + const charset x; /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; + char const *const *ccp; + char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; @@ -7754,11 +8244,11 @@ an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); + ccp = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; @@ -7785,7 +8275,7 @@ const int foo = 10; if (!foo) return 0; } - return !cs[0] && !zero.x; + return !x[0] && !zero.x; #endif ; @@ -7805,10 +8295,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 @@ -7873,10 +8380,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 @@ -7949,11 +8473,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_search_opendir=$ac_res else echo "$as_me: failed program was:" >&5 @@ -7962,7 +8502,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_opendir+set}" = set; then break @@ -8033,11 +8573,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_search_opendir=$ac_res else echo "$as_me: failed program was:" >&5 @@ -8046,7 +8602,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_opendir+set}" = set; then break @@ -8109,10 +8665,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -8148,10 +8721,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -9245,11 +9825,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 @@ -9258,7 +9854,7 @@ ac_cv_func_shl_load=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 @@ -9312,11 +9908,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 @@ -9325,7 +9937,7 @@ ac_cv_lib_dld_shl_load=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -9381,11 +9993,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 @@ -9394,7 +10022,7 @@ ac_cv_lib_dl_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -9439,11 +10067,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then cat >>confdefs.h <<\_ACEOF #define HAVE_LIBDL 1 @@ -9495,11 +10139,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 @@ -9508,7 +10168,7 @@ ac_cv_lib_svld_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -9564,11 +10224,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 @@ -9577,7 +10253,7 @@ ac_cv_lib_dld_dld_link=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -9654,11 +10330,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func__dyld_func_lookup=yes else echo "$as_me: failed program was:" >&5 @@ -9667,7 +10359,7 @@ ac_cv_func__dyld_func_lookup=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func__dyld_func_lookup" >&5 @@ -9689,7 +10381,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi @@ -9772,11 +10464,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -9785,7 +10493,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -9872,7 +10580,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -10140,10 +10865,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -10248,10 +10980,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_type_error_t=yes else echo "$as_me: failed program was:" >&5 @@ -10351,11 +11100,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -10364,7 +11129,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -10444,10 +11209,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -10483,10 +11265,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -10592,10 +11381,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -10631,10 +11437,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -10738,10 +11551,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -10777,10 +11607,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -10913,11 +11750,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -10926,7 +11779,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -11008,11 +11861,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -11021,7 +11890,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -11103,11 +11972,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -11116,7 +12001,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -11198,21 +12083,37 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -11294,11 +12195,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -11307,7 +12224,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -11807,7 +12724,7 @@ ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 11809 "configure"' > conftest.$ac_ext + echo '#line 12727 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -11931,11 +12848,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 @@ -11944,7 +12877,7 @@ lt_cv_cc_needs_belf=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -12039,10 +12972,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 @@ -12076,10 +13016,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else @@ -12144,10 +13091,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 @@ -12181,10 +13135,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else @@ -12225,7 +13186,7 @@ ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then - for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn + for ac_prog in g77 f77 xlf frt pgf77 cf77 fort77 fl32 af77 f90 xlf90 pgf90 pghpf epcf90 gfortran g95 f95 fort xlf95 ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 @@ -12243,7 +13204,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -12269,7 +13230,7 @@ fi if test -z "$F77"; then ac_ct_F77=$F77 - for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn + for ac_prog in g77 f77 xlf frt pgf77 cf77 fort77 fl32 af77 f90 xlf90 pgf90 pghpf epcf90 gfortran g95 f95 fort xlf95 ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -12287,7 +13248,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_F77="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -12394,10 +13355,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 @@ -12440,10 +13418,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_f77_g=yes else echo "$as_me: failed program was:" >&5 @@ -12898,7 +13893,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -12938,7 +13933,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -12994,7 +13989,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -13034,7 +14029,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -13090,7 +14085,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -13130,7 +14125,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -13447,11 +14442,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13449: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14445: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:13453: \$? = $ac_status" >&5 + echo "$as_me:14449: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -13715,11 +14710,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13717: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14713: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:13721: \$? = $ac_status" >&5 + echo "$as_me:14717: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -13819,11 +14814,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13821: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14817: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:13825: \$? = $ac_status" >&5 + echo "$as_me:14821: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -14299,11 +15294,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` @@ -14317,7 +15328,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -14358,11 +15369,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` @@ -14376,7 +15403,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -15624,11 +16651,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 @@ -15637,7 +16680,7 @@ ac_cv_lib_dl_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -15719,11 +16762,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 @@ -15732,7 +16791,7 @@ ac_cv_func_shl_load=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 @@ -15782,11 +16841,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 @@ -15795,7 +16870,7 @@ ac_cv_lib_dld_shl_load=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -15867,11 +16942,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 @@ -15880,7 +16971,7 @@ ac_cv_func_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 @@ -15930,11 +17021,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 @@ -15943,7 +17050,7 @@ ac_cv_lib_dl_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -15994,11 +17101,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 @@ -16007,7 +17130,7 @@ ac_cv_lib_svld_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -16058,11 +17181,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 @@ -16071,7 +17210,7 @@ ac_cv_lib_dld_dld_link=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -16127,7 +17266,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` @@ -17332,7 +18487,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -17374,11 +18529,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` @@ -17392,7 +18563,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -18563,11 +19734,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18565: $lt_compile\"" >&5) + (eval echo "\"\$as_me:19737: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:18569: \$? = $ac_status" >&5 + echo "$as_me:19741: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -18667,11 +19838,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18669: $lt_compile\"" >&5) + (eval echo "\"\$as_me:19841: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:18673: \$? = $ac_status" >&5 + echo "$as_me:19845: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -20237,11 +21408,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:20239: $lt_compile\"" >&5) + (eval echo "\"\$as_me:21411: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:20243: \$? = $ac_status" >&5 + echo "$as_me:21415: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -20341,11 +21512,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:20343: $lt_compile\"" >&5) + (eval echo "\"\$as_me:21515: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:20347: \$? = $ac_status" >&5 + echo "$as_me:21519: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -20811,11 +21982,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` @@ -20829,7 +22016,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -20860,11 +22047,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` @@ -20878,7 +22081,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -22544,11 +23747,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:22546: $lt_compile\"" >&5) + (eval echo "\"\$as_me:23750: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:22550: \$? = $ac_status" >&5 + echo "$as_me:23754: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -22812,11 +24015,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:22814: $lt_compile\"" >&5) + (eval echo "\"\$as_me:24018: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:22818: \$? = $ac_status" >&5 + echo "$as_me:24022: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -22916,11 +24119,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:22918: $lt_compile\"" >&5) + (eval echo "\"\$as_me:24122: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:22922: \$? = $ac_status" >&5 + echo "$as_me:24126: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -23396,11 +24599,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` @@ -23414,7 +24633,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -23455,11 +24674,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` @@ -23473,7 +24708,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -25613,7 +26848,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_LLVMGCC="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -25653,7 +26888,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_LLVMGXX="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -25781,11 +27016,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_elf_elf_begin=yes else echo "$as_me: failed program was:" >&5 @@ -25794,7 +27045,7 @@ ac_cv_lib_elf_elf_begin=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -25852,11 +27103,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_m_sin=yes else echo "$as_me: failed program was:" >&5 @@ -25865,7 +27132,7 @@ ac_cv_lib_m_sin=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -25918,11 +27185,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_imagehlp_main=yes else echo "$as_me: failed program was:" >&5 @@ -25931,7 +27214,7 @@ ac_cv_lib_imagehlp_main=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -25983,11 +27266,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_psapi_main=yes else echo "$as_me: failed program was:" >&5 @@ -25996,7 +27295,7 @@ ac_cv_lib_psapi_main=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -26061,11 +27360,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_search_lt_dlopen=$ac_res else echo "$as_me: failed program was:" >&5 @@ -26074,7 +27389,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_lt_dlopen+set}" = set; then break @@ -26154,11 +27469,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_search_dlopen=$ac_res else echo "$as_me: failed program was:" >&5 @@ -26167,7 +27498,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_dlopen+set}" = set; then break @@ -26245,11 +27576,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_search_mallinfo=$ac_res else echo "$as_me: failed program was:" >&5 @@ -26258,7 +27605,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_mallinfo+set}" = set; then break @@ -26329,11 +27676,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_pthread_pthread_mutex_init=yes else echo "$as_me: failed program was:" >&5 @@ -26342,7 +27705,7 @@ ac_cv_lib_pthread_pthread_mutex_init=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -26405,23 +27768,39 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_search_pthread_mutex_lock=$ac_res -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext - if test "${ac_cv_search_pthread_mutex_lock+set}" = set; then - break + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_pthread_mutex_lock=$ac_res +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_pthread_mutex_lock+set}" = set; then + break fi done if test "${ac_cv_search_pthread_mutex_lock+set}" = set; then @@ -26499,11 +27878,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_udis86_ud_init=yes else echo "$as_me: failed program was:" >&5 @@ -26512,7 +27907,7 @@ ac_cv_lib_udis86_ud_init=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -26589,10 +27984,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 @@ -26665,11 +28077,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_search_opendir=$ac_res else echo "$as_me: failed program was:" >&5 @@ -26678,7 +28106,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_opendir+set}" = set; then break @@ -26749,11 +28177,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_search_opendir=$ac_res else echo "$as_me: failed program was:" >&5 @@ -26762,7 +28206,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_opendir+set}" = set; then break @@ -26827,10 +28271,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_header_mmap_anon=yes else echo "$as_me: failed program was:" >&5 @@ -26873,48 +28334,38 @@ #include #if defined S_ISBLK && defined S_IFDIR -extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +# if S_ISBLK (S_IFDIR) +You lose. +# endif #endif #if defined S_ISBLK && defined S_IFCHR -extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +# if S_ISBLK (S_IFCHR) +You lose. +# endif #endif #if defined S_ISLNK && defined S_IFREG -extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +# if S_ISLNK (S_IFREG) +You lose. +# endif #endif #if defined S_ISSOCK && defined S_IFREG -extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +# if S_ISSOCK (S_IFREG) +You lose. +# endif #endif _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_header_stat_broken=no +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "You lose" >/dev/null 2>&1; then + ac_cv_header_stat_broken=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_stat_broken=yes + ac_cv_header_stat_broken=no fi +rm -f conftest* -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 echo "${ECHO_T}$ac_cv_header_stat_broken" >&6; } @@ -26963,10 +28414,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 @@ -27143,10 +28611,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_header_sys_wait_h=yes else echo "$as_me: failed program was:" >&5 @@ -27204,10 +28689,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_header_time=yes else echo "$as_me: failed program was:" >&5 @@ -27273,10 +28775,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -27312,10 +28831,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -27423,10 +28949,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -27462,10 +29005,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -27568,10 +29118,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -27607,10 +29174,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -27716,10 +29290,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -27755,10 +29346,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -27863,10 +29461,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -27902,10 +29517,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -28009,10 +29631,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -28048,10 +29687,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -28240,10 +29886,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_type_pid_t=yes else echo "$as_me: failed program was:" >&5 @@ -28303,10 +29966,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 @@ -28364,10 +30044,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_type_signal=int else echo "$as_me: failed program was:" >&5 @@ -28403,9 +30100,7 @@ int main () { -struct tm tm; - int *p = &tm.tm_sec; - return !p; +struct tm *tp; tp->tm_sec; ; return 0; } @@ -28423,10 +30118,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_struct_tm=time.h else echo "$as_me: failed program was:" >&5 @@ -28484,10 +30196,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_type_int64_t=yes else echo "$as_me: failed program was:" >&5 @@ -28550,10 +30279,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_type_uint64_t=yes else echo "$as_me: failed program was:" >&5 @@ -28611,10 +30357,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_type_u_int64_t=yes else echo "$as_me: failed program was:" >&5 @@ -28717,11 +30480,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -28730,7 +30509,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -28814,11 +30593,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -28827,7 +30622,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -28912,11 +30707,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -28925,7 +30736,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -29008,11 +30819,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -29021,7 +30848,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -29108,11 +30935,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -29121,7 +30964,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -29205,11 +31048,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -29218,7 +31077,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -29302,11 +31161,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -29315,7 +31190,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -29459,11 +31334,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_working_alloca_h=yes else echo "$as_me: failed program was:" >&5 @@ -29472,7 +31363,7 @@ ac_cv_working_alloca_h=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 @@ -29503,7 +31394,7 @@ # include # define alloca _alloca # else -# ifdef HAVE_ALLOCA_H +# if HAVE_ALLOCA_H # include # else # ifdef _AIX @@ -29539,11 +31430,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_alloca_works=yes else echo "$as_me: failed program was:" >&5 @@ -29552,7 +31459,7 @@ ac_cv_func_alloca_works=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 @@ -29672,11 +31579,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -29685,7 +31608,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -29822,10 +31745,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_rand48=yes else echo "$as_me: failed program was:" >&5 @@ -29893,10 +31833,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_namespaces=yes else echo "$as_me: failed program was:" >&5 @@ -29967,10 +31924,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_std_ext_hash_map=yes else echo "$as_me: failed program was:" >&5 @@ -30047,10 +32021,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_gnu_ext_hash_map=yes else echo "$as_me: failed program was:" >&5 @@ -30124,10 +32115,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_global_hash_map=yes else echo "$as_me: failed program was:" >&5 @@ -30204,10 +32212,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_std_ext_hash_set=yes else echo "$as_me: failed program was:" >&5 @@ -30284,10 +32309,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_gnu_ext_hash_set=yes else echo "$as_me: failed program was:" >&5 @@ -30361,10 +32403,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_global_hash_set=yes else echo "$as_me: failed program was:" >&5 @@ -30441,10 +32500,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_std_iterator=yes else echo "$as_me: failed program was:" >&5 @@ -30522,10 +32598,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_bi_iterator=yes else echo "$as_me: failed program was:" >&5 @@ -30603,10 +32696,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_fwd_iterator=yes else echo "$as_me: failed program was:" >&5 @@ -30681,10 +32791,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_isnan_in_math_h=yes else echo "$as_me: failed program was:" >&5 @@ -30752,10 +32879,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_isnan_in_cmath=yes else echo "$as_me: failed program was:" >&5 @@ -30822,10 +32966,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_std_isnan_in_cmath=yes else echo "$as_me: failed program was:" >&5 @@ -30893,10 +33054,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_isinf_in_math_h=yes else echo "$as_me: failed program was:" >&5 @@ -30963,10 +33141,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_isinf_in_cmath=yes else echo "$as_me: failed program was:" >&5 @@ -31033,10 +33228,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_std_isinf_in_cmath=yes else echo "$as_me: failed program was:" >&5 @@ -31103,10 +33315,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_finite_in_ieeefp_h=yes else echo "$as_me: failed program was:" >&5 @@ -31177,10 +33406,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -31216,10 +33462,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -31350,11 +33603,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -31363,7 +33632,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -31420,21 +33689,21 @@ #include #include -#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H +#if !STDC_HEADERS && !HAVE_STDLIB_H char *malloc (); #endif /* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE +#if !HAVE_GETPAGESIZE /* Assume that all systems that can run configure have sys/param.h. */ -# ifndef HAVE_SYS_PARAM_H +# if !HAVE_SYS_PARAM_H # define HAVE_SYS_PARAM_H 1 # endif # ifdef _SC_PAGESIZE # define getpagesize() sysconf(_SC_PAGESIZE) # else /* no _SC_PAGESIZE */ -# ifdef HAVE_SYS_PARAM_H +# if HAVE_SYS_PARAM_H # include # ifdef EXEC_PAGESIZE # define getpagesize() EXEC_PAGESIZE @@ -31757,11 +34026,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -31770,7 +34055,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -32177,8 +34462,7 @@ ## M4sh Initialization. ## ## --------------------- ## -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh +# Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: @@ -32187,13 +34471,10 @@ alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi - - +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh # PATH needs CR @@ -32417,28 +34698,19 @@ as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' +# Find out whether ``test -x'' works. Don't use a zero-byte file, as +# systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + as_executable_p="test -x" else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' + as_executable_p=: fi -as_executable_p=$as_test_x +rm -f conf$$.file # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -32453,8 +34725,8 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by llvm $as_me 2.2svn, which was -generated by GNU Autoconf 2.61. Invocation command line was +This file was extended by llvm $as_me 2.2, which was +generated by GNU Autoconf 2.60. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -32483,7 +34755,7 @@ Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit + -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions @@ -32506,8 +34778,8 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -llvm config.status 2.2svn -configured by $0, generated by GNU Autoconf 2.61, +llvm config.status 2.2 +configured by $0, generated by GNU Autoconf 2.60, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2006 Free Software Foundation, Inc. @@ -32792,8 +35064,8 @@ CXXFLAGS!$CXXFLAGS$ac_delim ac_ct_CXX!$ac_ct_CXX$ac_delim LEX!$LEX$ac_delim -LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim LEXLIB!$LEXLIB$ac_delim +LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim FLEX!$FLEX$ac_delim YACC!$YACC$ac_delim YFLAGS!$YFLAGS$ac_delim @@ -33426,12 +35698,7 @@ case $ac_arg in *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac - ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" - - # Pass --silent - if test "$silent" = yes; then - ac_sub_configure_args="--silent $ac_sub_configure_args" - fi + ac_sub_configure_args="$ac_arg $ac_sub_configure_args" ac_popdir=`pwd` for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue From tonic at nondot.org Wed Jan 16 23:57:22 2008 From: tonic at nondot.org (Tanya Lattner) Date: Thu, 17 Jan 2008 05:57:22 -0000 Subject: [llvm-commits] [llvm] r46119 - in /llvm/trunk: autoconf/configure.ac configure Message-ID: <200801170557.m0H5vNiB010228@zion.cs.uiuc.edu> Author: tbrethou Date: Wed Jan 16 23:57:22 2008 New Revision: 46119 URL: http://llvm.org/viewvc/llvm-project?rev=46119&view=rev Log: Update version to 2.3svn Regenerate configure with 2.60. Modified: llvm/trunk/autoconf/configure.ac llvm/trunk/configure Modified: llvm/trunk/autoconf/configure.ac URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/autoconf/configure.ac?rev=46119&r1=46118&r2=46119&view=diff ============================================================================== --- llvm/trunk/autoconf/configure.ac (original) +++ llvm/trunk/autoconf/configure.ac Wed Jan 16 23:57:22 2008 @@ -31,12 +31,12 @@ dnl===-----------------------------------------------------------------------=== dnl Initialize autoconf and define the package name, version number and dnl email address for reporting bugs. -AC_INIT([[llvm]],[[2.2svn]],[llvmbugs at cs.uiuc.edu]) +AC_INIT([[llvm]],[[2.3svn]],[llvmbugs at cs.uiuc.edu]) dnl Provide a copyright substitution and ensure the copyright notice is included dnl in the output of --version option of the generated configure script. -AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign."]) -AC_COPYRIGHT([Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign.]) +AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2008 University of Illinois at Urbana-Champaign."]) +AC_COPYRIGHT([Copyright (c) 2003-2008 University of Illinois at Urbana-Champaign.]) dnl Indicate that we require autoconf 2.59 or later. Ths is needed because we dnl use some autoconf macros only available in 2.59. Modified: llvm/trunk/configure URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/configure?rev=46119&r1=46118&r2=46119&view=diff ============================================================================== --- llvm/trunk/configure (original) +++ llvm/trunk/configure Wed Jan 16 23:57:22 2008 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for llvm 2.2svn. +# Generated by GNU Autoconf 2.60 for llvm 2.3svn. # # Report bugs to . # @@ -9,13 +9,12 @@ # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # -# Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign. +# Copyright (c) 2003-2008 University of Illinois at Urbana-Champaign. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh +# Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: @@ -24,13 +23,10 @@ alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi - - +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh # PATH needs CR @@ -223,7 +219,7 @@ else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +for as_dir in /usr/bin/posix$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -241,6 +237,7 @@ # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF +# Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: @@ -249,12 +246,10 @@ alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi - +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh : _ASEOF @@ -262,6 +257,7 @@ CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF +# Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: @@ -270,12 +266,10 @@ alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi - +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh : (as_func_return () { @@ -522,28 +516,19 @@ as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' +# Find out whether ``test -x'' works. Don't use a zero-byte file, as +# systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + as_executable_p="test -x" else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' + as_executable_p=: fi -as_executable_p=$as_test_x +rm -f conf$$.file # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -730,44 +715,44 @@ # Identity of this package. PACKAGE_NAME='llvm' PACKAGE_TARNAME='-llvm-' -PACKAGE_VERSION='2.2svn' -PACKAGE_STRING='llvm 2.2svn' +PACKAGE_VERSION='2.3svn' +PACKAGE_STRING='llvm 2.3svn' PACKAGE_BUGREPORT='llvmbugs at cs.uiuc.edu' ac_unique_file="lib/VMCore/Module.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include -#ifdef HAVE_SYS_TYPES_H +#if HAVE_SYS_TYPES_H # include #endif -#ifdef HAVE_SYS_STAT_H +#if HAVE_SYS_STAT_H # include #endif -#ifdef STDC_HEADERS +#if STDC_HEADERS # include # include #else -# ifdef HAVE_STDLIB_H +# if HAVE_STDLIB_H # include # endif #endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif -#ifdef HAVE_STRINGS_H +#if HAVE_STRINGS_H # include #endif -#ifdef HAVE_INTTYPES_H +#if HAVE_INTTYPES_H # include #endif -#ifdef HAVE_STDINT_H +#if HAVE_STDINT_H # include #endif -#ifdef HAVE_UNISTD_H +#if HAVE_UNISTD_H # include #endif" @@ -860,8 +845,8 @@ CXXFLAGS ac_ct_CXX LEX -LEX_OUTPUT_ROOT LEXLIB +LEX_OUTPUT_ROOT FLEX YACC YFLAGS @@ -951,7 +936,6 @@ CC CFLAGS LDFLAGS -LIBS CPPFLAGS CPP CXX @@ -1077,10 +1061,10 @@ -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval enable_$ac_feature=no ;; -docdir | --docdir | --docdi | --doc | --do) @@ -1096,10 +1080,10 @@ -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval enable_$ac_feature=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ @@ -1293,19 +1277,19 @@ -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + ac_package=`echo $ac_package| sed 's/-/_/g'` eval with_$ac_package=\$ac_optarg ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + ac_package=`echo $ac_package | sed 's/-/_/g'` eval with_$ac_package=no ;; --x) @@ -1474,7 +1458,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures llvm 2.2svn to adapt to many kinds of systems. +\`configure' configures llvm 2.3svn to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1540,7 +1524,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of llvm 2.2svn:";; + short | recursive ) echo "Configuration of llvm 2.3svn:";; esac cat <<\_ACEOF @@ -1597,7 +1581,6 @@ CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory - LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor @@ -1676,15 +1659,15 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -llvm configure 2.2svn -generated by GNU Autoconf 2.61 +llvm configure 2.3svn +generated by GNU Autoconf 2.60 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. -Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign. +Copyright (c) 2003-2008 University of Illinois at Urbana-Champaign. _ACEOF exit fi @@ -1692,8 +1675,8 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by llvm $as_me 2.2svn, which was -generated by GNU Autoconf 2.61. Invocation command line was +It was created by llvm $as_me 2.3svn, which was +generated by GNU Autoconf 2.60. Invocation command line was $ $0 $@ @@ -2046,7 +2029,7 @@ -LLVM_COPYRIGHT="Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign." +LLVM_COPYRIGHT="Copyright (c) 2003-2008 University of Illinois at Urbana-Champaign." @@ -2427,7 +2410,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2467,7 +2450,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2524,7 +2507,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2565,7 +2548,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -2623,7 +2606,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2667,7 +2650,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2808,7 +2791,7 @@ # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. -for ac_file in $ac_files '' +for ac_file in $ac_files do test -f "$ac_file" || continue case $ac_file in @@ -2836,12 +2819,6 @@ test "$ac_cv_exeext" = no && ac_cv_exeext= else - ac_file='' -fi - -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } -if test -z "$ac_file"; then echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -2853,6 +2830,8 @@ fi ac_exeext=$ac_cv_exeext +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. @@ -3030,10 +3009,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 @@ -3088,10 +3084,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 @@ -3126,10 +3139,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 @@ -3165,10 +3195,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 @@ -3284,10 +3331,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 @@ -3377,10 +3441,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 @@ -3414,10 +3485,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else @@ -3482,10 +3560,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 @@ -3519,10 +3604,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else @@ -3577,7 +3669,7 @@ for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + { test -f "$ac_path_GREP" && $as_executable_p "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in @@ -3659,7 +3751,7 @@ for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + { test -f "$ac_path_EGREP" && $as_executable_p "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in @@ -3755,10 +3847,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 @@ -3934,10 +4043,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 @@ -3979,8 +4105,7 @@ int main () { -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \ - && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN) +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN bogus endian macros #endif @@ -4001,10 +4126,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then # It does; now see whether it defined to BIG_ENDIAN or not. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -4039,10 +4181,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_c_bigendian=yes else echo "$as_me: failed program was:" >&5 @@ -4093,10 +4252,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then ac_cv_c_bigendian=yes fi @@ -4226,7 +4402,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_BUILD_CC="${ac_build_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4264,7 +4440,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_BUILD_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4303,7 +4479,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -4781,10 +4957,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 @@ -4818,10 +5001,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else @@ -4886,10 +5076,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 @@ -4923,10 +5120,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else @@ -4983,7 +5187,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5027,7 +5231,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5145,10 +5349,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 @@ -5203,10 +5424,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 @@ -5241,10 +5479,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 @@ -5280,10 +5535,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 @@ -5399,10 +5671,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 @@ -5467,7 +5756,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5511,7 +5800,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5624,10 +5913,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 @@ -5682,10 +5988,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 @@ -5720,10 +6043,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 @@ -5759,10 +6099,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 @@ -5826,7 +6183,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LEX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5851,70 +6208,37 @@ done test -n "$LEX" || LEX=":" -if test "x$LEX" != "x:"; then - cat >conftest.l <<_ACEOF -%% -a { ECHO; } -b { REJECT; } -c { yymore (); } -d { yyless (1); } -e { yyless (input () != 0); } -f { unput (yytext[0]); } -. { BEGIN INITIAL; } -%% -#ifdef YYTEXT_POINTER -extern char *yytext; +if test -z "$LEXLIB" +then + { echo "$as_me:$LINENO: checking for yywrap in -lfl" >&5 +echo $ECHO_N "checking for yywrap in -lfl... $ECHO_C" >&6; } +if test "${ac_cv_lib_fl_yywrap+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lfl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" #endif +char yywrap (); int -main (void) +main () { - return ! yylex () + ! yywrap (); +return yywrap (); + ; + return 0; } _ACEOF -{ (ac_try="$LEX conftest.l" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$LEX conftest.l") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ echo "$as_me:$LINENO: checking lex output file root" >&5 -echo $ECHO_N "checking lex output file root... $ECHO_C" >&6; } -if test "${ac_cv_prog_lex_root+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -if test -f lex.yy.c; then - ac_cv_prog_lex_root=lex.yy -elif test -f lexyy.c; then - ac_cv_prog_lex_root=lexyy -else - { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 -echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} - { (exit 1); exit 1; }; } -fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 -echo "${ECHO_T}$ac_cv_prog_lex_root" >&6; } -LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root - -if test -z "${LEXLIB+set}"; then - { echo "$as_me:$LINENO: checking lex library" >&5 -echo $ECHO_N "checking lex library... $ECHO_C" >&6; } -if test "${ac_cv_lib_lex+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - ac_save_LIBS=$LIBS - ac_cv_lib_lex='none needed' - for ac_lib in '' -lfl -ll; do - LIBS="$ac_lib $ac_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -`cat $LEX_OUTPUT_ROOT.c` -_ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in @@ -5928,46 +6252,72 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_lex=$ac_lib + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_fl_yywrap=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - + ac_cv_lib_fl_yywrap=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - test "$ac_cv_lib_lex" != 'none needed' && break - done - LIBS=$ac_save_LIBS - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5 -echo "${ECHO_T}$ac_cv_lib_lex" >&6; } - test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex +LIBS=$ac_check_lib_save_LIBS fi - - -{ echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 -echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6; } -if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then +{ echo "$as_me:$LINENO: result: $ac_cv_lib_fl_yywrap" >&5 +echo "${ECHO_T}$ac_cv_lib_fl_yywrap" >&6; } +if test $ac_cv_lib_fl_yywrap = yes; then + LEXLIB="-lfl" +else + { echo "$as_me:$LINENO: checking for yywrap in -ll" >&5 +echo $ECHO_N "checking for yywrap in -ll... $ECHO_C" >&6; } +if test "${ac_cv_lib_l_yywrap+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - # POSIX says lex can declare yytext either as a pointer or an array; the -# default is implementation-dependent. Figure out which it is, since -# not all implementations provide the %pointer and %array declarations. -ac_cv_prog_lex_yytext_pointer=no -ac_save_LIBS=$LIBS -LIBS="$LEXLIB $ac_save_LIBS" + ac_check_lib_save_LIBS=$LIBS +LIBS="-ll $LIBS" cat >conftest.$ac_ext <<_ACEOF -#define YYTEXT_POINTER 1 -`cat $LEX_OUTPUT_ROOT.c` +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char yywrap (); +int +main () +{ +return yywrap (); + ; + return 0; +} _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" @@ -5982,22 +6332,147 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_prog_lex_yytext_pointer=yes + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_l_yywrap=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - + ac_cv_lib_l_yywrap=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_save_LIBS +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_l_yywrap" >&5 +echo "${ECHO_T}$ac_cv_lib_l_yywrap" >&6; } +if test $ac_cv_lib_l_yywrap = yes; then + LEXLIB="-ll" +fi + +fi + +fi + +if test "x$LEX" != "x:"; then + { echo "$as_me:$LINENO: checking lex output file root" >&5 +echo $ECHO_N "checking lex output file root... $ECHO_C" >&6; } +if test "${ac_cv_prog_lex_root+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # The minimal lex program is just a single line: %%. But some broken lexes +# (Solaris, I think it was) want two %% lines, so accommodate them. +cat >conftest.l <<_ACEOF +%% +%% +_ACEOF +{ (ac_try="$LEX conftest.l" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$LEX conftest.l") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +if test -f lex.yy.c; then + ac_cv_prog_lex_root=lex.yy +elif test -f lexyy.c; then + ac_cv_prog_lex_root=lexyy +else + { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 +echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} + { (exit 1); exit 1; }; } +fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 +echo "${ECHO_T}$ac_cv_prog_lex_root" >&6; } +rm -f conftest.l +LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root + +{ echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 +echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6; } +if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # POSIX says lex can declare yytext either as a pointer or an array; the +# default is implementation-dependent. Figure out which it is, since +# not all implementations provide the %pointer and %array declarations. +ac_cv_prog_lex_yytext_pointer=no +echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c +ac_save_LIBS=$LIBS +LIBS="$LIBS $LEXLIB" +cat >conftest.$ac_ext <<_ACEOF +`cat $LEX_OUTPUT_ROOT.c` +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_lex_yytext_pointer=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_save_LIBS +rm -f "${LEX_OUTPUT_ROOT}.c" fi { echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 @@ -6009,7 +6484,6 @@ _ACEOF fi -rm -f conftest.l $LEX_OUTPUT_ROOT.c fi @@ -6048,7 +6522,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_YACC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6195,7 +6669,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_CMP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6236,7 +6710,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_CP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6277,7 +6751,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_DATE="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6318,7 +6792,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_FIND="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6359,7 +6833,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GREP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6400,7 +6874,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_MKDIR="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6441,7 +6915,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_MV="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6481,7 +6955,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6521,7 +6995,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6578,7 +7052,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6619,7 +7093,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_SED="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6660,7 +7134,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_TAR="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6701,7 +7175,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_BINPWD="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6743,7 +7217,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GRAPHVIZ="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6799,7 +7273,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_DOT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6857,7 +7331,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GV="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6916,7 +7390,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_DOTTY="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6974,7 +7448,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7058,7 +7532,7 @@ # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -7121,7 +7595,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_BZIP2="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7162,7 +7636,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_DOXYGEN="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7203,7 +7677,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GROFF="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7244,7 +7718,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7285,7 +7759,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_POD2HTML="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7326,7 +7800,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_POD2MAN="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7367,7 +7841,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_RUNTEST="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7441,7 +7915,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_TCLSH="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7498,7 +7972,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ZIP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7539,7 +8013,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_OCAMLC="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7580,7 +8054,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_OCAMLOPT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7621,7 +8095,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_OCAMLDEP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7686,11 +8160,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then llvm_cv_link_use_r=yes else echo "$as_me: failed program was:" >&5 @@ -7699,7 +8189,7 @@ llvm_cv_link_use_r=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$oldcflags" ac_ext=c @@ -7742,10 +8232,10 @@ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; - const charset cs; + const charset x; /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; + char const *const *ccp; + char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; @@ -7754,11 +8244,11 @@ an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); + ccp = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; @@ -7785,7 +8275,7 @@ const int foo = 10; if (!foo) return 0; } - return !cs[0] && !zero.x; + return !x[0] && !zero.x; #endif ; @@ -7805,10 +8295,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 @@ -7873,10 +8380,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 @@ -7949,11 +8473,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_search_opendir=$ac_res else echo "$as_me: failed program was:" >&5 @@ -7962,7 +8502,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_opendir+set}" = set; then break @@ -8033,11 +8573,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_search_opendir=$ac_res else echo "$as_me: failed program was:" >&5 @@ -8046,7 +8602,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_opendir+set}" = set; then break @@ -8109,10 +8665,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -8148,10 +8721,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -9245,11 +9825,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 @@ -9258,7 +9854,7 @@ ac_cv_func_shl_load=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 @@ -9312,11 +9908,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 @@ -9325,7 +9937,7 @@ ac_cv_lib_dld_shl_load=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -9381,11 +9993,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 @@ -9394,7 +10022,7 @@ ac_cv_lib_dl_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -9439,11 +10067,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then cat >>confdefs.h <<\_ACEOF #define HAVE_LIBDL 1 @@ -9495,11 +10139,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 @@ -9508,7 +10168,7 @@ ac_cv_lib_svld_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -9564,11 +10224,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 @@ -9577,7 +10253,7 @@ ac_cv_lib_dld_dld_link=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -9654,11 +10330,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func__dyld_func_lookup=yes else echo "$as_me: failed program was:" >&5 @@ -9667,7 +10359,7 @@ ac_cv_func__dyld_func_lookup=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func__dyld_func_lookup" >&5 @@ -9689,7 +10381,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi @@ -9772,11 +10464,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -9785,7 +10493,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -9872,7 +10580,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -10140,10 +10865,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -10248,10 +10980,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_type_error_t=yes else echo "$as_me: failed program was:" >&5 @@ -10351,11 +11100,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -10364,7 +11129,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -10444,10 +11209,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -10483,10 +11265,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -10592,10 +11381,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -10631,10 +11437,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -10738,10 +11551,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -10777,10 +11607,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -10913,11 +11750,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -10926,7 +11779,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -11008,11 +11861,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -11021,7 +11890,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -11103,11 +11972,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -11116,7 +12001,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -11198,21 +12083,37 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -11294,11 +12195,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -11307,7 +12224,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -11807,7 +12724,7 @@ ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 11809 "configure"' > conftest.$ac_ext + echo '#line 12727 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -11931,11 +12848,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 @@ -11944,7 +12877,7 @@ lt_cv_cc_needs_belf=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -12039,10 +12972,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 @@ -12076,10 +13016,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else @@ -12144,10 +13091,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 @@ -12181,10 +13135,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else @@ -12225,7 +13186,7 @@ ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then - for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn + for ac_prog in g77 f77 xlf frt pgf77 cf77 fort77 fl32 af77 f90 xlf90 pgf90 pghpf epcf90 gfortran g95 f95 fort xlf95 ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 @@ -12243,7 +13204,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -12269,7 +13230,7 @@ fi if test -z "$F77"; then ac_ct_F77=$F77 - for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn + for ac_prog in g77 f77 xlf frt pgf77 cf77 fort77 fl32 af77 f90 xlf90 pgf90 pghpf epcf90 gfortran g95 f95 fort xlf95 ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -12287,7 +13248,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_F77="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -12394,10 +13355,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 @@ -12440,10 +13418,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_f77_g=yes else echo "$as_me: failed program was:" >&5 @@ -12898,7 +13893,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -12938,7 +13933,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -12994,7 +13989,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -13034,7 +14029,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -13090,7 +14085,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -13130,7 +14125,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -13447,11 +14442,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13449: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14445: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:13453: \$? = $ac_status" >&5 + echo "$as_me:14449: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -13715,11 +14710,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13717: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14713: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:13721: \$? = $ac_status" >&5 + echo "$as_me:14717: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -13819,11 +14814,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13821: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14817: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:13825: \$? = $ac_status" >&5 + echo "$as_me:14821: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -14299,11 +15294,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` @@ -14317,7 +15328,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -14358,11 +15369,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` @@ -14376,7 +15403,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -15624,11 +16651,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 @@ -15637,7 +16680,7 @@ ac_cv_lib_dl_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -15719,11 +16762,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 @@ -15732,7 +16791,7 @@ ac_cv_func_shl_load=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 @@ -15782,11 +16841,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 @@ -15795,7 +16870,7 @@ ac_cv_lib_dld_shl_load=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -15867,11 +16942,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 @@ -15880,7 +16971,7 @@ ac_cv_func_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 @@ -15930,11 +17021,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 @@ -15943,7 +17050,7 @@ ac_cv_lib_dl_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -15994,11 +17101,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 @@ -16007,7 +17130,7 @@ ac_cv_lib_svld_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -16058,11 +17181,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 @@ -16071,7 +17210,7 @@ ac_cv_lib_dld_dld_link=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -16127,7 +17266,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` @@ -17332,7 +18487,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -17374,11 +18529,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` @@ -17392,7 +18563,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -18563,11 +19734,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18565: $lt_compile\"" >&5) + (eval echo "\"\$as_me:19737: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:18569: \$? = $ac_status" >&5 + echo "$as_me:19741: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -18667,11 +19838,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18669: $lt_compile\"" >&5) + (eval echo "\"\$as_me:19841: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:18673: \$? = $ac_status" >&5 + echo "$as_me:19845: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -20237,11 +21408,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:20239: $lt_compile\"" >&5) + (eval echo "\"\$as_me:21411: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:20243: \$? = $ac_status" >&5 + echo "$as_me:21415: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -20341,11 +21512,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:20343: $lt_compile\"" >&5) + (eval echo "\"\$as_me:21515: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:20347: \$? = $ac_status" >&5 + echo "$as_me:21519: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -20811,11 +21982,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` @@ -20829,7 +22016,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -20860,11 +22047,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` @@ -20878,7 +22081,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -22544,11 +23747,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:22546: $lt_compile\"" >&5) + (eval echo "\"\$as_me:23750: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:22550: \$? = $ac_status" >&5 + echo "$as_me:23754: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -22812,11 +24015,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:22814: $lt_compile\"" >&5) + (eval echo "\"\$as_me:24018: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:22818: \$? = $ac_status" >&5 + echo "$as_me:24022: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -22916,11 +24119,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:22918: $lt_compile\"" >&5) + (eval echo "\"\$as_me:24122: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:22922: \$? = $ac_status" >&5 + echo "$as_me:24126: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -23396,11 +24599,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` @@ -23414,7 +24633,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -23455,11 +24674,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` @@ -23473,7 +24708,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -25613,7 +26848,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_LLVMGCC="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -25653,7 +26888,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_LLVMGXX="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -25781,11 +27016,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_elf_elf_begin=yes else echo "$as_me: failed program was:" >&5 @@ -25794,7 +27045,7 @@ ac_cv_lib_elf_elf_begin=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -25852,11 +27103,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_m_sin=yes else echo "$as_me: failed program was:" >&5 @@ -25865,7 +27132,7 @@ ac_cv_lib_m_sin=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -25918,11 +27185,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_imagehlp_main=yes else echo "$as_me: failed program was:" >&5 @@ -25931,7 +27214,7 @@ ac_cv_lib_imagehlp_main=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -25983,11 +27266,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_psapi_main=yes else echo "$as_me: failed program was:" >&5 @@ -25996,7 +27295,7 @@ ac_cv_lib_psapi_main=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -26061,11 +27360,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_search_lt_dlopen=$ac_res else echo "$as_me: failed program was:" >&5 @@ -26074,7 +27389,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_lt_dlopen+set}" = set; then break @@ -26154,11 +27469,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_search_dlopen=$ac_res else echo "$as_me: failed program was:" >&5 @@ -26167,7 +27498,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_dlopen+set}" = set; then break @@ -26245,11 +27576,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_search_mallinfo=$ac_res else echo "$as_me: failed program was:" >&5 @@ -26258,7 +27605,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_mallinfo+set}" = set; then break @@ -26329,11 +27676,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_pthread_pthread_mutex_init=yes else echo "$as_me: failed program was:" >&5 @@ -26342,7 +27705,7 @@ ac_cv_lib_pthread_pthread_mutex_init=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -26405,23 +27768,39 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_search_pthread_mutex_lock=$ac_res -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext - if test "${ac_cv_search_pthread_mutex_lock+set}" = set; then - break + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_pthread_mutex_lock=$ac_res +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_pthread_mutex_lock+set}" = set; then + break fi done if test "${ac_cv_search_pthread_mutex_lock+set}" = set; then @@ -26499,11 +27878,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_udis86_ud_init=yes else echo "$as_me: failed program was:" >&5 @@ -26512,7 +27907,7 @@ ac_cv_lib_udis86_ud_init=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -26589,10 +27984,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 @@ -26665,11 +28077,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_search_opendir=$ac_res else echo "$as_me: failed program was:" >&5 @@ -26678,7 +28106,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_opendir+set}" = set; then break @@ -26749,11 +28177,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_search_opendir=$ac_res else echo "$as_me: failed program was:" >&5 @@ -26762,7 +28206,7 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_opendir+set}" = set; then break @@ -26827,10 +28271,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_header_mmap_anon=yes else echo "$as_me: failed program was:" >&5 @@ -26873,48 +28334,38 @@ #include #if defined S_ISBLK && defined S_IFDIR -extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +# if S_ISBLK (S_IFDIR) +You lose. +# endif #endif #if defined S_ISBLK && defined S_IFCHR -extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +# if S_ISBLK (S_IFCHR) +You lose. +# endif #endif #if defined S_ISLNK && defined S_IFREG -extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +# if S_ISLNK (S_IFREG) +You lose. +# endif #endif #if defined S_ISSOCK && defined S_IFREG -extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +# if S_ISSOCK (S_IFREG) +You lose. +# endif #endif _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_header_stat_broken=no +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "You lose" >/dev/null 2>&1; then + ac_cv_header_stat_broken=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_stat_broken=yes + ac_cv_header_stat_broken=no fi +rm -f conftest* -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 echo "${ECHO_T}$ac_cv_header_stat_broken" >&6; } @@ -26963,10 +28414,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 @@ -27143,10 +28611,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_header_sys_wait_h=yes else echo "$as_me: failed program was:" >&5 @@ -27204,10 +28689,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_header_time=yes else echo "$as_me: failed program was:" >&5 @@ -27273,10 +28775,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -27312,10 +28831,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -27423,10 +28949,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -27462,10 +29005,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -27568,10 +29118,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -27607,10 +29174,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -27716,10 +29290,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -27755,10 +29346,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -27863,10 +29461,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -27902,10 +29517,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -28009,10 +29631,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -28048,10 +29687,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -28240,10 +29886,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_type_pid_t=yes else echo "$as_me: failed program was:" >&5 @@ -28303,10 +29966,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 @@ -28364,10 +30044,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_type_signal=int else echo "$as_me: failed program was:" >&5 @@ -28403,9 +30100,7 @@ int main () { -struct tm tm; - int *p = &tm.tm_sec; - return !p; +struct tm *tp; tp->tm_sec; ; return 0; } @@ -28423,10 +30118,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_struct_tm=time.h else echo "$as_me: failed program was:" >&5 @@ -28484,10 +30196,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_type_int64_t=yes else echo "$as_me: failed program was:" >&5 @@ -28550,10 +30279,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_type_uint64_t=yes else echo "$as_me: failed program was:" >&5 @@ -28611,10 +30357,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_type_u_int64_t=yes else echo "$as_me: failed program was:" >&5 @@ -28717,11 +30480,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -28730,7 +30509,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -28814,11 +30593,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -28827,7 +30622,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -28912,11 +30707,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -28925,7 +30736,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -29008,11 +30819,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -29021,7 +30848,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -29108,11 +30935,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -29121,7 +30964,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -29205,11 +31048,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -29218,7 +31077,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -29302,11 +31161,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -29315,7 +31190,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -29459,11 +31334,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_working_alloca_h=yes else echo "$as_me: failed program was:" >&5 @@ -29472,7 +31363,7 @@ ac_cv_working_alloca_h=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 @@ -29503,7 +31394,7 @@ # include # define alloca _alloca # else -# ifdef HAVE_ALLOCA_H +# if HAVE_ALLOCA_H # include # else # ifdef _AIX @@ -29539,11 +31430,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_alloca_works=yes else echo "$as_me: failed program was:" >&5 @@ -29552,7 +31459,7 @@ ac_cv_func_alloca_works=no fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 @@ -29672,11 +31579,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -29685,7 +31608,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -29822,10 +31745,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_rand48=yes else echo "$as_me: failed program was:" >&5 @@ -29893,10 +31833,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_namespaces=yes else echo "$as_me: failed program was:" >&5 @@ -29967,10 +31924,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_std_ext_hash_map=yes else echo "$as_me: failed program was:" >&5 @@ -30047,10 +32021,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_gnu_ext_hash_map=yes else echo "$as_me: failed program was:" >&5 @@ -30124,10 +32115,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_global_hash_map=yes else echo "$as_me: failed program was:" >&5 @@ -30204,10 +32212,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_std_ext_hash_set=yes else echo "$as_me: failed program was:" >&5 @@ -30284,10 +32309,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_gnu_ext_hash_set=yes else echo "$as_me: failed program was:" >&5 @@ -30361,10 +32403,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_global_hash_set=yes else echo "$as_me: failed program was:" >&5 @@ -30441,10 +32500,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_std_iterator=yes else echo "$as_me: failed program was:" >&5 @@ -30522,10 +32598,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_bi_iterator=yes else echo "$as_me: failed program was:" >&5 @@ -30603,10 +32696,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_cxx_have_fwd_iterator=yes else echo "$as_me: failed program was:" >&5 @@ -30681,10 +32791,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_isnan_in_math_h=yes else echo "$as_me: failed program was:" >&5 @@ -30752,10 +32879,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_isnan_in_cmath=yes else echo "$as_me: failed program was:" >&5 @@ -30822,10 +32966,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_std_isnan_in_cmath=yes else echo "$as_me: failed program was:" >&5 @@ -30893,10 +33054,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_isinf_in_math_h=yes else echo "$as_me: failed program was:" >&5 @@ -30963,10 +33141,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_isinf_in_cmath=yes else echo "$as_me: failed program was:" >&5 @@ -31033,10 +33228,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_std_isinf_in_cmath=yes else echo "$as_me: failed program was:" >&5 @@ -31103,10 +33315,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_finite_in_ieeefp_h=yes else echo "$as_me: failed program was:" >&5 @@ -31177,10 +33406,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 @@ -31216,10 +33462,17 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -31350,11 +33603,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -31363,7 +33632,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -31420,21 +33689,21 @@ #include #include -#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H +#if !STDC_HEADERS && !HAVE_STDLIB_H char *malloc (); #endif /* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE +#if !HAVE_GETPAGESIZE /* Assume that all systems that can run configure have sys/param.h. */ -# ifndef HAVE_SYS_PARAM_H +# if !HAVE_SYS_PARAM_H # define HAVE_SYS_PARAM_H 1 # endif # ifdef _SC_PAGESIZE # define getpagesize() sysconf(_SC_PAGESIZE) # else /* no _SC_PAGESIZE */ -# ifdef HAVE_SYS_PARAM_H +# if HAVE_SYS_PARAM_H # include # ifdef EXEC_PAGESIZE # define getpagesize() EXEC_PAGESIZE @@ -31757,11 +34026,27 @@ rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 @@ -31770,7 +34055,7 @@ eval "$as_ac_var=no" fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -32177,8 +34462,7 @@ ## M4sh Initialization. ## ## --------------------- ## -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh +# Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: @@ -32187,13 +34471,10 @@ alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi - - +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh # PATH needs CR @@ -32417,28 +34698,19 @@ as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' +# Find out whether ``test -x'' works. Don't use a zero-byte file, as +# systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + as_executable_p="test -x" else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' + as_executable_p=: fi -as_executable_p=$as_test_x +rm -f conf$$.file # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -32453,8 +34725,8 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by llvm $as_me 2.2svn, which was -generated by GNU Autoconf 2.61. Invocation command line was +This file was extended by llvm $as_me 2.3svn, which was +generated by GNU Autoconf 2.60. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -32483,7 +34755,7 @@ Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit + -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions @@ -32506,8 +34778,8 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -llvm config.status 2.2svn -configured by $0, generated by GNU Autoconf 2.61, +llvm config.status 2.3svn +configured by $0, generated by GNU Autoconf 2.60, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2006 Free Software Foundation, Inc. @@ -32792,8 +35064,8 @@ CXXFLAGS!$CXXFLAGS$ac_delim ac_ct_CXX!$ac_ct_CXX$ac_delim LEX!$LEX$ac_delim -LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim LEXLIB!$LEXLIB$ac_delim +LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim FLEX!$FLEX$ac_delim YACC!$YACC$ac_delim YFLAGS!$YFLAGS$ac_delim @@ -33426,12 +35698,7 @@ case $ac_arg in *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac - ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" - - # Pass --silent - if test "$silent" = yes; then - ac_sub_configure_args="--silent $ac_sub_configure_args" - fi + ac_sub_configure_args="$ac_arg $ac_sub_configure_args" ac_popdir=`pwd` for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue From tonic at nondot.org Wed Jan 16 23:58:00 2008 From: tonic at nondot.org (Tanya Lattner) Date: Thu, 17 Jan 2008 05:58:00 -0000 Subject: [llvm-commits] [llvm] r46120 - /llvm/trunk/LICENSE.TXT Message-ID: <200801170558.m0H5w0xW010276@zion.cs.uiuc.edu> Author: tbrethou Date: Wed Jan 16 23:57:59 2008 New Revision: 46120 URL: http://llvm.org/viewvc/llvm-project?rev=46120&view=rev Log: Update license for current year. Modified: llvm/trunk/LICENSE.TXT Modified: llvm/trunk/LICENSE.TXT URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/LICENSE.TXT?rev=46120&r1=46119&r2=46120&view=diff ============================================================================== --- llvm/trunk/LICENSE.TXT (original) +++ llvm/trunk/LICENSE.TXT Wed Jan 16 23:57:59 2008 @@ -4,7 +4,7 @@ University of Illinois/NCSA Open Source License -Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign. +Copyright (c) 2003-2008 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: From tonic at nondot.org Thu Jan 17 00:01:52 2008 From: tonic at nondot.org (Tanya Lattner) Date: Thu, 17 Jan 2008 06:01:52 -0000 Subject: [llvm-commits] [llvm] r46121 - in /llvm/branches/release_22: LICENSE.TXT autoconf/configure.ac configure Message-ID: <200801170601.m0H61rAI010991@zion.cs.uiuc.edu> Author: tbrethou Date: Thu Jan 17 00:01:52 2008 New Revision: 46121 URL: http://llvm.org/viewvc/llvm-project?rev=46121&view=rev Log: Update for current year. Modified: llvm/branches/release_22/LICENSE.TXT llvm/branches/release_22/autoconf/configure.ac llvm/branches/release_22/configure Modified: llvm/branches/release_22/LICENSE.TXT URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_22/LICENSE.TXT?rev=46121&r1=46120&r2=46121&view=diff ============================================================================== --- llvm/branches/release_22/LICENSE.TXT (original) +++ llvm/branches/release_22/LICENSE.TXT Thu Jan 17 00:01:52 2008 @@ -4,7 +4,7 @@ University of Illinois/NCSA Open Source License -Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign. +Copyright (c) 2003-2008 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: Modified: llvm/branches/release_22/autoconf/configure.ac URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_22/autoconf/configure.ac?rev=46121&r1=46120&r2=46121&view=diff ============================================================================== --- llvm/branches/release_22/autoconf/configure.ac (original) +++ llvm/branches/release_22/autoconf/configure.ac Thu Jan 17 00:01:52 2008 @@ -35,8 +35,8 @@ dnl Provide a copyright substitution and ensure the copyright notice is included dnl in the output of --version option of the generated configure script. -AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign."]) -AC_COPYRIGHT([Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign.]) +AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2008 University of Illinois at Urbana-Champaign."]) +AC_COPYRIGHT([Copyright (c) 2003-2008 University of Illinois at Urbana-Champaign.]) dnl Indicate that we require autoconf 2.59 or later. Ths is needed because we dnl use some autoconf macros only available in 2.59. Modified: llvm/branches/release_22/configure URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_22/configure?rev=46121&r1=46120&r2=46121&view=diff ============================================================================== --- llvm/branches/release_22/configure (original) +++ llvm/branches/release_22/configure Thu Jan 17 00:01:52 2008 @@ -9,7 +9,7 @@ # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # -# Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign. +# Copyright (c) 2003-2008 University of Illinois at Urbana-Champaign. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## @@ -1667,7 +1667,7 @@ This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. -Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign. +Copyright (c) 2003-2008 University of Illinois at Urbana-Champaign. _ACEOF exit fi @@ -2029,7 +2029,7 @@ -LLVM_COPYRIGHT="Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign." +LLVM_COPYRIGHT="Copyright (c) 2003-2008 University of Illinois at Urbana-Champaign." From tonic at nondot.org Thu Jan 17 00:05:34 2008 From: tonic at nondot.org (Tanya Lattner) Date: Thu, 17 Jan 2008 06:05:34 -0000 Subject: [llvm-commits] [test-suite] r46122 - in /test-suite/branches/release_22: autoconf/configure.ac configure Message-ID: <200801170605.m0H65YJs011489@zion.cs.uiuc.edu> Author: tbrethou Date: Thu Jan 17 00:05:34 2008 New Revision: 46122 URL: http://llvm.org/viewvc/llvm-project?rev=46122&view=rev Log: Set version to 2.2 Modified: test-suite/branches/release_22/autoconf/configure.ac test-suite/branches/release_22/configure Modified: test-suite/branches/release_22/autoconf/configure.ac URL: http://llvm.org/viewvc/llvm-project/test-suite/branches/release_22/autoconf/configure.ac?rev=46122&r1=46121&r2=46122&view=diff ============================================================================== --- test-suite/branches/release_22/autoconf/configure.ac (original) +++ test-suite/branches/release_22/autoconf/configure.ac Thu Jan 17 00:05:34 2008 @@ -1,5 +1,5 @@ dnl Initialize autoconf -AC_INIT([[LLVM-TEST]],[[2.2svn]],[llvmbugs at cs.uiuc.edu]) +AC_INIT([[LLVM-TEST]],[[2.2]],[llvmbugs at cs.uiuc.edu]) dnl Place all of the extra autoconf files into the config subdirectory AC_CONFIG_AUX_DIR([autoconf]) Modified: test-suite/branches/release_22/configure URL: http://llvm.org/viewvc/llvm-project/test-suite/branches/release_22/configure?rev=46122&r1=46121&r2=46122&view=diff ============================================================================== --- test-suite/branches/release_22/configure (original) +++ test-suite/branches/release_22/configure Thu Jan 17 00:05:34 2008 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.60 for LLVM-TEST 2.2svn. +# Generated by GNU Autoconf 2.60 for LLVM-TEST 2.2. # # Report bugs to . # @@ -713,8 +713,8 @@ # Identity of this package. PACKAGE_NAME='LLVM-TEST' PACKAGE_TARNAME='-llvm-test-' -PACKAGE_VERSION='2.2svn' -PACKAGE_STRING='LLVM-TEST 2.2svn' +PACKAGE_VERSION='2.2' +PACKAGE_STRING='LLVM-TEST 2.2' PACKAGE_BUGREPORT='llvmbugs at cs.uiuc.edu' ac_unique_file="SingleSource/Benchmarks/Makefile" @@ -1389,7 +1389,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures LLVM-TEST 2.2svn to adapt to many kinds of systems. +\`configure' configures LLVM-TEST 2.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1454,7 +1454,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of LLVM-TEST 2.2svn:";; + short | recursive ) echo "Configuration of LLVM-TEST 2.2:";; esac cat <<\_ACEOF @@ -1463,12 +1463,12 @@ --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-llc_diffs Enable LLC Diffs when testing (default is YES) --enable-shared[=PKGS] build shared libraries - [default=enable_shared_default] + [default=yes] --enable-static[=PKGS] build static libraries - [default=enable_static_default] + [default=yes] --enable-fast-install[=PKGS] optimize for fast installation - [default=enable_Fast_install_default] + [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) Optional Packages: @@ -1576,7 +1576,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -LLVM-TEST configure 2.2svn +LLVM-TEST configure 2.2 generated by GNU Autoconf 2.60 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1590,7 +1590,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by LLVM-TEST $as_me 2.2svn, which was +It was created by LLVM-TEST $as_me 2.2, which was generated by GNU Autoconf 2.60. Invocation command line was $ $0 $@ @@ -21254,7 +21254,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by LLVM-TEST $as_me 2.2svn, which was +This file was extended by LLVM-TEST $as_me 2.2, which was generated by GNU Autoconf 2.60. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -21301,7 +21301,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -LLVM-TEST config.status 2.2svn +LLVM-TEST config.status 2.2 configured by $0, generated by GNU Autoconf 2.60, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" From tonic at nondot.org Thu Jan 17 00:08:50 2008 From: tonic at nondot.org (Tanya Lattner) Date: Thu, 17 Jan 2008 06:08:50 -0000 Subject: [llvm-commits] [test-suite] r46123 - in /test-suite/trunk: autoconf/configure.ac configure Message-ID: <200801170608.m0H68o1e011856@zion.cs.uiuc.edu> Author: tbrethou Date: Thu Jan 17 00:08:49 2008 New Revision: 46123 URL: http://llvm.org/viewvc/llvm-project?rev=46123&view=rev Log: Update version to 2.3svn Modified: test-suite/trunk/autoconf/configure.ac test-suite/trunk/configure Modified: test-suite/trunk/autoconf/configure.ac URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/autoconf/configure.ac?rev=46123&r1=46122&r2=46123&view=diff ============================================================================== --- test-suite/trunk/autoconf/configure.ac (original) +++ test-suite/trunk/autoconf/configure.ac Thu Jan 17 00:08:49 2008 @@ -1,5 +1,5 @@ dnl Initialize autoconf -AC_INIT([[LLVM-TEST]],[[2.2svn]],[llvmbugs at cs.uiuc.edu]) +AC_INIT([[LLVM-TEST]],[[2.3svn]],[llvmbugs at cs.uiuc.edu]) dnl Place all of the extra autoconf files into the config subdirectory AC_CONFIG_AUX_DIR([autoconf]) Modified: test-suite/trunk/configure URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/configure?rev=46123&r1=46122&r2=46123&view=diff ============================================================================== --- test-suite/trunk/configure (original) +++ test-suite/trunk/configure Thu Jan 17 00:08:49 2008 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.60 for LLVM-TEST 2.2svn. +# Generated by GNU Autoconf 2.60 for LLVM-TEST 2.3svn. # # Report bugs to . # @@ -713,8 +713,8 @@ # Identity of this package. PACKAGE_NAME='LLVM-TEST' PACKAGE_TARNAME='-llvm-test-' -PACKAGE_VERSION='2.2svn' -PACKAGE_STRING='LLVM-TEST 2.2svn' +PACKAGE_VERSION='2.3svn' +PACKAGE_STRING='LLVM-TEST 2.3svn' PACKAGE_BUGREPORT='llvmbugs at cs.uiuc.edu' ac_unique_file="SingleSource/Benchmarks/Makefile" @@ -1389,7 +1389,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures LLVM-TEST 2.2svn to adapt to many kinds of systems. +\`configure' configures LLVM-TEST 2.3svn to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1454,7 +1454,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of LLVM-TEST 2.2svn:";; + short | recursive ) echo "Configuration of LLVM-TEST 2.3svn:";; esac cat <<\_ACEOF @@ -1463,12 +1463,12 @@ --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-llc_diffs Enable LLC Diffs when testing (default is YES) --enable-shared[=PKGS] build shared libraries - [default=enable_shared_default] + [default=yes] --enable-static[=PKGS] build static libraries - [default=enable_static_default] + [default=yes] --enable-fast-install[=PKGS] optimize for fast installation - [default=enable_Fast_install_default] + [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) Optional Packages: @@ -1576,7 +1576,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -LLVM-TEST configure 2.2svn +LLVM-TEST configure 2.3svn generated by GNU Autoconf 2.60 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1590,7 +1590,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by LLVM-TEST $as_me 2.2svn, which was +It was created by LLVM-TEST $as_me 2.3svn, which was generated by GNU Autoconf 2.60. Invocation command line was $ $0 $@ @@ -21254,7 +21254,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by LLVM-TEST $as_me 2.2svn, which was +This file was extended by LLVM-TEST $as_me 2.3svn, which was generated by GNU Autoconf 2.60. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -21301,7 +21301,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -LLVM-TEST config.status 2.2svn +LLVM-TEST config.status 2.3svn configured by $0, generated by GNU Autoconf 2.60, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" From sabre at nondot.org Thu Jan 17 00:54:11 2008 From: sabre at nondot.org (Chris Lattner) Date: Thu, 17 Jan 2008 06:54:11 -0000 Subject: [llvm-commits] [llvm] r46124 - /llvm/trunk/test/CodeGen/Generic/v-split.ll Message-ID: <200801170654.m0H6sBjj015053@zion.cs.uiuc.edu> Author: lattner Date: Thu Jan 17 00:54:09 2008 New Revision: 46124 URL: http://llvm.org/viewvc/llvm-project?rev=46124&view=rev Log: add testcase that has been sitting in my tree for awhile. Added: llvm/trunk/test/CodeGen/Generic/v-split.ll Added: llvm/trunk/test/CodeGen/Generic/v-split.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/v-split.ll?rev=46124&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/Generic/v-split.ll (added) +++ llvm/trunk/test/CodeGen/Generic/v-split.ll Thu Jan 17 00:54:09 2008 @@ -0,0 +1,11 @@ +; RUN: llvm-as < %s | llc +%f8 = type <8 x float> + +define void @test_f8(%f8 *%P, %f8* %Q, %f8 *%S) { + %p = load %f8* %P + %q = load %f8* %Q + %R = add %f8 %p, %q + store %f8 %R, %f8 *%S + ret void +} + From sabre at nondot.org Thu Jan 17 01:00:52 2008 From: sabre at nondot.org (Chris Lattner) Date: Thu, 17 Jan 2008 07:00:52 -0000 Subject: [llvm-commits] [llvm] r46125 - in /llvm/trunk: include/llvm/CodeGen/ lib/CodeGen/SelectionDAG/ lib/Target/IA64/ lib/Target/PowerPC/ lib/Target/X86/ Message-ID: <200801170700.m0H70r1E015506@zion.cs.uiuc.edu> Author: lattner Date: Thu Jan 17 01:00:52 2008 New Revision: 46125 URL: http://llvm.org/viewvc/llvm-project?rev=46125&view=rev Log: * Introduce a new SelectionDAG::getIntPtrConstant method and switch various codegen pieces and the X86 backend over to using it. * Add some comments to SelectionDAGNodes.h * Introduce a second argument to FP_ROUND, which indicates whether the FP_ROUND changes the value of its input. If not it is safe to xform things like fp_extend(fp_round(x)) -> x. Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAG.h llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypesExpand.cpp llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypesPromote.cpp llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypesSplit.cpp llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp llvm/trunk/lib/Target/IA64/IA64ISelLowering.cpp llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAG.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/SelectionDAG.h?rev=46125&r1=46124&r2=46125&view=diff ============================================================================== --- llvm/trunk/include/llvm/CodeGen/SelectionDAG.h (original) +++ llvm/trunk/include/llvm/CodeGen/SelectionDAG.h Thu Jan 17 01:00:52 2008 @@ -177,6 +177,7 @@ // SDOperand getString(const std::string &Val); SDOperand getConstant(uint64_t Val, MVT::ValueType VT, bool isTarget = false); + SDOperand getIntPtrConstant(uint64_t Val, bool isTarget = false); SDOperand getTargetConstant(uint64_t Val, MVT::ValueType VT) { return getConstant(Val, VT, true); } Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h?rev=46125&r1=46124&r2=46125&view=diff ============================================================================== --- llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h (original) +++ llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h Thu Jan 17 01:00:52 2008 @@ -385,15 +385,24 @@ // operand, a ValueType node. SIGN_EXTEND_INREG, - // FP_TO_[US]INT - Convert a floating point value to a signed or unsigned - // integer. + /// FP_TO_[US]INT - Convert a floating point value to a signed or unsigned + /// integer. FP_TO_SINT, FP_TO_UINT, - // FP_ROUND - Perform a rounding operation from the current - // precision down to the specified precision (currently always 64->32). + /// X = FP_ROUND(Y, TRUNC) - Rounding 'Y' from a larger floating point type + /// down to the precision of the destination VT. TRUNC is a flag, which is + /// always an integer that is zero or one. If TRUNC is 0, this is a + /// normal rounding, if it is 1, this FP_ROUND is known to not change the + /// value of Y. + /// + /// The TRUNC = 1 case is used in cases where we know that the value will + /// not be modified by the node, because Y is not using any of the extra + /// precision of source type. This allows certain transformations like + /// FP_EXTEND(FP_ROUND(X,1)) -> X which are not safe for + /// FP_EXTEND(FP_ROUND(X,0)) because the extra bits aren't removed. FP_ROUND, - + // FLT_ROUNDS - Returns current rounding mode: // -1 Undefined // 0 Round to 0 @@ -402,14 +411,14 @@ // 3 Round to -inf FLT_ROUNDS, - // FP_ROUND_INREG - This operator takes a floating point register, and - // rounds it to a floating point value. It then promotes it and returns it - // in a register of the same size. This operation effectively just discards - // excess precision. The type to round down to is specified by the 1th - // operation, a VTSDNode (currently always 64->32->64). + /// X = FP_ROUND_INREG(Y, VT) - This operator takes an FP register, and + /// rounds it to a floating point value. It then promotes it and returns it + /// in a register of the same size. This operation effectively just + /// discards excess precision. The type to round down to is specified by + /// the VT operand, a VTSDNode. FP_ROUND_INREG, - // FP_EXTEND - Extend a smaller FP type into a larger FP type. + /// X = FP_EXTEND(Y) - Extend a smaller FP type into a larger FP type. FP_EXTEND, // BIT_CONVERT - Theis operator converts between integer and FP values, as Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=46125&r1=46124&r2=46125&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Thu Jan 17 01:00:52 2008 @@ -135,6 +135,7 @@ SDOperand To[] = { Res0, Res1 }; return CombineTo(N, To, 2, AddTo); } + private: /// SimplifyDemandedBits - Check the specified integer node value to see if @@ -460,10 +461,13 @@ GetNegatedExpression(Op.getOperand(1), DAG, Depth+1)); case ISD::FP_EXTEND: - case ISD::FP_ROUND: case ISD::FSIN: return DAG.getNode(Op.getOpcode(), Op.getValueType(), GetNegatedExpression(Op.getOperand(0), DAG, Depth+1)); + case ISD::FP_ROUND: + return DAG.getNode(ISD::FP_ROUND, Op.getValueType(), + GetNegatedExpression(Op.getOperand(0), DAG, Depth+1), + Op.getOperand(1)); } } @@ -3632,12 +3636,13 @@ SDOperand DAGCombiner::visitFP_ROUND(SDNode *N) { SDOperand N0 = N->getOperand(0); + SDOperand N1 = N->getOperand(1); ConstantFPSDNode *N0CFP = dyn_cast(N0); MVT::ValueType VT = N->getValueType(0); // fold (fp_round c1fp) -> c1fp if (N0CFP && N0.getValueType() != MVT::ppcf128) - return DAG.getNode(ISD::FP_ROUND, VT, N0); + return DAG.getNode(ISD::FP_ROUND, VT, N0, N1); // fold (fp_round (fp_extend x)) -> x if (N0.getOpcode() == ISD::FP_EXTEND && VT == N0.getOperand(0).getValueType()) @@ -3645,7 +3650,7 @@ // fold (fp_round (copysign X, Y)) -> (copysign (fp_round X), Y) if (N0.getOpcode() == ISD::FCOPYSIGN && N0.Val->hasOneUse()) { - SDOperand Tmp = DAG.getNode(ISD::FP_ROUND, VT, N0.getOperand(0)); + SDOperand Tmp = DAG.getNode(ISD::FP_ROUND, VT, N0.getOperand(0), N1); AddToWorkList(Tmp.Val); return DAG.getNode(ISD::FCOPYSIGN, VT, Tmp, N0.getOperand(1)); } @@ -3675,12 +3680,22 @@ // If this is fp_round(fpextend), don't fold it, allow ourselves to be folded. if (N->hasOneUse() && (*N->use_begin())->getOpcode() == ISD::FP_ROUND) return SDOperand(); - + // fold (fp_extend c1fp) -> c1fp if (N0CFP && VT != MVT::ppcf128) return DAG.getNode(ISD::FP_EXTEND, VT, N0); - - // fold (fpext (load x)) -> (fpext (fpround (extload x))) + + // Turn fp_extend(fp_round(X, 1)) -> x since the fp_round doesn't affect the + // value of X. + if (N0.getOpcode() == ISD::FP_ROUND && N0.Val->getConstantOperandVal(1) == 1){ + SDOperand In = N0.getOperand(0); + if (In.getValueType() == VT) return In; + if (VT < In.getValueType()) + return DAG.getNode(ISD::FP_ROUND, VT, In, N0.getOperand(1)); + return DAG.getNode(ISD::FP_EXTEND, VT, In); + } + + // fold (fpext (load x)) -> (fpext (fptrunc (extload x))) if (ISD::isNON_EXTLoad(N0.Val) && N0.hasOneUse() && (!AfterLegalize||TLI.isLoadXLegal(ISD::EXTLOAD, N0.getValueType()))) { LoadSDNode *LN0 = cast(N0); @@ -3691,7 +3706,8 @@ LN0->isVolatile(), LN0->getAlignment()); CombineTo(N, ExtLoad); - CombineTo(N0.Val, DAG.getNode(ISD::FP_ROUND, N0.getValueType(), ExtLoad), + CombineTo(N0.Val, DAG.getNode(ISD::FP_ROUND, N0.getValueType(), ExtLoad, + DAG.getIntPtrConstant(1)), ExtLoad.getValue(1)); return SDOperand(N, 0); // Return N so it doesn't get rechecked! } @@ -4435,13 +4451,11 @@ // Otherwise, use InIdx + VecSize unsigned Idx = cast(Extract.getOperand(1))->getValue(); - BuildVecIndices.push_back(DAG.getConstant(Idx+NumInScalars, - TLI.getPointerTy())); + BuildVecIndices.push_back(DAG.getIntPtrConstant(Idx+NumInScalars)); } // Add count and size info. - MVT::ValueType BuildVecVT = - MVT::getVectorType(TLI.getPointerTy(), NumElts); + MVT::ValueType BuildVecVT = MVT::getVectorType(TLI.getPointerTy(), NumElts); // Return the new VECTOR_SHUFFLE node. SDOperand Ops[5]; Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=46125&r1=46124&r2=46125&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Thu Jan 17 01:00:52 2008 @@ -220,10 +220,6 @@ SDOperand ExpandEXTRACT_SUBVECTOR(SDOperand Op); SDOperand ExpandEXTRACT_VECTOR_ELT(SDOperand Op); - - SDOperand getIntPtrConstant(uint64_t Val) { - return DAG.getConstant(Val, TLI.getPointerTy()); - } }; } @@ -2123,7 +2119,7 @@ Lo = DAG.getStore(Tmp1, Lo, Tmp2, ST->getSrcValue(), SVOffset, isVolatile, Alignment); Tmp2 = DAG.getNode(ISD::ADD, Tmp2.getValueType(), Tmp2, - getIntPtrConstant(4)); + DAG.getIntPtrConstant(4)); Hi = DAG.getStore(Tmp1, Hi, Tmp2, ST->getSrcValue(), SVOffset+4, isVolatile, MinAlign(Alignment, 4U)); @@ -2186,8 +2182,9 @@ if (MVT::isVector(ST->getValue().getValueType())) { SDNode *InVal = ST->getValue().Val; int InIx = ST->getValue().ResNo; - unsigned NumElems = MVT::getVectorNumElements(InVal->getValueType(InIx)); - MVT::ValueType EVT = MVT::getVectorElementType(InVal->getValueType(InIx)); + MVT::ValueType InVT = InVal->getValueType(InIx); + unsigned NumElems = MVT::getVectorNumElements(InVT); + MVT::ValueType EVT = MVT::getVectorElementType(InVT); // Figure out if there is a simple type corresponding to this Vector // type. If so, convert to the vector type. @@ -2231,7 +2228,7 @@ } Tmp2 = DAG.getNode(ISD::ADD, Tmp2.getValueType(), Tmp2, - getIntPtrConstant(IncrementSize)); + DAG.getIntPtrConstant(IncrementSize)); assert(isTypeLegal(Tmp2.getValueType()) && "Pointers must be legal!"); SVOffset += IncrementSize; @@ -2429,7 +2426,11 @@ Tmp3 = DAG.getNode(ExtOp, NVT, Tmp3); // Perform the larger operation, then round down. Result = DAG.getNode(ISD::SELECT, NVT, Tmp1, Tmp2,Tmp3); - Result = DAG.getNode(TruncOp, Node->getValueType(0), Result); + if (TruncOp != ISD::FP_ROUND) + Result = DAG.getNode(TruncOp, Node->getValueType(0), Result); + else + Result = DAG.getNode(TruncOp, Node->getValueType(0), Result, + DAG.getIntPtrConstant(0)); break; } } @@ -3496,13 +3497,13 @@ MVT::ValueType OVT = Node->getOperand(0).getValueType(); // Convert ppcf128 to i32 if (OVT == MVT::ppcf128 && VT == MVT::i32) { - if (Node->getOpcode()==ISD::FP_TO_SINT) - Result = DAG.getNode(ISD::FP_TO_SINT, VT, - DAG.getNode(ISD::FP_ROUND, MVT::f64, - (DAG.getNode(ISD::FP_ROUND_INREG, - MVT::ppcf128, Node->getOperand(0), - DAG.getValueType(MVT::f64))))); - else { + if (Node->getOpcode() == ISD::FP_TO_SINT) { + Result = DAG.getNode(ISD::FP_ROUND_INREG, MVT::ppcf128, + Node->getOperand(0), DAG.getValueType(MVT::f64)); + Result = DAG.getNode(ISD::FP_ROUND, MVT::f64, Result, + DAG.getIntPtrConstant(1)); + Result = DAG.getNode(ISD::FP_TO_SINT, VT, Result); + } else { const uint64_t TwoE31[] = {0x41e0000000000000LL, 0}; APFloat apf = APFloat(APInt(128, 2, TwoE31)); Tmp2 = DAG.getConstantFP(apf, OVT); @@ -3573,14 +3574,13 @@ break; case ISD::FP_EXTEND: { - MVT::ValueType DstVT = Op.getValueType(); - MVT::ValueType SrcVT = Op.getOperand(0).getValueType(); - if (TLI.getConvertAction(SrcVT, DstVT) == TargetLowering::Expand) { - // The only other way we can lower this is to turn it into a STORE, - // LOAD pair, targetting a temporary location (a stack slot). - Result = EmitStackConvert(Node->getOperand(0), SrcVT, DstVT); - break; - } + MVT::ValueType DstVT = Op.getValueType(); + MVT::ValueType SrcVT = Op.getOperand(0).getValueType(); + if (TLI.getConvertAction(SrcVT, DstVT) == TargetLowering::Expand) { + // The only other way we can lower this is to turn it into a STORE, + // LOAD pair, targetting a temporary location (a stack slot). + Result = EmitStackConvert(Node->getOperand(0), SrcVT, DstVT); + break; } switch (getTypeAction(Node->getOperand(0).getValueType())) { case Expand: assert(0 && "Shouldn't need to expand other operators here!"); @@ -3594,35 +3594,37 @@ break; } break; + } case ISD::FP_ROUND: { - MVT::ValueType DstVT = Op.getValueType(); - MVT::ValueType SrcVT = Op.getOperand(0).getValueType(); - if (TLI.getConvertAction(SrcVT, DstVT) == TargetLowering::Expand) { - if (SrcVT == MVT::ppcf128) { - SDOperand Lo, Hi; - ExpandOp(Node->getOperand(0), Lo, Hi); - Result = DAG.getNode(ISD::FP_ROUND, DstVT, Hi); - break; - } else { - // The only other way we can lower this is to turn it into a STORE, - // LOAD pair, targetting a temporary location (a stack slot). - Result = EmitStackConvert(Node->getOperand(0), DstVT, DstVT); - break; - } + MVT::ValueType DstVT = Op.getValueType(); + MVT::ValueType SrcVT = Op.getOperand(0).getValueType(); + if (TLI.getConvertAction(SrcVT, DstVT) == TargetLowering::Expand) { + if (SrcVT == MVT::ppcf128) { + SDOperand Lo, Hi; + ExpandOp(Node->getOperand(0), Lo, Hi); + // Round it the rest of the way (e.g. to f32) if needed. + Result = DAG.getNode(ISD::FP_ROUND, DstVT, Hi, Op.getOperand(1)); + break; } + // The only other way we can lower this is to turn it into a STORE, + // LOAD pair, targetting a temporary location (a stack slot). + Result = EmitStackConvert(Node->getOperand(0), DstVT, DstVT); + break; } switch (getTypeAction(Node->getOperand(0).getValueType())) { case Expand: assert(0 && "Shouldn't need to expand other operators here!"); case Legal: Tmp1 = LegalizeOp(Node->getOperand(0)); - Result = DAG.UpdateNodeOperands(Result, Tmp1); + Result = DAG.UpdateNodeOperands(Result, Tmp1, Node->getOperand(1)); break; case Promote: Tmp1 = PromoteOp(Node->getOperand(0)); - Result = DAG.getNode(ISD::FP_ROUND, Op.getValueType(), Tmp1); + Result = DAG.getNode(ISD::FP_ROUND, Op.getValueType(), Tmp1, + Node->getOperand(1)); break; } break; + } case ISD::ANY_EXTEND: case ISD::ZERO_EXTEND: case ISD::SIGN_EXTEND: @@ -3869,13 +3871,18 @@ case Expand: assert(0 && "BUG: Cannot expand FP regs!"); case Promote: assert(0 && "Unreachable with 2 FP types!"); case Legal: - // Input is legal? Do an FP_ROUND_INREG. - Result = DAG.getNode(ISD::FP_ROUND_INREG, NVT, Node->getOperand(0), - DAG.getValueType(VT)); + if (Node->getConstantOperandVal(1) == 0) { + // Input is legal? Do an FP_ROUND_INREG. + Result = DAG.getNode(ISD::FP_ROUND_INREG, NVT, Node->getOperand(0), + DAG.getValueType(VT)); + } else { + // Just remove the truncate, it isn't affecting the value. + Result = DAG.getNode(ISD::FP_ROUND, NVT, Node->getOperand(0), + Node->getOperand(1)); + } break; } break; - case ISD::SINT_TO_FP: case ISD::UINT_TO_FP: switch (getTypeAction(Node->getOperand(0).getValueType())) { @@ -4028,24 +4035,14 @@ case ISD::FCOPYSIGN: // These operators require that their input be fp extended. switch (getTypeAction(Node->getOperand(0).getValueType())) { - case Legal: - Tmp1 = LegalizeOp(Node->getOperand(0)); - break; - case Promote: - Tmp1 = PromoteOp(Node->getOperand(0)); - break; - case Expand: - assert(0 && "not implemented"); + case Expand: assert(0 && "not implemented"); + case Legal: Tmp1 = LegalizeOp(Node->getOperand(0)); break; + case Promote: Tmp1 = PromoteOp(Node->getOperand(0)); break; } switch (getTypeAction(Node->getOperand(1).getValueType())) { - case Legal: - Tmp2 = LegalizeOp(Node->getOperand(1)); - break; - case Promote: - Tmp2 = PromoteOp(Node->getOperand(1)); - break; - case Expand: - assert(0 && "not implemented"); + case Expand: assert(0 && "not implemented"); + case Legal: Tmp2 = LegalizeOp(Node->getOperand(1)); break; + case Promote: Tmp2 = PromoteOp(Node->getOperand(1)); break; } Result = DAG.getNode(Node->getOpcode(), NVT, Tmp1, Tmp2); @@ -4978,7 +4975,7 @@ SDOperand SignSet = DAG.getSetCC(TLI.getSetCCResultTy(), Hi, DAG.getConstant(0, Hi.getValueType()), ISD::SETLT); - SDOperand Zero = getIntPtrConstant(0), Four = getIntPtrConstant(4); + SDOperand Zero = DAG.getIntPtrConstant(0), Four = DAG.getIntPtrConstant(4); SDOperand CstOffset = DAG.getNode(ISD::SELECT, Zero.getValueType(), SignSet, Four, Zero); uint64_t FF = 0x5f800000ULL; @@ -5100,7 +5097,8 @@ // do nothing Result = Sub; } else if (MVT::getSizeInBits(DestVT) < MVT::getSizeInBits(MVT::f64)) { - Result = DAG.getNode(ISD::FP_ROUND, DestVT, Sub); + Result = DAG.getNode(ISD::FP_ROUND, DestVT, Sub, + DAG.getIntPtrConstant(0)); } else if (MVT::getSizeInBits(DestVT) > MVT::getSizeInBits(MVT::f64)) { Result = DAG.getNode(ISD::FP_EXTEND, DestVT, Sub); } @@ -5112,7 +5110,7 @@ SDOperand SignSet = DAG.getSetCC(TLI.getSetCCResultTy(), Op0, DAG.getConstant(0, Op0.getValueType()), ISD::SETLT); - SDOperand Zero = getIntPtrConstant(0), Four = getIntPtrConstant(4); + SDOperand Zero = DAG.getIntPtrConstant(0), Four = DAG.getIntPtrConstant(4); SDOperand CstOffset = DAG.getNode(ISD::SELECT, Zero.getValueType(), SignSet, Four, Zero); @@ -5570,7 +5568,7 @@ // Increment the pointer to the other half. unsigned IncrementSize = MVT::getSizeInBits(Lo.getValueType())/8; Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - getIntPtrConstant(IncrementSize)); + DAG.getIntPtrConstant(IncrementSize)); SVOffset += IncrementSize; Alignment = MinAlign(Alignment, IncrementSize); Hi = DAG.getLoad(NVT, Ch, Ptr, LD->getSrcValue(), SVOffset, @@ -6523,7 +6521,7 @@ Lo = DAG.getLoad(NewVT_Lo, Ch, Ptr, SV, SVOffset, isVolatile, Alignment); unsigned IncrementSize = NewNumElts_Lo * MVT::getSizeInBits(NewEltVT)/8; Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - getIntPtrConstant(IncrementSize)); + DAG.getIntPtrConstant(IncrementSize)); SVOffset += IncrementSize; Alignment = MinAlign(Alignment, IncrementSize); Hi = DAG.getLoad(NewVT_Hi, Ch, Ptr, SV, SVOffset, isVolatile, Alignment); Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h?rev=46125&r1=46124&r2=46125&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h Thu Jan 17 01:00:52 2008 @@ -82,10 +82,6 @@ return getTypeAction(VT) == Legal; } - SDOperand getIntPtrConstant(uint64_t Val) { - return DAG.getConstant(Val, TLI.getPointerTy()); - } - /// PromotedNodes - For nodes that are below legal width, this map indicates /// what promoted value to use. DenseMap PromotedNodes; Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypesExpand.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypesExpand.cpp?rev=46125&r1=46124&r2=46125&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypesExpand.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypesExpand.cpp Thu Jan 17 01:00:52 2008 @@ -253,7 +253,7 @@ // Increment the pointer to the other half. unsigned IncrementSize = MVT::getSizeInBits(NVT)/8; Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - getIntPtrConstant(IncrementSize)); + DAG.getIntPtrConstant(IncrementSize)); Hi = DAG.getLoad(NVT, Ch, Ptr, N->getSrcValue(), SVOffset+IncrementSize, isVolatile, MinAlign(Alignment, IncrementSize)); @@ -300,7 +300,7 @@ // Increment the pointer to the other half. unsigned IncrementSize = MVT::getSizeInBits(NVT)/8; Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - getIntPtrConstant(IncrementSize)); + DAG.getIntPtrConstant(IncrementSize)); Hi = DAG.getExtLoad(ExtType, NVT, Ch, Ptr, N->getSrcValue(), SVOffset+IncrementSize, NEVT, isVolatile, MinAlign(Alignment, IncrementSize)); @@ -324,7 +324,7 @@ // Increment the pointer to the other half. Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - getIntPtrConstant(IncrementSize)); + DAG.getIntPtrConstant(IncrementSize)); // Load the rest of the low bits. Lo = DAG.getExtLoad(ISD::ZEXTLOAD, NVT, Ch, Ptr, N->getSrcValue(), SVOffset+IncrementSize, MVT::getIntegerType(ExcessBits), @@ -869,7 +869,7 @@ SDOperand SignSet = DAG.getSetCC(TLI.getSetCCResultTy(), Hi, DAG.getConstant(0, Hi.getValueType()), ISD::SETLT); - SDOperand Zero = getIntPtrConstant(0), Four = getIntPtrConstant(4); + SDOperand Zero = DAG.getIntPtrConstant(0), Four = DAG.getIntPtrConstant(4); SDOperand CstOffset = DAG.getNode(ISD::SELECT, Zero.getValueType(), SignSet, Four, Zero); uint64_t FF = 0x5f800000ULL; @@ -1053,7 +1053,7 @@ SVOffset, isVolatile, Alignment); Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - getIntPtrConstant(IncrementSize)); + DAG.getIntPtrConstant(IncrementSize)); assert(isTypeLegal(Ptr.getValueType()) && "Pointers must be legal!"); Hi = DAG.getStore(Ch, Hi, Ptr, N->getSrcValue(), SVOffset+IncrementSize, isVolatile, MinAlign(Alignment, IncrementSize)); @@ -1076,7 +1076,7 @@ // Increment the pointer to the other half. unsigned IncrementSize = MVT::getSizeInBits(NVT)/8; Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - getIntPtrConstant(IncrementSize)); + DAG.getIntPtrConstant(IncrementSize)); Hi = DAG.getTruncStore(Ch, Hi, Ptr, N->getSrcValue(), SVOffset+IncrementSize, NEVT, isVolatile, MinAlign(Alignment, IncrementSize)); @@ -1110,7 +1110,7 @@ // Increment the pointer to the other half. Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - getIntPtrConstant(IncrementSize)); + DAG.getIntPtrConstant(IncrementSize)); // Store the lowest ExcessBits bits in the second half. Lo = DAG.getTruncStore(Ch, Lo, Ptr, N->getSrcValue(), SVOffset+IncrementSize, Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypesPromote.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypesPromote.cpp?rev=46125&r1=46124&r2=46125&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypesPromote.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypesPromote.cpp Thu Jan 17 01:00:52 2008 @@ -144,8 +144,11 @@ SDOperand DAGTypeLegalizer::PromoteResult_FP_ROUND(SDNode *N) { // NOTE: Assumes input is legal. - return DAG.getNode(ISD::FP_ROUND_INREG, N->getOperand(0).getValueType(), - N->getOperand(0), DAG.getValueType(N->getValueType(0))); + if (N->getConstantOperandVal(1) == 0) + return DAG.getNode(ISD::FP_ROUND_INREG, N->getOperand(0).getValueType(), + N->getOperand(0), DAG.getValueType(N->getValueType(0))); + // If the precision discard isn't needed, just return the operand unrounded. + return N->getOperand(0); } SDOperand DAGTypeLegalizer::PromoteResult_FP_TO_XINT(SDNode *N) { @@ -353,7 +356,8 @@ SDOperand DAGTypeLegalizer::PromoteOperand_FP_ROUND(SDNode *N) { SDOperand Op = GetPromotedOp(N->getOperand(0)); - return DAG.getNode(ISD::FP_ROUND, N->getValueType(0), Op); + return DAG.getNode(ISD::FP_ROUND, N->getValueType(0), Op, + DAG.getIntPtrConstant(0)); } SDOperand DAGTypeLegalizer::PromoteOperand_INT_TO_FP(SDNode *N) { Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypesSplit.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypesSplit.cpp?rev=46125&r1=46124&r2=46125&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypesSplit.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypesSplit.cpp Thu Jan 17 01:00:52 2008 @@ -139,7 +139,7 @@ Lo = DAG.getLoad(LoVT, Ch, Ptr, SV, SVOffset, isVolatile, Alignment); unsigned IncrementSize = MVT::getSizeInBits(LoVT)/8; Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - getIntPtrConstant(IncrementSize)); + DAG.getIntPtrConstant(IncrementSize)); SVOffset += IncrementSize; Alignment = MinAlign(Alignment, IncrementSize); Hi = DAG.getLoad(HiVT, Ch, Ptr, SV, SVOffset, isVolatile, Alignment); @@ -380,7 +380,7 @@ // Increment the pointer to the other half. Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - getIntPtrConstant(IncrementSize)); + DAG.getIntPtrConstant(IncrementSize)); Hi = DAG.getStore(Ch, Hi, Ptr, N->getSrcValue(), SVOffset+IncrementSize, isVol, MinAlign(Alignment, IncrementSize)); Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp?rev=46125&r1=46124&r2=46125&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Thu Jan 17 01:00:52 2008 @@ -710,6 +710,11 @@ return Result; } +SDOperand SelectionDAG::getIntPtrConstant(uint64_t Val, bool isTarget) { + return getConstant(Val, TLI.getPointerTy(), isTarget); +} + + SDOperand SelectionDAG::getConstantFP(const APFloat& V, MVT::ValueType VT, bool isTarget) { assert(MVT::isFloatingPoint(VT) && "Cannot create integer FP constant!"); @@ -1704,7 +1709,7 @@ // Constant fold unary operations with a floating point constant operand. if (ConstantFPSDNode *C = dyn_cast(Operand.Val)) { APFloat V = C->getValueAPF(); // make copy - if (VT!=MVT::ppcf128 && Operand.getValueType()!=MVT::ppcf128) { + if (VT != MVT::ppcf128 && Operand.getValueType() != MVT::ppcf128) { switch (Opcode) { case ISD::FNEG: V.changeSign(); @@ -1749,13 +1754,13 @@ switch (Opcode) { case ISD::TokenFactor: return Operand; // Factor of one node? No factor. - case ISD::FP_ROUND: + case ISD::FP_ROUND: assert(0 && "Invalid method to make FP_ROUND node"); case ISD::FP_EXTEND: assert(MVT::isFloatingPoint(VT) && MVT::isFloatingPoint(Operand.getValueType()) && "Invalid FP cast!"); if (Operand.getValueType() == VT) return Operand; // noop conversion. break; - case ISD::SIGN_EXTEND: + case ISD::SIGN_EXTEND: assert(MVT::isInteger(VT) && MVT::isInteger(Operand.getValueType()) && "Invalid SIGN_EXTEND!"); if (Operand.getValueType() == VT) return Operand; // noop extension @@ -1909,6 +1914,13 @@ "Not rounding down!"); break; } + case ISD::FP_ROUND: + assert(MVT::isFloatingPoint(VT) && + MVT::isFloatingPoint(N1.getValueType()) && + MVT::getSizeInBits(VT) <= MVT::getSizeInBits(N1.getValueType()) && + isa(N2) && "Invalid FP_ROUND!"); + if (N1.getValueType() == VT) return N1; // noop conversion. + break; case ISD::AssertSext: case ISD::AssertZext: case ISD::SIGN_EXTEND_INREG: { Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp?rev=46125&r1=46124&r2=46125&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Thu Jan 17 01:00:52 2008 @@ -483,10 +483,6 @@ const Value *SV, SDOperand Root, bool isVolatile, unsigned Alignment); - SDOperand getIntPtrConstant(uint64_t Val) { - return DAG.getConstant(Val, TLI.getPointerTy()); - } - SDOperand getValue(const Value *V); void setValue(const Value *V, SDOperand NewN) { @@ -677,12 +673,10 @@ } } - if (MVT::isFloatingPoint(PartVT) && - MVT::isFloatingPoint(ValueVT)) - return DAG.getNode(ISD::FP_ROUND, ValueVT, Val); + if (MVT::isFloatingPoint(PartVT) && MVT::isFloatingPoint(ValueVT)) + return DAG.getNode(ISD::FP_ROUND, ValueVT, Val, DAG.getIntPtrConstant(0)); - if (MVT::getSizeInBits(PartVT) == - MVT::getSizeInBits(ValueVT)) + if (MVT::getSizeInBits(PartVT) == MVT::getSizeInBits(ValueVT)) return DAG.getNode(ISD::BIT_CONVERT, ValueVT, Val); assert(0 && "Unknown mismatch!"); @@ -2163,7 +2157,7 @@ // FPTrunc is never a no-op cast, no need to check SDOperand N = getValue(I.getOperand(0)); MVT::ValueType DestVT = TLI.getValueType(I.getType()); - setValue(&I, DAG.getNode(ISD::FP_ROUND, DestVT, N)); + setValue(&I, DAG.getNode(ISD::FP_ROUND, DestVT, N, DAG.getIntPtrConstant(0))); } void SelectionDAGLowering::visitFPExt(User &I){ @@ -2284,7 +2278,7 @@ // N = N + Offset uint64_t Offset = TD->getStructLayout(StTy)->getElementOffset(Field); N = DAG.getNode(ISD::ADD, N.getValueType(), N, - getIntPtrConstant(Offset)); + DAG.getIntPtrConstant(Offset)); } Ty = StTy->getElementType(Field); } else { @@ -2295,7 +2289,8 @@ if (CI->getZExtValue() == 0) continue; uint64_t Offs = TD->getABITypeSize(Ty)*cast(CI)->getSExtValue(); - N = DAG.getNode(ISD::ADD, N.getValueType(), N, getIntPtrConstant(Offs)); + N = DAG.getNode(ISD::ADD, N.getValueType(), N, + DAG.getIntPtrConstant(Offs)); continue; } @@ -2320,7 +2315,7 @@ continue; } - SDOperand Scale = getIntPtrConstant(ElementSize); + SDOperand Scale = DAG.getIntPtrConstant(ElementSize); IdxN = DAG.getNode(ISD::MUL, N.getValueType(), IdxN, Scale); N = DAG.getNode(ISD::ADD, N.getValueType(), N, IdxN); } @@ -2348,7 +2343,7 @@ AllocSize = DAG.getNode(ISD::ZERO_EXTEND, IntPtr, AllocSize); AllocSize = DAG.getNode(ISD::MUL, IntPtr, AllocSize, - getIntPtrConstant(TySize)); + DAG.getIntPtrConstant(TySize)); // Handle alignment. If the requested alignment is less than or equal to // the stack alignment, ignore it. If the size is greater than or equal to @@ -2361,12 +2356,12 @@ // Round the size of the allocation up to the stack alignment size // by add SA-1 to the size. AllocSize = DAG.getNode(ISD::ADD, AllocSize.getValueType(), AllocSize, - getIntPtrConstant(StackAlign-1)); + DAG.getIntPtrConstant(StackAlign-1)); // Mask out the low bits for alignment purposes. AllocSize = DAG.getNode(ISD::AND, AllocSize.getValueType(), AllocSize, - getIntPtrConstant(~(uint64_t)(StackAlign-1))); + DAG.getIntPtrConstant(~(uint64_t)(StackAlign-1))); - SDOperand Ops[] = { getRoot(), AllocSize, getIntPtrConstant(Align) }; + SDOperand Ops[] = { getRoot(), AllocSize, DAG.getIntPtrConstant(Align) }; const MVT::ValueType *VTs = DAG.getNodeValueTypes(AllocSize.getValueType(), MVT::Other); SDOperand DSA = DAG.getNode(ISD::DYNAMIC_STACKALLOC, VTs, 2, Ops, 3); @@ -3815,7 +3810,7 @@ // Scale the source by the type size. uint64_t ElementSize = TD->getABITypeSize(I.getType()->getElementType()); Src = DAG.getNode(ISD::MUL, Src.getValueType(), - Src, getIntPtrConstant(ElementSize)); + Src, DAG.getIntPtrConstant(ElementSize)); TargetLowering::ArgListTy Args; TargetLowering::ArgListEntry Entry; @@ -3994,7 +3989,7 @@ Op = DAG.getNode(ISD::TRUNCATE, VT, Op); } else { assert(MVT::isFloatingPoint(VT) && "Not int or FP?"); - Op = DAG.getNode(ISD::FP_ROUND, VT, Op); + Op = DAG.getNode(ISD::FP_ROUND, VT, Op, DAG.getIntPtrConstant(1)); } Ops.push_back(Op); break; Modified: llvm/trunk/lib/Target/IA64/IA64ISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/IA64/IA64ISelLowering.cpp?rev=46125&r1=46124&r2=46125&view=diff ============================================================================== --- llvm/trunk/lib/Target/IA64/IA64ISelLowering.cpp (original) +++ llvm/trunk/lib/Target/IA64/IA64ISelLowering.cpp Thu Jan 17 01:00:52 2008 @@ -193,7 +193,8 @@ argt = newroot = DAG.getCopyFromReg(DAG.getRoot(), argVreg[count], MVT::f64); if (I->getType() == Type::FloatTy) - argt = DAG.getNode(ISD::FP_ROUND, MVT::f32, argt); + argt = DAG.getNode(ISD::FP_ROUND, MVT::f32, argt, + DAG.getIntPtrConstant(0)); break; case MVT::i1: // NOTE: as far as C abi stuff goes, // bools are just boring old ints Modified: llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp?rev=46125&r1=46124&r2=46125&view=diff ============================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp (original) +++ llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp Thu Jan 17 01:00:52 2008 @@ -2171,7 +2171,7 @@ SDOperand Bits = DAG.getNode(ISD::BIT_CONVERT, MVT::f64, Op.getOperand(0)); SDOperand FP = DAG.getNode(PPCISD::FCFID, MVT::f64, Bits); if (Op.getValueType() == MVT::f32) - FP = DAG.getNode(ISD::FP_ROUND, MVT::f32, FP); + FP = DAG.getNode(ISD::FP_ROUND, MVT::f32, FP, DAG.getIntPtrConstant(0)); return FP; } @@ -2199,7 +2199,7 @@ // FCFID it and return it. SDOperand FP = DAG.getNode(PPCISD::FCFID, MVT::f64, Ld); if (Op.getValueType() == MVT::f32) - FP = DAG.getNode(ISD::FP_ROUND, MVT::f32, FP); + FP = DAG.getNode(ISD::FP_ROUND, MVT::f32, FP, DAG.getIntPtrConstant(0)); return FP; } @@ -3170,7 +3170,8 @@ Val = DAG.getNode(PPCISD::FCFID, MVT::f64, Val); DCI.AddToWorklist(Val.Val); if (N->getValueType(0) == MVT::f32) { - Val = DAG.getNode(ISD::FP_ROUND, MVT::f32, Val); + Val = DAG.getNode(ISD::FP_ROUND, MVT::f32, Val, + DAG.getIntPtrConstant(0)); DCI.AddToWorklist(Val.Val); } return Val; Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=46125&r1=46124&r2=46125&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Thu Jan 17 01:00:52 2008 @@ -1182,8 +1182,7 @@ SmallVector MemOps; SDOperand RSFIN = DAG.getFrameIndex(RegSaveFrameIndex, getPointerTy()); SDOperand FIN = DAG.getNode(ISD::ADD, getPointerTy(), RSFIN, - DAG.getConstant(VarArgsGPOffset, - getPointerTy())); + DAG.getIntPtrConstant(VarArgsGPOffset)); for (; NumIntRegs != 6; ++NumIntRegs) { unsigned VReg = AddLiveIn(MF, GPR64ArgRegs[NumIntRegs], X86::GR64RegisterClass); @@ -1191,12 +1190,12 @@ SDOperand Store = DAG.getStore(Val.getValue(1), Val, FIN, NULL, 0); MemOps.push_back(Store); FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, - DAG.getConstant(8, getPointerTy())); + DAG.getIntPtrConstant(8)); } // Now store the XMM (fp + vector) parameter registers. FIN = DAG.getNode(ISD::ADD, getPointerTy(), RSFIN, - DAG.getConstant(VarArgsFPOffset, getPointerTy())); + DAG.getIntPtrConstant(VarArgsFPOffset)); for (; NumXMMRegs != 8; ++NumXMMRegs) { unsigned VReg = AddLiveIn(MF, XMMArgRegs[NumXMMRegs], X86::VR128RegisterClass); @@ -1204,7 +1203,7 @@ SDOperand Store = DAG.getStore(Val.getValue(1), Val, FIN, NULL, 0); MemOps.push_back(Store); FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, - DAG.getConstant(16, getPointerTy())); + DAG.getIntPtrConstant(16)); } if (!MemOps.empty()) Root = DAG.getNode(ISD::TokenFactor, MVT::Other, @@ -1253,7 +1252,7 @@ const CCValAssign &VA, SDOperand Chain, SDOperand Arg) { - SDOperand PtrOff = DAG.getConstant(VA.getLocMemOffset(), getPointerTy()); + SDOperand PtrOff = DAG.getIntPtrConstant(VA.getLocMemOffset()); PtrOff = DAG.getNode(ISD::ADD, getPointerTy(), StackPtr, PtrOff); SDOperand FlagsOp = Op.getOperand(6+2*VA.getValNo()); unsigned Flags = cast(FlagsOp)->getValue(); @@ -1306,7 +1305,7 @@ MF.getInfo()->setTCReturnAddrDelta(FPDiff); } - Chain = DAG.getCALLSEQ_START(Chain,DAG.getConstant(NumBytes, getPointerTy())); + Chain = DAG.getCALLSEQ_START(Chain, DAG.getIntPtrConstant(NumBytes)); SDOperand RetAddrFrIdx, NewRetAddrFrIdx; if (IsTailCall) { @@ -1440,7 +1439,7 @@ // needs to be done because if we would lower the arguments directly // to their real stack slot we might end up overwriting each other. // Get source stack slot. - Source = DAG.getConstant(VA.getLocMemOffset(), getPointerTy()); + Source = DAG.getIntPtrConstant(VA.getLocMemOffset()); if (StackPtr.Val == 0) StackPtr = DAG.getCopyFromReg(Chain, X86StackPtr, getPointerTy()); Source = DAG.getNode(ISD::ADD, getPointerTy(), StackPtr, Source); @@ -1501,8 +1500,8 @@ if (IsTailCall) { Ops.push_back(Chain); - Ops.push_back(DAG.getConstant(NumBytes, getPointerTy())); - Ops.push_back(DAG.getConstant(0, getPointerTy())); + Ops.push_back(DAG.getIntPtrConstant(NumBytes)); + Ops.push_back(DAG.getIntPtrConstant(0)); if (InFlag.Val) Ops.push_back(InFlag); Chain = DAG.getNode(ISD::CALLSEQ_END, NodeTys, &Ops[0], Ops.size()); @@ -1560,9 +1559,8 @@ // Returns a flag for retval copy to use. Chain = DAG.getCALLSEQ_END(Chain, - DAG.getConstant(NumBytes, getPointerTy()), - DAG.getConstant(NumBytesForCalleeToPush, - getPointerTy()), + DAG.getIntPtrConstant(NumBytes), + DAG.getIntPtrConstant(NumBytesForCalleeToPush), InFlag); InFlag = Chain.getValue(1); @@ -2732,7 +2730,7 @@ if (ThisElt.Val) V = DAG.getNode(ISD::INSERT_VECTOR_ELT, MVT::v8i16, V, ThisElt, - DAG.getConstant(i/2, TLI.getPointerTy())); + DAG.getIntPtrConstant(i/2)); } } @@ -2760,7 +2758,7 @@ First = false; } V = DAG.getNode(ISD::INSERT_VECTOR_ELT, MVT::v8i16, V, Op.getOperand(i), - DAG.getConstant(i, TLI.getPointerTy())); + DAG.getIntPtrConstant(i)); } } @@ -3569,7 +3567,7 @@ Vec = DAG.getNode(ISD::VECTOR_SHUFFLE, Vec.getValueType(), Vec, DAG.getNode(ISD::UNDEF, Vec.getValueType()), Mask); return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, VT, Vec, - DAG.getConstant(0, getPointerTy())); + DAG.getIntPtrConstant(0)); } else if (MVT::getSizeInBits(VT) == 64) { unsigned Idx = cast(Op.getOperand(1))->getValue(); if (Idx == 0) @@ -3589,7 +3587,7 @@ Vec = DAG.getNode(ISD::VECTOR_SHUFFLE, Vec.getValueType(), Vec, DAG.getNode(ISD::UNDEF, Vec.getValueType()), Mask); return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, VT, Vec, - DAG.getConstant(0, getPointerTy())); + DAG.getIntPtrConstant(0)); } return SDOperand(); @@ -3612,7 +3610,7 @@ if (N1.getValueType() != MVT::i32) N1 = DAG.getNode(ISD::ANY_EXTEND, MVT::i32, N1); if (N2.getValueType() != MVT::i32) - N2 = DAG.getConstant(cast(N2)->getValue(),getPointerTy()); + N2 = DAG.getIntPtrConstant(cast(N2)->getValue()); return DAG.getNode(X86ISD::PINSRW, VT, N0, N1, N2); } return SDOperand(); @@ -4050,7 +4048,7 @@ } // And if it is bigger, shrink it first. if (MVT::getSizeInBits(SrcVT) > MVT::getSizeInBits(VT)) { - Op1 = DAG.getNode(ISD::FP_ROUND, VT, Op1); + Op1 = DAG.getNode(ISD::FP_ROUND, VT, Op1, DAG.getIntPtrConstant(1)); SrcVT = VT; SrcTy = MVT::getTypeForValueType(SrcVT); } @@ -4083,7 +4081,7 @@ DAG.getConstant(32, MVT::i32)); SignBit = DAG.getNode(ISD::BIT_CONVERT, MVT::v4f32, SignBit); SignBit = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, MVT::f32, SignBit, - DAG.getConstant(0, getPointerTy())); + DAG.getIntPtrConstant(0)); } // Clear first operand sign bit. @@ -4247,7 +4245,7 @@ SDOperand Flag; MVT::ValueType IntPtr = getPointerTy(); - MVT::ValueType SPTy = (Subtarget->is64Bit() ? MVT::i64 : MVT::i32); + MVT::ValueType SPTy = Subtarget->is64Bit() ? MVT::i64 : MVT::i32; Chain = DAG.getCopyToReg(Chain, X86::EAX, Size, Flag); Flag = Chain.getValue(1); @@ -4338,7 +4336,7 @@ if (AVT > MVT::i8) { if (I) { unsigned UBytes = MVT::getSizeInBits(AVT) / 8; - Count = DAG.getConstant(I->getValue() / UBytes, getPointerTy()); + Count = DAG.getIntPtrConstant(I->getValue() / UBytes); BytesLeft = I->getValue() % UBytes; } else { assert(AVT >= MVT::i32 && @@ -4450,7 +4448,7 @@ } unsigned UBytes = MVT::getSizeInBits(AVT) / 8; - SDOperand Count = DAG.getConstant(Size / UBytes, getPointerTy()); + SDOperand Count = DAG.getIntPtrConstant(Size / UBytes); BytesLeft = Size % UBytes; SDOperand InFlag(0, 0); @@ -4579,24 +4577,21 @@ MemOps.push_back(Store); // Store fp_offset - FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, - DAG.getConstant(4, getPointerTy())); + FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, DAG.getIntPtrConstant(4)); Store = DAG.getStore(Op.getOperand(0), DAG.getConstant(VarArgsFPOffset, MVT::i32), FIN, SV->getValue(), SV->getOffset()); MemOps.push_back(Store); // Store ptr to overflow_arg_area - FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, - DAG.getConstant(4, getPointerTy())); + FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, DAG.getIntPtrConstant(4)); SDOperand OVFIN = DAG.getFrameIndex(VarArgsFrameIndex, getPointerTy()); Store = DAG.getStore(Op.getOperand(0), OVFIN, FIN, SV->getValue(), SV->getOffset()); MemOps.push_back(Store); // Store ptr to reg_save_area. - FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, - DAG.getConstant(8, getPointerTy())); + FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, DAG.getIntPtrConstant(8)); SDOperand RSFIN = DAG.getFrameIndex(RegSaveFrameIndex, getPointerTy()); Store = DAG.getStore(Op.getOperand(0), RSFIN, FIN, SV->getValue(), SV->getOffset()); @@ -4624,9 +4619,9 @@ if (i == 2) break; SrcPtr = DAG.getNode(ISD::ADD, getPointerTy(), SrcPtr, - DAG.getConstant(8, getPointerTy())); + DAG.getIntPtrConstant(8)); DstPtr = DAG.getNode(ISD::ADD, getPointerTy(), DstPtr, - DAG.getConstant(8, getPointerTy())); + DAG.getIntPtrConstant(8)); } return Chain; } @@ -4757,7 +4752,7 @@ SDOperand RetAddrFI = getReturnAddressFrameIndex(DAG); return DAG.getNode(ISD::SUB, getPointerTy(), RetAddrFI, - DAG.getConstant(4, getPointerTy())); + DAG.getIntPtrConstant(4)); } SDOperand X86TargetLowering::LowerFRAME_TO_ARGS_OFFSET(SDOperand Op, @@ -4766,7 +4761,7 @@ if (Subtarget->is64Bit()) return SDOperand(); - return DAG.getConstant(8, getPointerTy()); + return DAG.getIntPtrConstant(8); } SDOperand X86TargetLowering::LowerEH_RETURN(SDOperand Op, SelectionDAG &DAG) @@ -4783,7 +4778,7 @@ getPointerTy()); SDOperand StoreAddr = DAG.getNode(ISD::SUB, getPointerTy(), Frame, - DAG.getConstant(-4UL, getPointerTy())); + DAG.getIntPtrConstant(-4UL)); StoreAddr = DAG.getNode(ISD::ADD, getPointerTy(), StoreAddr, Offset); Chain = DAG.getStore(Chain, Handler, StoreAddr, NULL, 0); Chain = DAG.getCopyToReg(Chain, X86::ECX, StoreAddr); From sabre at nondot.org Thu Jan 17 01:20:39 2008 From: sabre at nondot.org (Chris Lattner) Date: Thu, 17 Jan 2008 07:20:39 -0000 Subject: [llvm-commits] [llvm] r46126 - /llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Message-ID: <200801170720.m0H7KdEx017062@zion.cs.uiuc.edu> Author: lattner Date: Thu Jan 17 01:20:38 2008 New Revision: 46126 URL: http://llvm.org/viewvc/llvm-project?rev=46126&view=rev Log: code cleanups, no functionality change. Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=46126&r1=46125&r2=46126&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Thu Jan 17 01:20:38 2008 @@ -846,8 +846,9 @@ RHS.getOpcode() == ISD::Constant && cast(RHS)->isNullValue()) { std::swap(LHS, RHS); - bool isInt = MVT::isInteger(isSlctCC ? Slct.getOperand(0).getValueType() - : Slct.getOperand(0).getOperand(0).getValueType()); + SDOperand Op0 = Slct.getOperand(0); + bool isInt = MVT::isInteger(isSlctCC ? Op0.getValueType() + : Op0.getOperand(0).getValueType()); CC = ISD::getSetCCInverse(CC, isInt); DoXform = true; InvCC = true; @@ -4111,7 +4112,7 @@ DOUT << " and 2 other values\n"; DAG.ReplaceAllUsesOfValueWith(SDOperand(N, 0), Undef, &NowDead); DAG.ReplaceAllUsesOfValueWith(SDOperand(N, 1), - DAG.getNode(ISD::UNDEF, N->getValueType(1)), + DAG.getNode(ISD::UNDEF, N->getValueType(1)), &NowDead); DAG.ReplaceAllUsesOfValueWith(SDOperand(N, 2), Chain, &NowDead); removeFromWorkList(N); @@ -4261,12 +4262,13 @@ SDOperand ReplStore; if (ST->isTruncatingStore()) { ReplStore = DAG.getTruncStore(BetterChain, Value, Ptr, - ST->getSrcValue(), ST->getSrcValueOffset(), ST->getStoredVT(), - ST->isVolatile(), ST->getAlignment()); + ST->getSrcValue(),ST->getSrcValueOffset(), + ST->getStoredVT(), + ST->isVolatile(), ST->getAlignment()); } else { ReplStore = DAG.getStore(BetterChain, Value, Ptr, - ST->getSrcValue(), ST->getSrcValueOffset(), - ST->isVolatile(), ST->getAlignment()); + ST->getSrcValue(), ST->getSrcValueOffset(), + ST->isVolatile(), ST->getAlignment()); } // Create token to keep both nodes around. From evan.cheng at apple.com Thu Jan 17 01:26:32 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Thu, 17 Jan 2008 07:26:32 -0000 Subject: [llvm-commits] [llvm] r46127 - /llvm/trunk/test/Transforms/DeadArgElim/2008-01-16-VarargsParamAttrs.ll Message-ID: <200801170726.m0H7QWgr017549@zion.cs.uiuc.edu> Author: evancheng Date: Thu Jan 17 01:26:31 2008 New Revision: 46127 URL: http://llvm.org/viewvc/llvm-project?rev=46127&view=rev Log: Test case for varargs parameter attribute issue I just fixed. Added: llvm/trunk/test/Transforms/DeadArgElim/2008-01-16-VarargsParamAttrs.ll Added: llvm/trunk/test/Transforms/DeadArgElim/2008-01-16-VarargsParamAttrs.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/DeadArgElim/2008-01-16-VarargsParamAttrs.ll?rev=46127&view=auto ============================================================================== --- llvm/trunk/test/Transforms/DeadArgElim/2008-01-16-VarargsParamAttrs.ll (added) +++ llvm/trunk/test/Transforms/DeadArgElim/2008-01-16-VarargsParamAttrs.ll Thu Jan 17 01:26:31 2008 @@ -0,0 +1,31 @@ +; RUN: llvm-as < %s | opt -deadargelim | llvm-dis | grep byval + + %struct.point = type { double, double } + at pts = global [4 x %struct.point] [ %struct.point { double 1.000000e+00, double 2.000000e+00 }, %struct.point { double 3.000000e+00, double 4.000000e+00 }, %struct.point { double 5.000000e+00, double 6.000000e+00 }, %struct.point { double 7.000000e+00, double 8.000000e+00 } ], align 32 ; <[4 x %struct.point]*> [#uses=1] + +define internal i32 @va1(i32 %nargs, ...) { +entry: + %pi = alloca %struct.point ; <%struct.point*> [#uses=0] + %args = alloca i8* ; [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] + %args1 = bitcast i8** %args to i8* ; [#uses=1] + call void @llvm.va_start( i8* %args1 ) + %args41 = bitcast i8** %args to i8* ; [#uses=1] + call void @llvm.va_end( i8* %args41 ) + ret i32 undef +} + +declare void @llvm.va_start(i8*) nounwind + +declare void @llvm.va_end(i8*) nounwind + +define i32 @main() { +entry: + %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] + %tmp = getelementptr [4 x %struct.point]* @pts, i32 0, i32 0 ; <%struct.point*> [#uses=1] + %tmp1 = call i32 (i32, ...)* @va1( i32 1, %struct.point* byval %tmp ) nounwind ; [#uses=0] + call void @exit( i32 0 ) noreturn nounwind + unreachable +} + +declare void @exit(i32) noreturn nounwind From sabre at nondot.org Thu Jan 17 01:30:39 2008 From: sabre at nondot.org (Chris Lattner) Date: Thu, 17 Jan 2008 07:30:39 -0000 Subject: [llvm-commits] [llvm] r46128 - /llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h Message-ID: <200801170730.m0H7Udir017927@zion.cs.uiuc.edu> Author: lattner Date: Thu Jan 17 01:30:38 2008 New Revision: 46128 URL: http://llvm.org/viewvc/llvm-project?rev=46128&view=rev Log: add some helper methods. Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h?rev=46128&r1=46127&r2=46128&view=diff ============================================================================== --- llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h (original) +++ llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h Thu Jan 17 01:30:38 2008 @@ -1562,6 +1562,12 @@ ISD::LoadExtType getExtensionType() const { return ExtType; } MVT::ValueType getLoadedVT() const { return LoadedVT; } + /// isIndexed - Return true if this is a pre/post inc/dec load. + bool isIndexed() const { return AddrMode != ISD::UNINDEXED; } + + /// isUnindexed - Return true if this is NOT a pre/post inc/dec load. + bool isUnindexed() const { return AddrMode == ISD::UNINDEXED; } + static bool classof(const LoadSDNode *) { return true; } static bool classof(const SDNode *N) { return N->getOpcode() == ISD::LOAD; @@ -1594,16 +1600,21 @@ Ops[3] = ChainValuePtrOff[3]; // Off InitOperands(Ops, 4); assert(Align != 0 && "Stores should have non-zero aligment"); - assert((getOffset().getOpcode() == ISD::UNDEF || - AddrMode != ISD::UNINDEXED) && + assert((getOffset().getOpcode() == ISD::UNDEF || isIndexed()) && "Only indexed store has a non-undef offset operand"); } public: - ISD::MemIndexedMode getAddressingMode() const { return AddrMode; } bool isTruncatingStore() const { return IsTruncStore; } MVT::ValueType getStoredVT() const { return StoredVT; } + ISD::MemIndexedMode getAddressingMode() const { return AddrMode; } + + /// isIndexed - Return true if this is a pre/post inc/dec store. + bool isIndexed() const { return AddrMode != ISD::UNINDEXED; } + /// isUnindexed - Return true if this is NOT a pre/post inc/dec store. + bool isUnindexed() const { return AddrMode == ISD::UNINDEXED; } + static bool classof(const StoreSDNode *) { return true; } static bool classof(const SDNode *N) { return N->getOpcode() == ISD::STORE; From duncan.sands at math.u-psud.fr Thu Jan 17 03:31:34 2008 From: duncan.sands at math.u-psud.fr (Duncan Sands) Date: Thu, 17 Jan 2008 10:31:34 +0100 Subject: [llvm-commits] [llvm] r46088 - in /llvm/trunk: include/llvm/CodeGen/MachineModuleInfo.h lib/CodeGen/DwarfWriter.cpp lib/CodeGen/MachineModuleInfo.cpp In-Reply-To: <200801161959.m0GJxSPX014013@zion.cs.uiuc.edu> References: <200801161959.m0GJxSPX014013@zion.cs.uiuc.edu> Message-ID: <200801171031.35790.duncan.sands@math.u-psud.fr> Hi Dale, > Do not mark EH tables no-dead-strip unless the > associated function is so marked. can you please explain what this means? And is there a testcase? Thanks! D. From duncan.sands at math.u-psud.fr Thu Jan 17 03:45:02 2008 From: duncan.sands at math.u-psud.fr (Duncan Sands) Date: Thu, 17 Jan 2008 10:45:02 +0100 Subject: [llvm-commits] [llvm] r46108 - in /llvm/trunk: lib/Transforms/IPO/ArgumentPromotion.cpp test/Transforms/ArgumentPromotion/attrs.ll In-Reply-To: <200801170117.m0H1H3mE001661@zion.cs.uiuc.edu> References: <200801170117.m0H1H3mE001661@zion.cs.uiuc.edu> Message-ID: <200801171045.02711.duncan.sands@math.u-psud.fr> Hi Chris, > Fix arg promotion to propagate the correct attrs on the calls to > promoted functions. This is important for varargs calls in > particular. Thanks to duncan for providing a great testcase. you forgot about attributes on the function return value. Ciao, Duncan. From criswell at cs.uiuc.edu Thu Jan 17 11:18:31 2008 From: criswell at cs.uiuc.edu (John Criswell) Date: Thu, 17 Jan 2008 11:18:31 -0600 Subject: [llvm-commits] CVS: llvm-www/pubs/2007-SOSP-SVA.html index.html Message-ID: <200801171718.m0HHIVdG016662@maute.cs.uiuc.edu> Changes in directory llvm-www/pubs: 2007-SOSP-SVA.html updated: 1.1 -> 1.2 index.html updated: 1.59 -> 1.60 --- Log message: Added our SOSP Audience Choice Award. --- Diffs of the changes: (+3 -1) 2007-SOSP-SVA.html | 2 ++ index.html | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) Index: llvm-www/pubs/2007-SOSP-SVA.html diff -u llvm-www/pubs/2007-SOSP-SVA.html:1.1 llvm-www/pubs/2007-SOSP-SVA.html:1.2 --- llvm-www/pubs/2007-SOSP-SVA.html:1.1 Mon Sep 24 10:36:54 2007 +++ llvm-www/pubs/2007-SOSP-SVA.html Thu Jan 17 11:17:45 2008 @@ -51,6 +51,8 @@ prevent the fifth one simply by compiling an additional kernel library. +

Awarded an SOSP 2007 Audience Choice Award

+

Download:

Paper:

    Index: llvm-www/pubs/index.html diff -u llvm-www/pubs/index.html:1.59 llvm-www/pubs/index.html:1.60 --- llvm-www/pubs/index.html:1.59 Mon Sep 24 10:50:20 2007 +++ llvm-www/pubs/index.html Thu Jan 17 11:17:45 2008 @@ -8,7 +8,7 @@ Operating Systems
    John Criswell, Andrew Lenharth, Dinakar Dhurjati, and Vikram Adve
    -Proceedings of the Twenty First ACM Symposium on Operating Systems Principles (SOSP '07), Stevenson, WA, October 2007. +Proceedings of the Twenty First ACM Symposium on Operating Systems Principles (SOSP '07), Stevenson, WA, October 2007.Received an SOSP 2007 Audience Choice Award.
  • "Transactifying Applications Using an Open Compiler Framework"
    Pascal Felber, Christof Fetzer, From criswell at cs.uiuc.edu Thu Jan 17 11:19:29 2008 From: criswell at cs.uiuc.edu (John Criswell) Date: Thu, 17 Jan 2008 11:19:29 -0600 Subject: [llvm-commits] CVS: llvm-www/pubs/index.html Message-ID: <200801171719.m0HHJTjn016712@maute.cs.uiuc.edu> Changes in directory llvm-www/pubs: index.html updated: 1.60 -> 1.61 --- Log message: Added a line break before the SOSP award note. --- Diffs of the changes: (+4 -1) index.html | 5 ++++- 1 files changed, 4 insertions(+), 1 deletion(-) Index: llvm-www/pubs/index.html diff -u llvm-www/pubs/index.html:1.60 llvm-www/pubs/index.html:1.61 --- llvm-www/pubs/index.html:1.60 Thu Jan 17 11:17:45 2008 +++ llvm-www/pubs/index.html Thu Jan 17 11:18:48 2008 @@ -8,7 +8,10 @@ Operating Systems
    John Criswell, Andrew Lenharth, Dinakar Dhurjati, and Vikram Adve
    -Proceedings of the Twenty First ACM Symposium on Operating Systems Principles (SOSP '07), Stevenson, WA, October 2007.Received an SOSP 2007 Audience Choice Award.
  • +Proceedings of the Twenty First ACM Symposium on Operating Systems Principles (SOSP '07), Stevenson, WA, October 2007. +
    +Received an SOSP 2007 Audience Choice Award. +
  • "Transactifying Applications Using an Open Compiler Framework"
    Pascal Felber, Christof Fetzer, From kremenek at apple.com Thu Jan 17 11:36:49 2008 From: kremenek at apple.com (Ted Kremenek) Date: Thu, 17 Jan 2008 17:36:49 -0000 Subject: [llvm-commits] [llvm] r46130 - in /llvm/trunk/include/llvm/ADT: ImmutableMap.h ImmutableSet.h Message-ID: <200801171736.m0HHaoWW028547@zion.cs.uiuc.edu> Author: kremenek Date: Thu Jan 17 11:36:49 2008 New Revision: 46130 URL: http://llvm.org/viewvc/llvm-project?rev=46130&view=rev Log: Implemented "FIXME" in ImutAVLTree: isEqual() now also compares the *data* value and not just the key value when comparing trees. To do this we added data_type and data_type_ref to the ImutContainerInfo trait classes. For values stored in the tree that do not have separate key and data components, data_type is simply a typedef of bool, and isDataEqual() always evaluates to true. This allows us to support both ImmutableSet and ImmutableMap using the same underlying logic. Modified: llvm/trunk/include/llvm/ADT/ImmutableMap.h llvm/trunk/include/llvm/ADT/ImmutableSet.h Modified: llvm/trunk/include/llvm/ADT/ImmutableMap.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/ImmutableMap.h?rev=46130&r1=46129&r2=46130&view=diff ============================================================================== --- llvm/trunk/include/llvm/ADT/ImmutableMap.h (original) +++ llvm/trunk/include/llvm/ADT/ImmutableMap.h Thu Jan 17 11:36:49 2008 @@ -34,14 +34,21 @@ return V.first; } - static inline bool isEqual(key_type_ref L, key_type_ref R) { - return ImutContainerInfo::isEqual(L,R); + static inline data_type_ref DataOfValue(value_type_ref V) { + return V.second; } + static inline bool isEqual(key_type_ref L, key_type_ref R) { + return ImutContainerInfo::isEqual(L,R); + } static inline bool isLess(key_type_ref L, key_type_ref R) { return ImutContainerInfo::isLess(L,R); } + static inline bool isDataEqual(data_type_ref L, data_type_ref R) { + return ImutContainerInfo::isEqual(L,R); + } + static inline void Profile(FoldingSetNodeID& ID, value_type_ref V) { ImutContainerInfo::Profile(ID, V.first); ImutContainerInfo::Profile(ID, V.second); Modified: llvm/trunk/include/llvm/ADT/ImmutableSet.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/ImmutableSet.h?rev=46130&r1=46129&r2=46130&view=diff ============================================================================== --- llvm/trunk/include/llvm/ADT/ImmutableSet.h (original) +++ llvm/trunk/include/llvm/ADT/ImmutableSet.h Thu Jan 17 11:36:49 2008 @@ -120,12 +120,16 @@ continue; } - // FIXME: need to compare data values, not key values, but our - // traits don't support this yet. + // Compare the keys. if (!ImutInfo::isEqual(ImutInfo::KeyOfValue(LItr->getValue()), ImutInfo::KeyOfValue(RItr->getValue()))) return false; + // Also compare the data values. + if (!ImutInfo::isDataEqual(ImutInfo::DataOfValue(LItr->getValue()), + ImutInfo::DataOfValue(RItr->getValue()))) + return false; + ++LItr; ++RItr; } @@ -773,8 +777,11 @@ typedef typename ImutProfileInfo::value_type_ref value_type_ref; typedef value_type key_type; typedef value_type_ref key_type_ref; + typedef bool data_type; + typedef bool data_type_ref; static inline key_type_ref KeyOfValue(value_type_ref D) { return D; } + static inline data_type_ref DataOfValue(value_type_ref) { return true; } static inline bool isEqual(key_type_ref LHS, key_type_ref RHS) { return std::equal_to()(LHS,RHS); @@ -783,6 +790,8 @@ static inline bool isLess(key_type_ref LHS, key_type_ref RHS) { return std::less()(LHS,RHS); } + + static inline bool isDataEqual(data_type_ref,data_type_ref) { return true; } }; /// ImutContainerInfo - Specialization for pointer values to treat pointers @@ -794,8 +803,11 @@ typedef typename ImutProfileInfo::value_type_ref value_type_ref; typedef value_type key_type; typedef value_type_ref key_type_ref; + typedef bool data_type; + typedef bool data_type_ref; static inline key_type_ref KeyOfValue(value_type_ref D) { return D; } + static inline data_type_ref DataOfValue(value_type_ref) { return true; } static inline bool isEqual(key_type_ref LHS, key_type_ref RHS) { return LHS == RHS; @@ -804,6 +816,8 @@ static inline bool isLess(key_type_ref LHS, key_type_ref RHS) { return LHS < RHS; } + + static inline bool isDataEqual(data_type_ref,data_type_ref) { return true; } }; //===----------------------------------------------------------------------===// From sabre at nondot.org Thu Jan 17 13:47:24 2008 From: sabre at nondot.org (Chris Lattner) Date: Thu, 17 Jan 2008 19:47:24 -0000 Subject: [llvm-commits] [llvm] r46139 - /llvm/trunk/test/CodeGen/Generic/storetrunc-fp.ll Message-ID: <200801171947.m0HJlOpb008104@zion.cs.uiuc.edu> Author: lattner Date: Thu Jan 17 13:47:23 2008 New Revision: 46139 URL: http://llvm.org/viewvc/llvm-project?rev=46139&view=rev Log: new testcase. Added: llvm/trunk/test/CodeGen/Generic/storetrunc-fp.ll Added: llvm/trunk/test/CodeGen/Generic/storetrunc-fp.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/storetrunc-fp.ll?rev=46139&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/Generic/storetrunc-fp.ll (added) +++ llvm/trunk/test/CodeGen/Generic/storetrunc-fp.ll Thu Jan 17 13:47:23 2008 @@ -0,0 +1,8 @@ +; RUN: llvm-as < %s | llc + +define void @foo(double %a, double %b, float* %fp) { + %c = add double %a, %b + %d = fptrunc double %c to float + store float %d, float* %fp + ret void +} From sabre at nondot.org Thu Jan 17 13:59:45 2008 From: sabre at nondot.org (Chris Lattner) Date: Thu, 17 Jan 2008 19:59:45 -0000 Subject: [llvm-commits] [llvm] r46140 - in /llvm/trunk: include/llvm/Target/ lib/CodeGen/SelectionDAG/ lib/Target/ lib/Target/ARM/ lib/Target/Alpha/ lib/Target/CellSPU/ lib/Target/Mips/ lib/Target/PowerPC/ lib/Target/Sparc/ lib/Target/X86/ test/CodeGen/X86/ Message-ID: <200801171959.m0HJxkwr008950@zion.cs.uiuc.edu> Author: lattner Date: Thu Jan 17 13:59:44 2008 New Revision: 46140 URL: http://llvm.org/viewvc/llvm-project?rev=46140&view=rev Log: This commit changes: 1. Legalize now always promotes truncstore of i1 to i8. 2. Remove patterns and gunk related to truncstore i1 from targets. 3. Rename the StoreXAction stuff to TruncStoreAction in TLI. 4. Make the TLI TruncStoreAction table a 2d table to handle from/to conversions. 5. Mark a wide variety of invalid truncstores as such in various targets, e.g. X86 currently doesn't support truncstore of any of its integer types. 6. Add legalize support for truncstores with invalid value input types. 7. Add a dag combine transform to turn store(truncate) into truncstore when safe. The later allows us to compile CodeGen/X86/storetrunc-fp.ll to: _foo: fldt 20(%esp) fldt 4(%esp) faddp %st(1) movl 36(%esp), %eax fstps (%eax) ret instead of: _foo: subl $4, %esp fldt 24(%esp) fldt 8(%esp) faddp %st(1) fstps (%esp) movl 40(%esp), %eax movss (%esp), %xmm0 movss %xmm0, (%eax) addl $4, %esp ret Added: llvm/trunk/test/CodeGen/X86/storetrunc-fp.ll Modified: llvm/trunk/include/llvm/Target/TargetLowering.h llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp llvm/trunk/lib/Target/ARM/ARMInstrInfo.td llvm/trunk/lib/Target/ARM/ARMInstrThumb.td llvm/trunk/lib/Target/Alpha/AlphaISelLowering.cpp llvm/trunk/lib/Target/CellSPU/SPUISelLowering.cpp llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp llvm/trunk/lib/Target/Mips/MipsInstrInfo.td llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp llvm/trunk/lib/Target/Sparc/SparcInstrInfo.td llvm/trunk/lib/Target/TargetSelectionDAG.td llvm/trunk/lib/Target/X86/X86ISelLowering.cpp llvm/trunk/lib/Target/X86/X86InstrInfo.td Modified: llvm/trunk/include/llvm/Target/TargetLowering.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetLowering.h?rev=46140&r1=46139&r2=46140&view=diff ============================================================================== --- llvm/trunk/include/llvm/Target/TargetLowering.h (original) +++ llvm/trunk/include/llvm/Target/TargetLowering.h Thu Jan 17 13:59:44 2008 @@ -301,19 +301,22 @@ getLoadXAction(LType, VT) == Custom; } - /// getStoreXAction - Return how this store with truncation should be treated: - /// either it is legal, needs to be promoted to a larger size, needs to be - /// expanded to some other code sequence, or the target has a custom expander - /// for it. - LegalizeAction getStoreXAction(MVT::ValueType VT) const { - if (MVT::isExtendedVT(VT)) return getTypeAction(VT); - return (LegalizeAction)((StoreXActions >> (2*VT)) & 3); + /// getTruncStoreAction - Return how this store with truncation should be + /// treated: either it is legal, needs to be promoted to a larger size, needs + /// to be expanded to some other code sequence, or the target has a custom + /// expander for it. + LegalizeAction getTruncStoreAction(MVT::ValueType ValVT, + MVT::ValueType MemVT) const { + assert(ValVT < MVT::LAST_VALUETYPE && MemVT < 32 && + "Table isn't big enough!"); + return (LegalizeAction)((TruncStoreActions[ValVT] >> (2*MemVT)) & 3); } - /// isStoreXLegal - Return true if the specified store with truncation is + /// isTruncStoreLegal - Return true if the specified store with truncation is /// legal on this target. - bool isStoreXLegal(MVT::ValueType VT) const { - return getStoreXAction(VT) == Legal || getStoreXAction(VT) == Custom; + bool isTruncStoreLegal(MVT::ValueType ValVT, MVT::ValueType MemVT) const { + return getTruncStoreAction(ValVT, MemVT) == Legal || + getTruncStoreAction(ValVT, MemVT) == Custom; } /// getIndexedLoadAction - Return how the indexed load should be treated: @@ -760,12 +763,14 @@ LoadXActions[ExtType] |= (uint64_t)Action << VT*2; } - /// setStoreXAction - Indicate that the specified store with truncation does + /// setTruncStoreAction - Indicate that the specified truncating store does /// not work with the with specified type and indicate what to do about it. - void setStoreXAction(MVT::ValueType VT, LegalizeAction Action) { - assert(VT < 32 && "Table isn't big enough!"); - StoreXActions &= ~(uint64_t(3UL) << VT*2); - StoreXActions |= (uint64_t)Action << VT*2; + void setTruncStoreAction(MVT::ValueType ValVT, MVT::ValueType MemVT, + LegalizeAction Action) { + assert(ValVT < MVT::LAST_VALUETYPE && MemVT < 32 && + "Table isn't big enough!"); + TruncStoreActions[ValVT] &= ~(uint64_t(3UL) << MemVT*2); + TruncStoreActions[ValVT] |= (uint64_t)Action << MemVT*2; } /// setIndexedLoadAction - Indicate that the specified indexed load does or @@ -1183,10 +1188,9 @@ /// with the load. uint64_t LoadXActions[ISD::LAST_LOADX_TYPE]; - /// StoreXActions - For each store with truncation of each value type, keep a - /// LegalizeAction that indicates how instruction selection should deal with - /// the store. - uint64_t StoreXActions; + /// TruncStoreActions - For each truncating store, keep a LegalizeAction that + /// indicates how instruction selection should deal with the store. + uint64_t TruncStoreActions[MVT::LAST_VALUETYPE]; /// IndexedModeActions - For each indexed mode and each value type, keep a /// pair of LegalizeAction that indicates how instruction selection should Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=46140&r1=46139&r2=46140&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Thu Jan 17 13:59:44 2008 @@ -1690,8 +1690,7 @@ if (N1C && N0.getOpcode() == ISD::LOAD) { LoadSDNode *LN0 = cast(N0); if (LN0->getExtensionType() != ISD::SEXTLOAD && - LN0->getAddressingMode() == ISD::UNINDEXED && - N0.hasOneUse()) { + LN0->isUnindexed() && N0.hasOneUse()) { MVT::ValueType EVT, LoadedVT; if (N1C->getValue() == 255) EVT = MVT::i8; @@ -3810,7 +3809,7 @@ SDOperand Ptr; MVT::ValueType VT; if (LoadSDNode *LD = dyn_cast(N)) { - if (LD->getAddressingMode() != ISD::UNINDEXED) + if (LD->isIndexed()) return false; VT = LD->getLoadedVT(); if (!TLI.isIndexedLoadLegal(ISD::PRE_INC, VT) && @@ -3818,7 +3817,7 @@ return false; Ptr = LD->getBasePtr(); } else if (StoreSDNode *ST = dyn_cast(N)) { - if (ST->getAddressingMode() != ISD::UNINDEXED) + if (ST->isIndexed()) return false; VT = ST->getStoredVT(); if (!TLI.isIndexedStoreLegal(ISD::PRE_INC, VT) && @@ -3937,7 +3936,7 @@ SDOperand Ptr; MVT::ValueType VT; if (LoadSDNode *LD = dyn_cast(N)) { - if (LD->getAddressingMode() != ISD::UNINDEXED) + if (LD->isIndexed()) return false; VT = LD->getLoadedVT(); if (!TLI.isIndexedLoadLegal(ISD::POST_INC, VT) && @@ -3945,7 +3944,7 @@ return false; Ptr = LD->getBasePtr(); } else if (StoreSDNode *ST = dyn_cast(N)) { - if (ST->getAddressingMode() != ISD::UNINDEXED) + if (ST->isIndexed()) return false; VT = ST->getStoredVT(); if (!TLI.isIndexedStoreLegal(ISD::POST_INC, VT) && @@ -4187,7 +4186,7 @@ // If this is a store of a bit convert, store the input value if the // resultant store does not need a higher alignment than the original. if (Value.getOpcode() == ISD::BIT_CONVERT && !ST->isTruncatingStore() && - ST->getAddressingMode() == ISD::UNINDEXED) { + ST->isUnindexed()) { unsigned Align = ST->getAlignment(); MVT::ValueType SVT = Value.getOperand(0).getValueType(); unsigned OrigAlign = TLI.getTargetMachine().getTargetData()-> @@ -4285,7 +4284,7 @@ return SDOperand(N, 0); // FIXME: is there such a thing as a truncating indexed store? - if (ST->isTruncatingStore() && ST->getAddressingMode() == ISD::UNINDEXED && + if (ST->isTruncatingStore() && ST->isUnindexed() && MVT::isInteger(Value.getValueType())) { // See if we can simplify the input to this truncstore with knowledge that // only the low bits are being used. For example: @@ -4308,8 +4307,7 @@ // is dead/noop. if (LoadSDNode *Ld = dyn_cast(Value)) { if (Ld->getBasePtr() == Ptr && ST->getStoredVT() == Ld->getLoadedVT() && - ST->getAddressingMode() == ISD::UNINDEXED && - !ST->isVolatile() && + ST->isUnindexed() && !ST->isVolatile() && // There can't be any side effects between the load and store, such as // a call or store. Chain.reachesChainWithoutSideEffects(SDOperand(Ld, 1))) { @@ -4318,6 +4316,18 @@ } } + // If this is an FP_ROUND or TRUNC followed by a store, fold this into a + // truncating store. We can do this even if this is already a truncstore. + if ((Value.getOpcode() == ISD::FP_ROUND || Value.getOpcode() == ISD::TRUNCATE) + && TLI.isTypeLegal(Value.getOperand(0).getValueType()) && + Value.Val->hasOneUse() && ST->isUnindexed() && + TLI.isTruncStoreLegal(Value.getOperand(0).getValueType(), + ST->getStoredVT())) { + return DAG.getTruncStore(Chain, Value.getOperand(0), Ptr, ST->getSrcValue(), + ST->getSrcValueOffset(), ST->getStoredVT(), + ST->isVolatile(), ST->getAlignment()); + } + return SDOperand(); } Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=46140&r1=46139&r2=46140&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Thu Jan 17 13:59:44 2008 @@ -2239,15 +2239,24 @@ break; } } else { - // Truncating store - assert(isTypeLegal(ST->getValue().getValueType()) && - "Cannot handle illegal TRUNCSTORE yet!"); - Tmp3 = LegalizeOp(ST->getValue()); - - // The only promote case we handle is TRUNCSTORE:i1 X into - // -> TRUNCSTORE:i8 (and X, 1) - if (ST->getStoredVT() == MVT::i1 && - TLI.getStoreXAction(MVT::i1) == TargetLowering::Promote) { + switch (getTypeAction(ST->getValue().getValueType())) { + case Legal: + Tmp3 = LegalizeOp(ST->getValue()); + break; + case Promote: + // We can promote the value, the truncstore will still take care of it. + Tmp3 = PromoteOp(ST->getValue()); + break; + case Expand: + // Just store the low part. This may become a non-trunc store, so make + // sure to use getTruncStore, not UpdateNodeOperands below. + ExpandOp(ST->getValue(), Tmp3, Tmp4); + return DAG.getTruncStore(Tmp1, Tmp3, Tmp2, ST->getSrcValue(), + SVOffset, MVT::i8, isVolatile, Alignment); + } + + // Unconditionally promote TRUNCSTORE:i1 X -> TRUNCSTORE:i8 (and X, 1) + if (ST->getStoredVT() == MVT::i1) { // Promote the bool to a mask then store. Tmp3 = DAG.getNode(ISD::AND, Tmp3.getValueType(), Tmp3, DAG.getConstant(1, Tmp3.getValueType())); @@ -2261,7 +2270,7 @@ } MVT::ValueType StVT = cast(Result.Val)->getStoredVT(); - switch (TLI.getStoreXAction(StVT)) { + switch (TLI.getTruncStoreAction(ST->getValue().getValueType(), StVT)) { default: assert(0 && "This action is not supported yet!"); case TargetLowering::Legal: // If this is an unaligned store and the target doesn't support it, @@ -2275,8 +2284,7 @@ } break; case TargetLowering::Custom: - Tmp1 = TLI.LowerOperation(Result, DAG); - if (Tmp1.Val) Result = Tmp1; + Result = TLI.LowerOperation(Result, DAG); break; } } Modified: llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp?rev=46140&r1=46139&r2=46140&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp Thu Jan 17 13:59:44 2008 @@ -158,7 +158,7 @@ // All operations default to being supported. memset(OpActions, 0, sizeof(OpActions)); memset(LoadXActions, 0, sizeof(LoadXActions)); - memset(&StoreXActions, 0, sizeof(StoreXActions)); + memset(TruncStoreActions, 0, sizeof(TruncStoreActions)); memset(&IndexedModeActions, 0, sizeof(IndexedModeActions)); memset(&ConvertActions, 0, sizeof(ConvertActions)); Modified: llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp?rev=46140&r1=46139&r2=46140&view=diff ============================================================================== --- llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp (original) +++ llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp Thu Jan 17 13:59:44 2008 @@ -125,6 +125,8 @@ if (!UseSoftFloat && Subtarget->hasVFP2() && !Subtarget->isThumb()) { addRegisterClass(MVT::f32, ARM::SPRRegisterClass); addRegisterClass(MVT::f64, ARM::DPRRegisterClass); + + setTruncStoreAction(MVT::f64, MVT::f32, Expand); } computeRegisterProperties(); Modified: llvm/trunk/lib/Target/ARM/ARMInstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrInfo.td?rev=46140&r1=46139&r2=46140&view=diff ============================================================================== --- llvm/trunk/lib/Target/ARM/ARMInstrInfo.td (original) +++ llvm/trunk/lib/Target/ARM/ARMInstrInfo.td Thu Jan 17 13:59:44 2008 @@ -1404,14 +1404,6 @@ def : ARMPat<(extloadi8 addrmode2:$addr), (LDRB addrmode2:$addr)>; def : ARMPat<(extloadi16 addrmode3:$addr), (LDRH addrmode3:$addr)>; -// truncstore i1 -> truncstore i8 -def : ARMPat<(truncstorei1 GPR:$src, addrmode2:$dst), - (STRB GPR:$src, addrmode2:$dst)>; -def : ARMPat<(pre_truncsti1 GPR:$src, GPR:$base, am2offset:$offset), - (STRB_PRE GPR:$src, GPR:$base, am2offset:$offset)>; -def : ARMPat<(post_truncsti1 GPR:$src, GPR:$base, am2offset:$offset), - (STRB_POST GPR:$src, GPR:$base, am2offset:$offset)>; - // smul* and smla* def : ARMV5TEPat<(mul (sra (shl GPR:$a, 16), 16), (sra (shl GPR:$b, 16), 16)), (SMULBB GPR:$a, GPR:$b)>; Modified: llvm/trunk/lib/Target/ARM/ARMInstrThumb.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrThumb.td?rev=46140&r1=46139&r2=46140&view=diff ============================================================================== --- llvm/trunk/lib/Target/ARM/ARMInstrThumb.td (original) +++ llvm/trunk/lib/Target/ARM/ARMInstrThumb.td Thu Jan 17 13:59:44 2008 @@ -588,10 +588,6 @@ def : ThumbPat<(extloadi8 t_addrmode_s1:$addr), (tLDRB t_addrmode_s1:$addr)>; def : ThumbPat<(extloadi16 t_addrmode_s2:$addr), (tLDRH t_addrmode_s2:$addr)>; -// truncstore i1 -> truncstore i8 -def : ThumbPat<(truncstorei1 GPR:$src, t_addrmode_s1:$dst), - (tSTRB GPR:$src, t_addrmode_s1:$dst)>; - // Large immediate handling. // Two piece imms. Modified: llvm/trunk/lib/Target/Alpha/AlphaISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Alpha/AlphaISelLowering.cpp?rev=46140&r1=46139&r2=46140&view=diff ============================================================================== --- llvm/trunk/lib/Target/Alpha/AlphaISelLowering.cpp (original) +++ llvm/trunk/lib/Target/Alpha/AlphaISelLowering.cpp Thu Jan 17 13:59:44 2008 @@ -59,8 +59,6 @@ setLoadXAction(ISD::SEXTLOAD, MVT::i8, Expand); setLoadXAction(ISD::SEXTLOAD, MVT::i16, Expand); - setStoreXAction(MVT::i1, Promote); - // setOperationAction(ISD::BRIND, MVT::Other, Expand); setOperationAction(ISD::BR_JT, MVT::Other, Expand); setOperationAction(ISD::BR_CC, MVT::Other, Expand); Modified: llvm/trunk/lib/Target/CellSPU/SPUISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/SPUISelLowering.cpp?rev=46140&r1=46139&r2=46140&view=diff ============================================================================== --- llvm/trunk/lib/Target/CellSPU/SPUISelLowering.cpp (original) +++ llvm/trunk/lib/Target/CellSPU/SPUISelLowering.cpp Thu Jan 17 13:59:44 2008 @@ -129,13 +129,21 @@ setLoadXAction(ISD::EXTLOAD, MVT::i1, Custom); setLoadXAction(ISD::SEXTLOAD, MVT::i1, Promote); setLoadXAction(ISD::ZEXTLOAD, MVT::i1, Promote); - setStoreXAction(MVT::i1, Custom); + setTruncStoreAction(MVT::i8, MVT::i1, Custom); + setTruncStoreAction(MVT::i16, MVT::i1, Custom); + setTruncStoreAction(MVT::i32, MVT::i1, Custom); + setTruncStoreAction(MVT::i64, MVT::i1, Custom); + setTruncStoreAction(MVT::i128, MVT::i1, Custom); setLoadXAction(ISD::EXTLOAD, MVT::i8, Custom); setLoadXAction(ISD::SEXTLOAD, MVT::i8, Custom); setLoadXAction(ISD::ZEXTLOAD, MVT::i8, Custom); - setStoreXAction(MVT::i8, Custom); - + setTruncStoreAction(MVT::i8 , MVT::i8, Custom); + setTruncStoreAction(MVT::i16 , MVT::i8, Custom); + setTruncStoreAction(MVT::i32 , MVT::i8, Custom); + setTruncStoreAction(MVT::i64 , MVT::i8, Custom); + setTruncStoreAction(MVT::i128, MVT::i8, Custom); + setLoadXAction(ISD::EXTLOAD, MVT::i16, Custom); setLoadXAction(ISD::SEXTLOAD, MVT::i16, Custom); setLoadXAction(ISD::ZEXTLOAD, MVT::i16, Custom); Modified: llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp?rev=46140&r1=46139&r2=46140&view=diff ============================================================================== --- llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp (original) +++ llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp Thu Jan 17 13:59:44 2008 @@ -72,9 +72,6 @@ setLoadXAction(ISD::ZEXTLOAD, MVT::i1, Promote); setLoadXAction(ISD::SEXTLOAD, MVT::i1, Promote); - // Store operations for i1 types must be promoted - setStoreXAction(MVT::i1, Promote); - // Mips does not have these NodeTypes below. setOperationAction(ISD::BR_JT, MVT::Other, Expand); setOperationAction(ISD::BR_CC, MVT::Other, Expand); Modified: llvm/trunk/lib/Target/Mips/MipsInstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsInstrInfo.td?rev=46140&r1=46139&r2=46140&view=diff ============================================================================== --- llvm/trunk/lib/Target/Mips/MipsInstrInfo.td (original) +++ llvm/trunk/lib/Target/Mips/MipsInstrInfo.td Thu Jan 17 13:59:44 2008 @@ -534,8 +534,6 @@ def : Pat<(i32 (extloadi1 addr:$src)), (LBu addr:$src)>; def : Pat<(i32 (extloadi8 addr:$src)), (LBu addr:$src)>; def : Pat<(i32 (extloadi16 addr:$src)), (LHu addr:$src)>; -def : Pat<(truncstorei1 CPURegs:$src, addr:$addr), - (SB CPURegs:$src, addr:$addr)>; // some peepholes def : Pat<(store (i32 0), addr:$dst), (SW ZERO, addr:$dst)>; Modified: llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp?rev=46140&r1=46139&r2=46140&view=diff ============================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp (original) +++ llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp Thu Jan 17 13:59:44 2008 @@ -54,10 +54,9 @@ // PowerPC has an i16 but no i8 (or i1) SEXTLOAD setLoadXAction(ISD::SEXTLOAD, MVT::i1, Expand); setLoadXAction(ISD::SEXTLOAD, MVT::i8, Expand); - - // PowerPC does not have truncstore for i1. - setStoreXAction(MVT::i1, Promote); - + + setTruncStoreAction(MVT::f64, MVT::f32, Expand); + // PowerPC has pre-inc load and store's. setIndexedLoadAction(ISD::PRE_INC, MVT::i1, Legal); setIndexedLoadAction(ISD::PRE_INC, MVT::i8, Legal); Modified: llvm/trunk/lib/Target/Sparc/SparcInstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/SparcInstrInfo.td?rev=46140&r1=46139&r2=46140&view=diff ============================================================================== --- llvm/trunk/lib/Target/Sparc/SparcInstrInfo.td (original) +++ llvm/trunk/lib/Target/Sparc/SparcInstrInfo.td Thu Jan 17 13:59:44 2008 @@ -774,9 +774,3 @@ // zextload bool -> zextload byte def : Pat<(i32 (zextloadi1 ADDRrr:$src)), (LDUBrr ADDRrr:$src)>; def : Pat<(i32 (zextloadi1 ADDRri:$src)), (LDUBri ADDRri:$src)>; - -// truncstore bool -> truncstore byte. -def : Pat<(truncstorei1 IntRegs:$src, ADDRrr:$addr), - (STBrr ADDRrr:$addr, IntRegs:$src)>; -def : Pat<(truncstorei1 IntRegs:$src, ADDRri:$addr), - (STBri ADDRri:$addr, IntRegs:$src)>; Modified: llvm/trunk/lib/Target/TargetSelectionDAG.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetSelectionDAG.td?rev=46140&r1=46139&r2=46140&view=diff ============================================================================== --- llvm/trunk/lib/Target/TargetSelectionDAG.td (original) +++ llvm/trunk/lib/Target/TargetSelectionDAG.td Thu Jan 17 13:59:44 2008 @@ -551,13 +551,6 @@ }]>; // truncstore fragments. -def truncstorei1 : PatFrag<(ops node:$val, node:$ptr), - (st node:$val, node:$ptr), [{ - if (StoreSDNode *ST = dyn_cast(N)) - return ST->isTruncatingStore() && ST->getStoredVT() == MVT::i1 && - ST->getAddressingMode() == ISD::UNINDEXED; - return false; -}]>; def truncstorei8 : PatFrag<(ops node:$val, node:$ptr), (st node:$val, node:$ptr), [{ if (StoreSDNode *ST = dyn_cast(N)) Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=46140&r1=46139&r2=46140&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Thu Jan 17 13:59:44 2008 @@ -82,6 +82,14 @@ setLoadXAction(ISD::SEXTLOAD, MVT::i1, Expand); + // We don't accept any truncstore of integer registers. + setTruncStoreAction(MVT::i64, MVT::i32, Expand); + setTruncStoreAction(MVT::i64, MVT::i16, Expand); + setTruncStoreAction(MVT::i64, MVT::i8 , Expand); + setTruncStoreAction(MVT::i32, MVT::i16, Expand); + setTruncStoreAction(MVT::i32, MVT::i8 , Expand); + setTruncStoreAction(MVT::i16, MVT::i8, Expand); + // Promote all UINT_TO_FP to larger SINT_TO_FP's, as X86 doesn't have this // operation. setOperationAction(ISD::UINT_TO_FP , MVT::i1 , Promote); @@ -638,6 +646,8 @@ AddPromotedToType (ISD::SELECT, (MVT::ValueType)VT, MVT::v2i64); } + setTruncStoreAction(MVT::f64, MVT::f32, Expand); + // Custom lower v2i64 and v2f64 selects. setOperationAction(ISD::LOAD, MVT::v2f64, Legal); setOperationAction(ISD::LOAD, MVT::v2i64, Legal); Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.td?rev=46140&r1=46139&r2=46140&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86InstrInfo.td (original) +++ llvm/trunk/lib/Target/X86/X86InstrInfo.td Thu Jan 17 13:59:44 2008 @@ -2598,11 +2598,6 @@ def : Pat<(subc GR32:$src1, i32immSExt8:$src2), (SUB32ri8 GR32:$src1, i32immSExt8:$src2)>; -def : Pat<(truncstorei1 (i8 imm:$src), addr:$dst), - (MOV8mi addr:$dst, imm:$src)>; -def : Pat<(truncstorei1 GR8:$src, addr:$dst), - (MOV8mr addr:$dst, GR8:$src)>; - // Comparisons. // TEST R,R is smaller than CMP R,0 Added: llvm/trunk/test/CodeGen/X86/storetrunc-fp.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/storetrunc-fp.ll?rev=46140&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/X86/storetrunc-fp.ll (added) +++ llvm/trunk/test/CodeGen/X86/storetrunc-fp.ll Thu Jan 17 13:59:44 2008 @@ -0,0 +1,8 @@ +; RUN: llvm-as < %s | llc -march=x86 | not grep flds + +define void @foo(x86_fp80 %a, x86_fp80 %b, float* %fp) { + %c = add x86_fp80 %a, %b + %d = fptrunc x86_fp80 %c to float + store float %d, float* %fp + ret void +} From scottm at aero.org Thu Jan 17 14:38:41 2008 From: scottm at aero.org (Scott Michel) Date: Thu, 17 Jan 2008 20:38:41 -0000 Subject: [llvm-commits] [llvm] r46142 - in /llvm/trunk: lib/Target/CellSPU/SPUISelDAGToDAG.cpp lib/Target/CellSPU/SPUISelLowering.cpp lib/Target/CellSPU/SPUInstrInfo.td lib/Target/CellSPU/SPUNodes.td test/CodeGen/CellSPU/call_indirect.ll test/CodeGen/CellSPU/mul_ops.ll test/CodeGen/CellSPU/struct_1.ll Message-ID: <200801172038.m0HKcg9F012134@zion.cs.uiuc.edu> Author: pingbak Date: Thu Jan 17 14:38:41 2008 New Revision: 46142 URL: http://llvm.org/viewvc/llvm-project?rev=46142&view=rev Log: Forward progress: crtbegin.c now compiles successfully! Fixed CellSPU's A-form (local store) address mode, so that all globals, externals, constant pool and jump table symbols are now wrapped within a SPUISD::AFormAddr pseudo-instruction. This now identifies all local store memory addresses, although it requires a bit of legerdemain during instruction selection to properly select loads to and stores from local store, properly generating "LQA" instructions. Also added mul_ops.ll test harness for exercising integer multiplication. Added: llvm/trunk/test/CodeGen/CellSPU/mul_ops.ll Modified: llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp llvm/trunk/lib/Target/CellSPU/SPUISelLowering.cpp llvm/trunk/lib/Target/CellSPU/SPUInstrInfo.td llvm/trunk/lib/Target/CellSPU/SPUNodes.td llvm/trunk/test/CodeGen/CellSPU/call_indirect.ll llvm/trunk/test/CodeGen/CellSPU/struct_1.ll Modified: llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp?rev=46142&r1=46141&r2=46142&view=diff ============================================================================== --- llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp (original) +++ llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp Thu Jan 17 14:38:41 2008 @@ -159,16 +159,38 @@ int prefslot_byte; /// Byte offset of the "preferred" slot unsigned brcc_eq_ins; /// br_cc equal instruction unsigned brcc_neq_ins; /// br_cc not equal instruction + unsigned load_aform; /// A-form load instruction for this VT + unsigned store_aform; /// A-form store instruction for this VT }; const valtype_map_s valtype_map[] = { - { MVT::i1, 0, 3, 0, 0 }, - { MVT::i8, 0, 3, 0, 0 }, - { MVT::i16, SPU::ORHIr16, 2, SPU::BRHZ, SPU::BRHNZ }, - { MVT::i32, SPU::ORIr32, 0, SPU::BRZ, SPU::BRNZ }, - { MVT::i64, SPU::ORIr64, 0, 0, 0 }, - { MVT::f32, 0, 0, 0, 0 }, - { MVT::f64, 0, 0, 0, 0 } + { MVT::i1, 0, 3, 0, 0, 0, + 0 }, + { MVT::i8, SPU::ORBIr8, 3, 0, 0, SPU::LQAr8, + SPU::STQAr8 }, + { MVT::i16, SPU::ORHIr16, 2, SPU::BRHZ, SPU::BRHNZ, SPU::LQAr16, + SPU::STQAr16 }, + { MVT::i32, SPU::ORIr32, 0, SPU::BRZ, SPU::BRNZ, SPU::LQAr32, + SPU::STQAr32 }, + { MVT::i64, SPU::ORIr64, 0, 0, 0, SPU::LQAr64, + SPU::STQAr64 }, + { MVT::f32, 0, 0, 0, 0, SPU::LQAf32, + SPU::STQAf32 }, + { MVT::f64, 0, 0, 0, 0, SPU::LQAf64, + SPU::STQAf64 }, + // vector types... (sigh!) + { MVT::v16i8, 0, 0, 0, 0, SPU::LQAv16i8, + SPU::STQAv16i8 }, + { MVT::v8i16, 0, 0, 0, 0, SPU::LQAv8i16, + SPU::STQAv8i16 }, + { MVT::v4i32, 0, 0, 0, 0, SPU::LQAv4i32, + SPU::STQAv4i32 }, + { MVT::v2i64, 0, 0, 0, 0, SPU::LQAv2i64, + SPU::STQAv2i64 }, + { MVT::v4f32, 0, 0, 0, 0, SPU::LQAv4f32, + SPU::STQAv4f32 }, + { MVT::v2f64, 0, 0, 0, 0, SPU::LQAv2f64, + SPU::STQAv2f64 }, }; const size_t n_valtype_map = sizeof(valtype_map) / sizeof(valtype_map[0]); @@ -465,14 +487,6 @@ int32_t offset = (int32_t) CN->getSignExtended(); unsigned Opc0 = Op0.getOpcode(); - if ((offset & 0xf) != 0) { - // Unaligned offset: punt and let X-form address handle it. - // NOTE: This really doesn't have to be strictly 16-byte aligned, - // since the load/store quadword instructions will implicitly - // zero the lower 4 bits of the resulting address. - return false; - } - if (Opc0 == ISD::FrameIndex) { FrameIndexSDNode *FI = dyn_cast(Op0); DEBUG(cerr << "SelectDFormAddr: ISD::ADD offset = " << offset @@ -506,7 +520,8 @@ const SDOperand Op0 = N.getOperand(0); // Frame index/base const SDOperand Op1 = N.getOperand(1); // Offset within base - if (Op0.getOpcode() != SPUISD::XFormAddr) { + if (Op0.getOpcode() == ISD::Constant + || Op0.getOpcode() == ISD::TargetConstant) { ConstantSDNode *CN = cast(Op1); assert(CN != 0 && "SelectDFormAddr/SPUISD::DFormAddr expecting constant"); Base = CurDAG->getTargetConstant(CN->getValue(), PtrTy); @@ -523,6 +538,11 @@ Index = CurDAG->getTargetFrameIndex(FI->getIndex(), PtrTy); return true; } + } else if (Opc == SPUISD::LDRESULT) { + // It's a load result dereference + Base = CurDAG->getTargetConstant(0, PtrTy); + Index = N.getOperand(0); + return true; } return false; @@ -550,24 +570,9 @@ if (Opc == ISD::ADD) { SDOperand N1 = N.getOperand(0); SDOperand N2 = N.getOperand(1); - unsigned N1Opc = N1.getOpcode(); - unsigned N2Opc = N2.getOpcode(); - - if ((N1Opc == SPUISD::Hi && N2Opc == SPUISD::Lo) - || (N1Opc == SPUISD::Lo && N2Opc == SPUISD::Hi) - || (N1Opc == SPUISD::XFormAddr)) { - Base = N.getOperand(0); - Index = N.getOperand(1); - return true; - } else { - cerr << "SelectXFormAddr: Unhandled ADD operands:\n"; - N1.Val->dump(); - cerr << "\n"; - N2.Val->dump(); - cerr << "\n"; - abort(); - /*UNREACHED*/ - } + Base = N.getOperand(0); + Index = N.getOperand(1); + return true; } else if (Opc == SPUISD::XFormAddr) { Base = N; Index = N.getOperand(1); @@ -608,6 +613,62 @@ return false; } +//! Emit load for A-form addresses +/* + */ +SDNode * +Emit_LOAD_AFormAddr(SDOperand Op, SelectionDAG &CurDAG, SPUDAGToDAGISel &ISel) +{ + SDNode *Result; + MVT::ValueType OpVT = Op.getValueType(); + SDOperand Chain = Op.getOperand(0); + SDOperand Ptr = Op.getOperand(1); + SDOperand PtrArg = Ptr.getOperand(0); + SDOperand PtrOffs = Ptr.getOperand(1); + const valtype_map_s *vtm = getValueTypeMapEntry(OpVT); + + if (PtrOffs.getOpcode() == ISD::Constant) { + ConstantSDNode *CN = cast(PtrOffs); + MVT::ValueType PVT = PtrOffs.getValueType(); + PtrOffs = CurDAG.getTargetConstant(CN->getValue(), PVT); + } + ISel.AddToISelQueue(PtrArg); + ISel.AddToISelQueue(PtrOffs); + ISel.AddToISelQueue(Chain); + Result = CurDAG.getTargetNode(vtm->load_aform, OpVT, MVT::Other, PtrArg, PtrOffs, Chain); + Chain = SDOperand(Result, 1); + return Result; +} + +//! Emit store for A-form addresses +/* + */ +SDNode * +Emit_STORE_AFormAddr(SDOperand Op, SelectionDAG &CurDAG, SPUDAGToDAGISel &ISel) +{ + SDNode *Result; + SDOperand Chain = Op.getOperand(0); + SDOperand Val = Op.getOperand(1); + SDOperand Ptr = Op.getOperand(2); + SDOperand PtrArg = Ptr.getOperand(0); + SDOperand PtrOffs = Ptr.getOperand(1); + const valtype_map_s *vtm = getValueTypeMapEntry(Val.getValueType()); + + if (PtrOffs.getOpcode() == ISD::Constant) { + ConstantSDNode *CN = cast(PtrOffs); + MVT::ValueType PVT = PtrOffs.getValueType(); + PtrOffs = CurDAG.getTargetConstant(CN->getValue(), PVT); + } + ISel.AddToISelQueue(Val); + ISel.AddToISelQueue(PtrArg); + ISel.AddToISelQueue(PtrOffs); + ISel.AddToISelQueue(Chain); + SDOperand Ops[4] = { Val, PtrArg, PtrOffs, Chain }; + Result = CurDAG.getTargetNode(vtm->store_aform, MVT::Other, Ops, 4); + Chain = SDOperand(Result, 1); + return Result; +} + //! Convert the operand from a target-independent to a target-specific node /*! */ @@ -615,6 +676,10 @@ SPUDAGToDAGISel::Select(SDOperand Op) { SDNode *N = Op.Val; unsigned Opc = N->getOpcode(); + int n_ops = -1; + unsigned NewOpc; + MVT::ValueType OpVT = Op.getValueType(); + SDOperand Ops[8]; if (Opc >= ISD::BUILTIN_OP_END && Opc < SPUISD::FIRST_NUMBER) { return NULL; // Already selected. @@ -626,9 +691,32 @@ SDOperand TFI = CurDAG->getTargetFrameIndex(FI, PtrVT); DEBUG(cerr << "SPUDAGToDAGISel: Replacing FrameIndex with AI32 , 0\n"); - if (N->hasOneUse()) - return CurDAG->SelectNodeTo(N, SPU::AIr32, Op.getValueType(), TFI, Zero); - CurDAG->getTargetNode(SPU::AIr32, Op.getValueType(), TFI, Zero); + NewOpc = SPU::AIr32; + Ops[0] = TFI; + Ops[1] = Zero; + n_ops = 2; + } else if (Opc == ISD::LOAD + && Op.getOperand(1).getOpcode() == SPUISD::AFormAddr) { + return Emit_LOAD_AFormAddr(Op, *CurDAG, *this); + } else if (Opc == ISD::STORE + && Op.getOperand(2).getOpcode() == SPUISD::AFormAddr) { + return Emit_STORE_AFormAddr(Op, *CurDAG, *this); + } else if (Opc == ISD::ZERO_EXTEND) { + // (zero_extend:i16 (and:i8 , )) + const SDOperand &Op1 = N->getOperand(0); + + if (Op.getValueType() == MVT::i16 && Op1.getValueType() == MVT::i8) { + if (Op1.getOpcode() == ISD::AND) { + // Fold this into a single ANDHI. This is often seen in expansions of i1 + // to i8, then i8 to i16 in logical/branching operations. + DEBUG(cerr << "CellSPU: Coalescing (zero_extend:i16 (and:i8 " + ", ))\n"); + NewOpc = SPU::ANDHI1To2; + Ops[0] = Op1.getOperand(0); + Ops[1] = Op1.getOperand(1); + n_ops = 2; + } + } } else if (Opc == SPUISD::LDRESULT) { // Custom select instructions for LDRESULT unsigned VT = N->getValueType(0); @@ -650,20 +738,54 @@ Opc = vtm->ldresult_ins; AddToISelQueue(Zero); - Result = CurDAG->SelectNodeTo(N, Opc, VT, MVT::Other, Arg, Zero, Chain); + Result = CurDAG->getTargetNode(Opc, VT, MVT::Other, Arg, Zero, Chain); } else { - Result = - CurDAG->SelectNodeTo(N, (VT == MVT::f32 ? SPU::ORf32 : SPU::ORf64), - MVT::Other, Arg, Arg, Chain); + Opc = (VT == MVT::f32 ? SPU::ORf32 : SPU::ORf64); + Result = CurDAG->getTargetNode(Opc, MVT::Other, Arg, Arg, Chain); } Chain = SDOperand(Result, 1); AddToISelQueue(Chain); return Result; + } else if (Opc == SPUISD::XFormAddr) { + SDOperand Op0 = Op.getOperand(0); + if (Op0.getOpcode() == SPUISD::LDRESULT + || Op0.getOpcode() == SPUISD::AFormAddr) { + // (XFormAddr (LDRESULT|AFormAddr, imm)) + SDOperand Op1 = Op.getOperand(1); + MVT::ValueType VT = Op.getValueType(); + + DEBUG(cerr << "CellSPU: XFormAddr(" + << (Op0.getOpcode() == SPUISD::LDRESULT + ? "LDRESULT" + : "AFormAddr") + << ", imm):\nOp0 = "); + DEBUG(Op.getOperand(0).Val->dump(CurDAG)); + DEBUG(cerr << "\nOp1 = "); + DEBUG(Op.getOperand(1).Val->dump(CurDAG)); + DEBUG(cerr << "\n"); + + if (Op1.getOpcode() == ISD::Constant) { + ConstantSDNode *CN = cast(Op1); + Op1 = CurDAG->getTargetConstant(CN->getValue(), VT); + } + AddToISelQueue(Op0); + AddToISelQueue(Op1); + NewOpc = SPU::AIr32; + Ops[0] = Op0; + Ops[1] = Op1; + n_ops = 2; + } } - return SelectCode(Op); + if (n_ops > 0) { + if (N->hasOneUse()) + return CurDAG->SelectNodeTo(N, NewOpc, OpVT, Ops, n_ops); + else + return CurDAG->getTargetNode(NewOpc, OpVT, Ops, n_ops); + } else + return SelectCode(Op); } /// createPPCISelDag - This pass converts a legalized DAG into a Modified: llvm/trunk/lib/Target/CellSPU/SPUISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/SPUISelLowering.cpp?rev=46142&r1=46141&r2=46142&view=diff ============================================================================== --- llvm/trunk/lib/Target/CellSPU/SPUISelLowering.cpp (original) +++ llvm/trunk/lib/Target/CellSPU/SPUISelLowering.cpp Thu Jan 17 14:38:41 2008 @@ -100,6 +100,14 @@ || Opc == ISD::TargetExternalSymbol || Opc == SPUISD::AFormAddr); } + + //! Predicate that returns true if the operand is an indirect target + bool isIndirectOperand(const SDOperand &Op) + { + const unsigned Opc = Op.getOpcode(); + return (Opc == ISD::Register + || Opc == SPUISD::LDRESULT); + } } SPUTargetLowering::SPUTargetLowering(SPUTargetMachine &TM) @@ -126,7 +134,7 @@ addRegisterClass(MVT::i128, SPU::GPRCRegisterClass); // SPU has no sign or zero extended loads for i1, i8, i16: - setLoadXAction(ISD::EXTLOAD, MVT::i1, Custom); + setLoadXAction(ISD::EXTLOAD, MVT::i1, Promote); setLoadXAction(ISD::SEXTLOAD, MVT::i1, Promote); setLoadXAction(ISD::ZEXTLOAD, MVT::i1, Promote); setTruncStoreAction(MVT::i8, MVT::i1, Custom); @@ -160,10 +168,9 @@ setOperationAction(ISD::STORE, sctype, Custom); } - // SPU supports BRCOND, although DAGCombine will convert BRCONDs - // into BR_CCs. BR_CC instructions are custom selected in - // SPUDAGToDAGISel. - setOperationAction(ISD::BRCOND, MVT::Other, Legal); + // Custom lower BRCOND for i1, i8 to "promote" the result to + // i32 and i16, respectively. + setOperationAction(ISD::BRCOND, MVT::Other, Custom); // Expand the jumptable branches setOperationAction(ISD::BR_JT, MVT::Other, Expand); @@ -472,7 +479,7 @@ SDOperand Op1 = basePtr.Val->getOperand(1); if (Op1.getOpcode() == ISD::Constant || Op1.getOpcode() == ISD::TargetConstant) { - const ConstantSDNode *CN = cast(basePtr.Val->getOperand(1)); + const ConstantSDNode *CN = cast(basePtr.getOperand(1)); alignOffs = (int) CN->getValue(); prefSlotOffs = (int) (alignOffs & 0xf); @@ -482,15 +489,13 @@ prefSlotOffs -= vtm->prefslot_byte; basePtr = basePtr.getOperand(0); - // Modify alignment, since the ADD is likely from getElementPtr: - switch (basePtr.getOpcode()) { - case ISD::GlobalAddress: - case ISD::TargetGlobalAddress: { - GlobalAddressSDNode *GN = cast(basePtr.Val); - const GlobalValue *GV = GN->getGlobal(); - alignment = GV->getAlignment(); - break; - } + // Loading from memory, can we adjust alignment? + if (basePtr.getOpcode() == SPUISD::AFormAddr) { + SDOperand APtr = basePtr.getOperand(0); + if (APtr.getOpcode() == ISD::TargetGlobalAddress) { + GlobalAddressSDNode *GSDN = cast(APtr); + alignment = GSDN->getGlobal()->getAlignment(); + } } } else { alignOffs = 0; @@ -504,15 +509,9 @@ if (alignment == 16) { // Realign the base pointer as a D-Form address: if (!isMemoryOperand(basePtr) || (alignOffs & ~0xf) != 0) { - if (isMemoryOperand(basePtr)) { - SDOperand Zero = DAG.getConstant(0, PtrVT); - unsigned Opc = (!ST->usingLargeMem() - ? SPUISD::AFormAddr - : SPUISD::XFormAddr); - basePtr = DAG.getNode(Opc, PtrVT, basePtr, Zero); - } - basePtr = DAG.getNode(SPUISD::DFormAddr, PtrVT, - basePtr, DAG.getConstant((alignOffs & ~0xf), PtrVT)); + basePtr = DAG.getNode(ISD::ADD, PtrVT, + basePtr, + DAG.getConstant((alignOffs & ~0xf), PtrVT)); } // Emit the vector load: @@ -524,7 +523,7 @@ // Unaligned load or we're using the "large memory" model, which means that // we have to be very pessimistic: - if (isMemoryOperand(basePtr)) { + if (isMemoryOperand(basePtr) || isIndirectOperand(basePtr)) { basePtr = DAG.getNode(SPUISD::XFormAddr, PtrVT, basePtr, DAG.getConstant(0, PtrVT)); } @@ -551,13 +550,6 @@ unsigned alignment = LN->getAlignment(); SDOperand Ops[8]; - // For an extending load of an i1 variable, just call it i8 (or whatever we - // were passed) and make it zero-extended: - if (VT == MVT::i1) { - VT = OpVT; - ExtType = ISD::ZEXTLOAD; - } - switch (LN->getAddressingMode()) { case ISD::UNINDEXED: { int offset, rotamt; @@ -575,15 +567,13 @@ if (rotamt != 0 || !was16aligned) { SDVTList vecvts = DAG.getVTList(MVT::v16i8, MVT::Other); + Ops[0] = the_chain; + Ops[1] = result; if (was16aligned) { - Ops[0] = the_chain; - Ops[1] = result; Ops[2] = DAG.getConstant(rotamt, MVT::i16); } else { MVT::ValueType PtrVT = DAG.getTargetLoweringInfo().getPointerTy(); LoadSDNode *LN1 = cast(result); - Ops[0] = the_chain; - Ops[1] = result; Ops[2] = DAG.getNode(ISD::ADD, PtrVT, LN1->getBasePtr(), DAG.getConstant(rotamt, PtrVT)); } @@ -628,9 +618,14 @@ } SDVTList retvts = DAG.getVTList(OpVT, MVT::Other); - SDOperand retops[2] = { result, the_chain }; + SDOperand retops[3] = { + result, + the_chain, + DAG.getConstant(alignment, MVT::i32) + }; - result = DAG.getNode(SPUISD::LDRESULT, retvts, retops, 2); + result = DAG.getNode(SPUISD::LDRESULT, retvts, + retops, sizeof(retops) / sizeof(retops[0])); return result; } case ISD::PRE_INC: @@ -712,6 +707,7 @@ DEBUG(cerr << "\n"); if (basePtr.getOpcode() == SPUISD::DFormAddr) { + // Hmmmm... do we ever actually hit this code? insertEltPtr = DAG.getNode(SPUISD::DFormAddr, PtrVT, basePtr.getOperand(0), insertEltOffs); @@ -720,6 +716,8 @@ && basePtr.getOperand(0).getOpcode() == SPUISD::XFormAddr)) { insertEltPtr = basePtr; } else { + // $sp is always aligned, so use it instead of potentially loading an + // address into a new register: insertEltPtr = DAG.getNode(SPUISD::DFormAddr, PtrVT, DAG.getRegister(SPU::R1, PtrVT), insertEltOffs); @@ -766,10 +764,9 @@ if (TM.getRelocationModel() == Reloc::Static) { if (!ST->usingLargeMem()) { // Just return the SDOperand with the constant pool address in it. - return CPI; + return DAG.getNode(SPUISD::AFormAddr, PtrVT, CPI, Zero); } else { #if 1 - // Generate hi/lo address pair SDOperand Hi = DAG.getNode(SPUISD::Hi, PtrVT, CPI, Zero); SDOperand Lo = DAG.getNode(SPUISD::Lo, PtrVT, CPI, Zero); @@ -795,7 +792,7 @@ if (TM.getRelocationModel() == Reloc::Static) { return (!ST->usingLargeMem() - ? JTI + ? DAG.getNode(SPUISD::AFormAddr, PtrVT, JTI, Zero) : DAG.getNode(SPUISD::XFormAddr, PtrVT, JTI, Zero)); } @@ -815,7 +812,7 @@ if (TM.getRelocationModel() == Reloc::Static) { return (!ST->usingLargeMem() - ? GA + ? DAG.getNode(SPUISD::AFormAddr, PtrVT, GA, Zero) : DAG.getNode(SPUISD::XFormAddr, PtrVT, GA, Zero)); } else { cerr << "LowerGlobalAddress: Relocation model other than static not " @@ -880,6 +877,24 @@ return SDOperand(); } +//! Lower MVT::i1, MVT::i8 brcond to a promoted type (MVT::i32, MVT::i16) +static SDOperand +LowerBRCOND(SDOperand Op, SelectionDAG &DAG) +{ + SDOperand Cond = Op.getOperand(1); + MVT::ValueType CondVT = Cond.getValueType(); + MVT::ValueType CondNVT; + + if (CondVT == MVT::i1 || CondVT == MVT::i8) { + CondNVT = (CondVT == MVT::i1 ? MVT::i32 : MVT::i16); + return DAG.getNode(ISD::BRCOND, Op.getValueType(), + Op.getOperand(0), + DAG.getNode(ISD::ZERO_EXTEND, CondNVT, Op.getOperand(1)), + Op.getOperand(2)); + } else + return SDOperand(); // Unchanged +} + static SDOperand LowerFORMAL_ARGUMENTS(SDOperand Op, SelectionDAG &DAG, int &VarArgsFrameIndex) { @@ -2458,8 +2473,10 @@ return LowerConstant(Op, DAG); case ISD::ConstantFP: return LowerConstantFP(Op, DAG); + case ISD::BRCOND: + return LowerBRCOND(Op, DAG); case ISD::FORMAL_ARGUMENTS: - return LowerFORMAL_ARGUMENTS(Op, DAG, VarArgsFrameIndex); + return LowerFORMAL_ARGUMENTS(Op, DAG, VarArgsFrameIndex); case ISD::CALL: return LowerCALL(Op, DAG, SPUTM.getSubtargetImpl()); case ISD::RET: @@ -2537,48 +2554,16 @@ #if 0 TargetMachine &TM = getTargetMachine(); SelectionDAG &DAG = DCI.DAG; -#endif SDOperand N0 = N->getOperand(0); // everything has at least one operand switch (N->getOpcode()) { default: break; - - // Look for obvious optimizations for shift left: - // a) Replace 0 << V with 0 - // b) Replace V << 0 with V - // - // N.B: llvm will generate an undef node if the shift amount is greater than - // 15 (e.g.: V << 16), which will naturally trigger an assert. - case SPU::SHLIr32: - case SPU::SHLHIr16: - case SPU::SHLQBIIvec: - case SPU::ROTHIr16: - case SPU::ROTHIr16_i32: - case SPU::ROTIr32: - case SPU::ROTIr32_i16: - case SPU::ROTQBYIvec: - case SPU::ROTQBYBIvec: - case SPU::ROTQBIIvec: - case SPU::ROTHMIr16: - case SPU::ROTMIr32: - case SPU::ROTQMBYIvec: { - if (N0.getOpcode() == ISD::Constant) { - if (ConstantSDNode *C = cast(N0)) { - if (C->getValue() == 0) // 0 << V -> 0. - return N0; - } - } - SDOperand N1 = N->getOperand(1); - if (N1.getOpcode() == ISD::Constant) { - if (ConstantSDNode *C = cast(N1)) { - if (C->getValue() == 0) // V << 0 -> V - return N1; - } - } - break; - } + // Do something creative here for ISD nodes that can be coalesced in unique + // ways. } +#endif + // Otherwise, return unchanged. return SDOperand(); } Modified: llvm/trunk/lib/Target/CellSPU/SPUInstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/SPUInstrInfo.td?rev=46142&r1=46141&r2=46142&view=diff ============================================================================== --- llvm/trunk/lib/Target/CellSPU/SPUInstrInfo.td (original) +++ llvm/trunk/lib/Target/CellSPU/SPUInstrInfo.td Thu Jan 17 14:38:41 2008 @@ -1359,6 +1359,9 @@ def : Pat<(SPUextract_elt0 (v16i8 VECREG:$rA)), (ORi8_v16i8 VECREG:$rA, VECREG:$rA)>; +def : Pat<(SPUextract_elt0_chained (v16i8 VECREG:$rA)), + (ORi8_v16i8 VECREG:$rA, VECREG:$rA)>; + def ORi16_v8i16: RRForm<0b10000010000, (outs R16C:$rT), (ins VECREG:$rA, VECREG:$rB), "or\t$rT, $rA, $rB", IntegerOp, @@ -2868,6 +2871,9 @@ */ } +//===----------------------------------------------------------------------===// +// brcond predicates: +//===----------------------------------------------------------------------===// def : Pat<(brcond (i16 (seteq R16C:$rA, 0)), bb:$dest), (BRHZ R16C:$rA, bb:$dest)>; def : Pat<(brcond (i16 (setne R16C:$rA, 0)), bb:$dest), @@ -2876,7 +2882,7 @@ def : Pat<(brcond (i32 (seteq R32C:$rA, 0)), bb:$dest), (BRZ R32C:$rA, bb:$dest)>; def : Pat<(brcond (i32 (setne R32C:$rA, 0)), bb:$dest), - (BRZ R32C:$rA, bb:$dest)>; + (BRNZ R32C:$rA, bb:$dest)>; let isTerminator = 1, isBarrier = 1 in { let isReturn = 1 in { @@ -2886,23 +2892,6 @@ } //===----------------------------------------------------------------------===// -// Various brcond predicates: -//===----------------------------------------------------------------------===// -/* -def : Pat<(brcond (i32 (seteq R32C:$rA, 0)), bb:$dest), - (BRZ R32C:$rA, bb:$dest)>; - -def : Pat<(brcond (i32 (seteq R32C:$rA, R32C:$rB)), bb:$dest), - (BRNZ (CEQr32 R32C:$rA, R32C:$rB), bb:$dest)>; - -def : Pat<(brcond (i16 (seteq R16C:$rA, i16ImmSExt10:$val)), bb:$dest), - (BRHNZ (CEQHIr16 R16C:$rA, i16ImmSExt10:$val), bb:$dest)>; - -def : Pat<(brcond (i16 (seteq R16C:$rA, R16C:$rB)), bb:$dest), - (BRHNZ (CEQHr16 R16C:$rA, R16C:$rB), bb:$dest)>; -*/ - -//===----------------------------------------------------------------------===// // Single precision floating point instructions //===----------------------------------------------------------------------===// @@ -3475,21 +3464,20 @@ // low parts in order to load them into a register. //===----------------------------------------------------------------------===// -def : Pat<(SPUhi tglobaladdr:$in, 0), (ILHUhi tglobaladdr:$in)>; -def : Pat<(SPUlo tglobaladdr:$in, 0), (ILAlo tglobaladdr:$in)>; def : Pat<(SPUaform tglobaladdr:$in, 0), (ILAlsa tglobaladdr:$in)>; def : Pat<(SPUxform tglobaladdr:$in, 0), (IOHLlo (ILHUhi tglobaladdr:$in), tglobaladdr:$in)>; -def : Pat<(SPUhi tjumptable:$in, 0), (ILHUhi tjumptable:$in)>; -def : Pat<(SPUlo tjumptable:$in, 0), (ILAlo tjumptable:$in)>; + def : Pat<(SPUaform tjumptable:$in, 0), (ILAlsa tjumptable:$in)>; def : Pat<(SPUxform tjumptable:$in, 0), (IOHLlo (ILHUhi tjumptable:$in), tjumptable:$in)>; -def : Pat<(SPUhi tconstpool:$in , 0), (ILHUhi tconstpool:$in)>; -def : Pat<(SPUlo tconstpool:$in , 0), (ILAlo tconstpool:$in)>; -def : Pat<(SPUaform tconstpool:$in, 0), (ILAlsa tconstpool:$in)>; -/* def : Pat<(SPUxform tconstpool:$in, 0), - (IOHLlo (ILHUhi tconstpool:$in), tconstpool:$in)>; */ + +def : Pat<(SPUhi tconstpool:$in , 0), (ILHUhi tconstpool:$in)>; +def : Pat<(SPUlo tconstpool:$in , 0), (ILAlsa tconstpool:$in)>; +def : Pat<(SPUaform tconstpool:$in, 0), (ILAlsa tconstpool:$in)>; +// tblgen bug prevents this from working. +// def : Pat<(SPUxform tconstpool:$in, 0), +// (IOHLlo (ILHUhi tconstpool:$in), tconstpool:$in)>; // Instrinsics: include "CellSDKIntrinsics.td" Modified: llvm/trunk/lib/Target/CellSPU/SPUNodes.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/SPUNodes.td?rev=46142&r1=46141&r2=46142&view=diff ============================================================================== --- llvm/trunk/lib/Target/CellSPU/SPUNodes.td (original) +++ llvm/trunk/lib/Target/CellSPU/SPUNodes.td Thu Jan 17 14:38:41 2008 @@ -195,6 +195,10 @@ // X-Form "$reg($reg)" addresses def SPUxform : SDNode<"SPUISD::XFormAddr", SDTIntBinOp, []>; +// Load result node +def SPUload_result : SDTypeProfile<1, 3, []>; +def SPUldresult : SDNode<"SPUISD::LDRESULT", SPUload_result, [SDNPHasChain]>; + // SPU 32-bit sign-extension to 64-bits def SPUsext32_to_64: SDNode<"SPUISD::SEXT32TO64", SDTIntExtendOp, []>; Modified: llvm/trunk/test/CodeGen/CellSPU/call_indirect.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/call_indirect.ll?rev=46142&r1=46141&r2=46142&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/call_indirect.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/call_indirect.ll Thu Jan 17 14:38:41 2008 @@ -1,18 +1,18 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s ; RUN: llvm-as -o - %s | llc -march=cellspu -mattr=large_mem > %t2.s -; RUN: grep bisl %t1.s | count 6 && +; RUN: grep bisl %t1.s | count 7 && ; RUN: grep ila %t1.s | count 1 && ; RUN: grep rotqbyi %t1.s | count 4 && -; RUN: grep lqa %t1.s | count 4 && +; RUN: grep lqa %t1.s | count 5 && ; RUN: grep lqd %t1.s | count 6 && ; RUN: grep dispatch_tab %t1.s | count 10 -; RUN: grep bisl %t2.s | count 6 && -; RUN: grep ilhu %t2.s | count 1 && -; RUN: grep iohl %t2.s | count 1 && -; RUN: grep rotqby %t2.s | count 5 && +; RUN: grep bisl %t2.s | count 7 && +; RUN: grep ilhu %t2.s | count 2 && +; RUN: grep iohl %t2.s | count 2 && +; RUN: grep rotqby %t2.s | count 6 && ; RUN: grep lqd %t2.s | count 12 && -; RUN: grep lqx %t2.s | count 6 && -; RUN: grep il %t2.s | count 7 && +; RUN: grep lqx %t2.s | count 8 && +; RUN: grep il %t2.s | count 9 && ; RUN: grep ai %t2.s | count 5 && ; RUN: grep dispatch_tab %t2.s | count 7 @@ -38,3 +38,13 @@ tail call void %tmp2.5( i32 %i_arg, float %f_arg ) ret void } + + at ptr_list = internal global [1 x void ()*] [ void ()* inttoptr (i64 4294967295 to void ()*) ], align 4 + at ptr.a = internal global void ()** getelementptr ([1 x void ()*]* @ptr_list, i32 0, i32 1), align 16 + +define void @double_indirect_call() { + %a = load void ()*** @ptr.a, align 16 + %b = load void ()** %a, align 4 + tail call void %b() + ret void +} Added: llvm/trunk/test/CodeGen/CellSPU/mul_ops.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/mul_ops.ll?rev=46142&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/mul_ops.ll (added) +++ llvm/trunk/test/CodeGen/CellSPU/mul_ops.ll Thu Jan 17 14:38:41 2008 @@ -0,0 +1,90 @@ +; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s +; RUN: grep mpy %t1.s | count 44 && +; RUN: grep mpyu %t1.s | count 4 && +; RUN: grep mpyh %t1.s | count 10 && +; RUN: grep mpyhh %t1.s | count 2 && +; RUN: grep rotma %t1.s | count 12 && +; RUN: grep rotmahi %t1.s | count 4 && +; RUN: grep and %t1.s | count 2 && +; RUN: grep selb %t1.s | count 6 && +; RUN: grep fsmbi %t1.s | count 4 && +; RUN: grep shli %t1.s | count 4 && +; RUN: grep shlhi %t1.s | count 4 && +; RUN: grep ila %t1.s | count 2 && +; RUN: grep xsbh %t1.s | count 8 && +; RUN: grep xshw %t1.s | count 4 +target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128" +target triple = "spu" + +; 32-bit multiply instruction generation: +define <4 x i32> @mpy_v4i32_1(<4 x i32> %arg1, <4 x i32> %arg2) { +entry: + %A = mul <4 x i32> %arg1, %arg2 + ret <4 x i32> %A +} + +define <4 x i32> @mpy_v4i32_2(<4 x i32> %arg1, <4 x i32> %arg2) { +entry: + %A = mul <4 x i32> %arg2, %arg1 + ret <4 x i32> %A +} + +define <8 x i16> @mpy_v8i16_1(<8 x i16> %arg1, <8 x i16> %arg2) { +entry: + %A = mul <8 x i16> %arg1, %arg2 + ret <8 x i16> %A +} + +define <8 x i16> @mpy_v8i16_2(<8 x i16> %arg1, <8 x i16> %arg2) { +entry: + %A = mul <8 x i16> %arg2, %arg1 + ret <8 x i16> %A +} + +define <16 x i8> @mul_v16i8_1(<16 x i8> %arg1, <16 x i8> %arg2) { +entry: + %A = mul <16 x i8> %arg2, %arg1 + ret <16 x i8> %A +} + +define <16 x i8> @mul_v16i8_2(<16 x i8> %arg1, <16 x i8> %arg2) { +entry: + %A = mul <16 x i8> %arg1, %arg2 + ret <16 x i8> %A +} + +define i32 @mul_i32_1(i32 %arg1, i32 %arg2) { +entry: + %A = mul i32 %arg2, %arg1 + ret i32 %A +} + +define i32 @mul_i32_2(i32 %arg1, i32 %arg2) { +entry: + %A = mul i32 %arg1, %arg2 + ret i32 %A +} + +define i16 @mul_i16_1(i16 %arg1, i16 %arg2) { +entry: + %A = mul i16 %arg2, %arg1 + ret i16 %A +} + +define i16 @mul_i16_2(i16 %arg1, i16 %arg2) { +entry: + %A = mul i16 %arg1, %arg2 + ret i16 %A +} + +define i8 @mul_i8_1(i8 %arg1, i8 %arg2) { +entry: + %A = mul i8 %arg2, %arg1 + ret i8 %A +} + +define i8 @mul_i8_2(i8 %arg1, i8 %arg2) { +entry: + %A = mul i8 %arg1, %arg2 + ret i8 %A +} Modified: llvm/trunk/test/CodeGen/CellSPU/struct_1.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/struct_1.ll?rev=46142&r1=46141&r2=46142&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/struct_1.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/struct_1.ll Thu Jan 17 14:38:41 2008 @@ -16,9 +16,10 @@ ; RUN: grep rotqbyi %t2.s | count 5 && ; RUN: grep xshw %t2.s | count 1 && ; RUN: grep andi %t2.s | count 4 && -; RUN: grep cbd %t2.s | count 3 && -; RUN: grep chd %t2.s | count 1 && -; RUN: grep cwd %t2.s | count 3 && +; RUN: grep cbx %t2.s | count 3 && +; RUN: grep chx %t2.s | count 1 && +; RUN: grep cwx %t2.s | count 1 && +; RUN: grep cwd %t2.s | count 2 && ; RUN: grep shufb %t2.s | count 7 && ; RUN: grep stqx %t2.s | count 7 From lattner at apple.com Thu Jan 17 15:51:57 2008 From: lattner at apple.com (Tanya Lattner) Date: Thu, 17 Jan 2008 13:51:57 -0800 Subject: [llvm-commits] [llvm] r46142 - in /llvm/trunk: lib/Target/CellSPU/SPUISelDAGToDAG.cpp lib/Target/CellSPU/SPUISelLowering.cpp lib/Target/CellSPU/SPUInstrInfo.td lib/Target/CellSPU/SPUNodes.td test/CodeGen/CellSPU/call_indirect.ll test/CodeGen/CellSPU/mul_ops.ll test/CodeGen/CellSPU/struct_1.ll In-Reply-To: <200801172038.m0HKcg9F012134@zion.cs.uiuc.edu> References: <200801172038.m0HKcg9F012134@zion.cs.uiuc.edu> Message-ID: You don't need the && on the end of each line for the test case. -Tanya On Jan 17, 2008, at 12:38 PM, Scott Michel wrote: > Author: pingbak > Date: Thu Jan 17 14:38:41 2008 > New Revision: 46142 > > URL: http://llvm.org/viewvc/llvm-project?rev=46142&view=rev > Log: > Forward progress: crtbegin.c now compiles successfully! > > Fixed CellSPU's A-form (local store) address mode, so that all > globals, > externals, constant pool and jump table symbols are now wrapped within > a SPUISD::AFormAddr pseudo-instruction. This now identifies all local > store memory addresses, although it requires a bit of legerdemain > during > instruction selection to properly select loads to and stores from > local > store, properly generating "LQA" instructions. > > Also added mul_ops.ll test harness for exercising integer > multiplication. > > Added: > llvm/trunk/test/CodeGen/CellSPU/mul_ops.ll > Modified: > llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp > llvm/trunk/lib/Target/CellSPU/SPUISelLowering.cpp > llvm/trunk/lib/Target/CellSPU/SPUInstrInfo.td > llvm/trunk/lib/Target/CellSPU/SPUNodes.td > llvm/trunk/test/CodeGen/CellSPU/call_indirect.ll > llvm/trunk/test/CodeGen/CellSPU/struct_1.ll > > Modified: llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ > CellSPU/SPUISelDAGToDAG.cpp?rev=46142&r1=46141&r2=46142&view=diff > > ====================================================================== > ======== > --- llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp (original) > +++ llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp Thu Jan 17 > 14:38:41 2008 > @@ -159,16 +159,38 @@ > int prefslot_byte; /// Byte offset of the "preferred" slot > unsigned brcc_eq_ins; /// br_cc equal instruction > unsigned brcc_neq_ins; /// br_cc not equal instruction > + unsigned load_aform; /// A-form load instruction for > this VT > + unsigned store_aform; /// A-form store instruction for > this VT > }; > > const valtype_map_s valtype_map[] = { > - { MVT::i1, 0, 3, 0, 0 }, > - { MVT::i8, 0, 3, 0, 0 }, > - { MVT::i16, SPU::ORHIr16, 2, SPU::BRHZ, SPU::BRHNZ }, > - { MVT::i32, SPU::ORIr32, 0, SPU::BRZ, SPU::BRNZ }, > - { MVT::i64, SPU::ORIr64, 0, 0, 0 }, > - { MVT::f32, 0, 0, 0, 0 }, > - { MVT::f64, 0, 0, 0, 0 } > + { MVT::i1, 0, 3, 0, 0, 0, > + 0 }, > + { MVT::i8, SPU::ORBIr8, 3, 0, 0, SPU::LQAr8, > + SPU::STQAr8 }, > + { MVT::i16, SPU::ORHIr16, 2, SPU::BRHZ, SPU::BRHNZ, > SPU::LQAr16, > + SPU::STQAr16 }, > + { MVT::i32, SPU::ORIr32, 0, SPU::BRZ, SPU::BRNZ, > SPU::LQAr32, > + SPU::STQAr32 }, > + { MVT::i64, SPU::ORIr64, 0, 0, 0, > SPU::LQAr64, > + SPU::STQAr64 }, > + { MVT::f32, 0, 0, 0, 0, > SPU::LQAf32, > + SPU::STQAf32 }, > + { MVT::f64, 0, 0, 0, 0, > SPU::LQAf64, > + SPU::STQAf64 }, > + // vector types... (sigh!) > + { MVT::v16i8, 0, 0, 0, 0, > SPU::LQAv16i8, > + SPU::STQAv16i8 }, > + { MVT::v8i16, 0, 0, 0, 0, > SPU::LQAv8i16, > + SPU::STQAv8i16 }, > + { MVT::v4i32, 0, 0, 0, 0, > SPU::LQAv4i32, > + SPU::STQAv4i32 }, > + { MVT::v2i64, 0, 0, 0, 0, > SPU::LQAv2i64, > + SPU::STQAv2i64 }, > + { MVT::v4f32, 0, 0, 0, 0, > SPU::LQAv4f32, > + SPU::STQAv4f32 }, > + { MVT::v2f64, 0, 0, 0, 0, > SPU::LQAv2f64, > + SPU::STQAv2f64 }, > }; > > const size_t n_valtype_map = sizeof(valtype_map) / sizeof > (valtype_map[0]); > @@ -465,14 +487,6 @@ > int32_t offset = (int32_t) CN->getSignExtended(); > unsigned Opc0 = Op0.getOpcode(); > > - if ((offset & 0xf) != 0) { > - // Unaligned offset: punt and let X-form address handle it. > - // NOTE: This really doesn't have to be strictly 16-byte > aligned, > - // since the load/store quadword instructions will implicitly > - // zero the lower 4 bits of the resulting address. > - return false; > - } > - > if (Opc0 == ISD::FrameIndex) { > FrameIndexSDNode *FI = dyn_cast(Op0); > DEBUG(cerr << "SelectDFormAddr: ISD::ADD offset = " << offset > @@ -506,7 +520,8 @@ > const SDOperand Op0 = N.getOperand(0); // Frame index/base > const SDOperand Op1 = N.getOperand(1); // Offset within base > > - if (Op0.getOpcode() != SPUISD::XFormAddr) { > + if (Op0.getOpcode() == ISD::Constant > + || Op0.getOpcode() == ISD::TargetConstant) { > ConstantSDNode *CN = cast(Op1); > assert(CN != 0 && "SelectDFormAddr/SPUISD::DFormAddr > expecting constant"); > Base = CurDAG->getTargetConstant(CN->getValue(), PtrTy); > @@ -523,6 +538,11 @@ > Index = CurDAG->getTargetFrameIndex(FI->getIndex(), PtrTy); > return true; > } > + } else if (Opc == SPUISD::LDRESULT) { > + // It's a load result dereference > + Base = CurDAG->getTargetConstant(0, PtrTy); > + Index = N.getOperand(0); > + return true; > } > > return false; > @@ -550,24 +570,9 @@ > if (Opc == ISD::ADD) { > SDOperand N1 = N.getOperand(0); > SDOperand N2 = N.getOperand(1); > - unsigned N1Opc = N1.getOpcode(); > - unsigned N2Opc = N2.getOpcode(); > - > - if ((N1Opc == SPUISD::Hi && N2Opc == SPUISD::Lo) > - || (N1Opc == SPUISD::Lo && N2Opc == SPUISD::Hi) > - || (N1Opc == SPUISD::XFormAddr)) { > - Base = N.getOperand(0); > - Index = N.getOperand(1); > - return true; > - } else { > - cerr << "SelectXFormAddr: Unhandled ADD operands:\n"; > - N1.Val->dump(); > - cerr << "\n"; > - N2.Val->dump(); > - cerr << "\n"; > - abort(); > - /*UNREACHED*/ > - } > + Base = N.getOperand(0); > + Index = N.getOperand(1); > + return true; > } else if (Opc == SPUISD::XFormAddr) { > Base = N; > Index = N.getOperand(1); > @@ -608,6 +613,62 @@ > return false; > } > > +//! Emit load for A-form addresses > +/* > + */ > +SDNode * > +Emit_LOAD_AFormAddr(SDOperand Op, SelectionDAG &CurDAG, > SPUDAGToDAGISel &ISel) > +{ > + SDNode *Result; > + MVT::ValueType OpVT = Op.getValueType(); > + SDOperand Chain = Op.getOperand(0); > + SDOperand Ptr = Op.getOperand(1); > + SDOperand PtrArg = Ptr.getOperand(0); > + SDOperand PtrOffs = Ptr.getOperand(1); > + const valtype_map_s *vtm = getValueTypeMapEntry(OpVT); > + > + if (PtrOffs.getOpcode() == ISD::Constant) { > + ConstantSDNode *CN = cast(PtrOffs); > + MVT::ValueType PVT = PtrOffs.getValueType(); > + PtrOffs = CurDAG.getTargetConstant(CN->getValue(), PVT); > + } > + ISel.AddToISelQueue(PtrArg); > + ISel.AddToISelQueue(PtrOffs); > + ISel.AddToISelQueue(Chain); > + Result = CurDAG.getTargetNode(vtm->load_aform, OpVT, MVT::Other, > PtrArg, PtrOffs, Chain); > + Chain = SDOperand(Result, 1); > + return Result; > +} > + > +//! Emit store for A-form addresses > +/* > + */ > +SDNode * > +Emit_STORE_AFormAddr(SDOperand Op, SelectionDAG &CurDAG, > SPUDAGToDAGISel &ISel) > +{ > + SDNode *Result; > + SDOperand Chain = Op.getOperand(0); > + SDOperand Val = Op.getOperand(1); > + SDOperand Ptr = Op.getOperand(2); > + SDOperand PtrArg = Ptr.getOperand(0); > + SDOperand PtrOffs = Ptr.getOperand(1); > + const valtype_map_s *vtm = getValueTypeMapEntry(Val.getValueType > ()); > + > + if (PtrOffs.getOpcode() == ISD::Constant) { > + ConstantSDNode *CN = cast(PtrOffs); > + MVT::ValueType PVT = PtrOffs.getValueType(); > + PtrOffs = CurDAG.getTargetConstant(CN->getValue(), PVT); > + } > + ISel.AddToISelQueue(Val); > + ISel.AddToISelQueue(PtrArg); > + ISel.AddToISelQueue(PtrOffs); > + ISel.AddToISelQueue(Chain); > + SDOperand Ops[4] = { Val, PtrArg, PtrOffs, Chain }; > + Result = CurDAG.getTargetNode(vtm->store_aform, MVT::Other, Ops, > 4); > + Chain = SDOperand(Result, 1); > + return Result; > +} > + > //! Convert the operand from a target-independent to a target- > specific node > /*! > */ > @@ -615,6 +676,10 @@ > SPUDAGToDAGISel::Select(SDOperand Op) { > SDNode *N = Op.Val; > unsigned Opc = N->getOpcode(); > + int n_ops = -1; > + unsigned NewOpc; > + MVT::ValueType OpVT = Op.getValueType(); > + SDOperand Ops[8]; > > if (Opc >= ISD::BUILTIN_OP_END && Opc < SPUISD::FIRST_NUMBER) { > return NULL; // Already selected. > @@ -626,9 +691,32 @@ > SDOperand TFI = CurDAG->getTargetFrameIndex(FI, PtrVT); > > DEBUG(cerr << "SPUDAGToDAGISel: Replacing FrameIndex with AI32 > , 0\n"); > - if (N->hasOneUse()) > - return CurDAG->SelectNodeTo(N, SPU::AIr32, Op.getValueType > (), TFI, Zero); > - CurDAG->getTargetNode(SPU::AIr32, Op.getValueType(), TFI, Zero); > + NewOpc = SPU::AIr32; > + Ops[0] = TFI; > + Ops[1] = Zero; > + n_ops = 2; > + } else if (Opc == ISD::LOAD > + && Op.getOperand(1).getOpcode() == SPUISD::AFormAddr) { > + return Emit_LOAD_AFormAddr(Op, *CurDAG, *this); > + } else if (Opc == ISD::STORE > + && Op.getOperand(2).getOpcode() == SPUISD::AFormAddr) { > + return Emit_STORE_AFormAddr(Op, *CurDAG, *this); > + } else if (Opc == ISD::ZERO_EXTEND) { > + // (zero_extend:i16 (and:i8 , )) > + const SDOperand &Op1 = N->getOperand(0); > + > + if (Op.getValueType() == MVT::i16 && Op1.getValueType() == > MVT::i8) { > + if (Op1.getOpcode() == ISD::AND) { > + // Fold this into a single ANDHI. This is often seen in > expansions of i1 > + // to i8, then i8 to i16 in logical/branching operations. > + DEBUG(cerr << "CellSPU: Coalescing (zero_extend:i16 (and:i8 " > + ", ))\n"); > + NewOpc = SPU::ANDHI1To2; > + Ops[0] = Op1.getOperand(0); > + Ops[1] = Op1.getOperand(1); > + n_ops = 2; > + } > + } > } else if (Opc == SPUISD::LDRESULT) { > // Custom select instructions for LDRESULT > unsigned VT = N->getValueType(0); > @@ -650,20 +738,54 @@ > Opc = vtm->ldresult_ins; > > AddToISelQueue(Zero); > - Result = CurDAG->SelectNodeTo(N, Opc, VT, MVT::Other, Arg, > Zero, Chain); > + Result = CurDAG->getTargetNode(Opc, VT, MVT::Other, Arg, > Zero, Chain); > } else { > - Result = > - CurDAG->SelectNodeTo(N, (VT == MVT::f32 ? SPU::ORf32 : SPU::ORf64), > - MVT::Other, Arg, Arg, Chain); > + Opc = (VT == MVT::f32 ? SPU::ORf32 : SPU::ORf64); > + Result = CurDAG->getTargetNode(Opc, MVT::Other, Arg, Arg, > Chain); > } > > Chain = SDOperand(Result, 1); > AddToISelQueue(Chain); > > return Result; > + } else if (Opc == SPUISD::XFormAddr) { > + SDOperand Op0 = Op.getOperand(0); > + if (Op0.getOpcode() == SPUISD::LDRESULT > + || Op0.getOpcode() == SPUISD::AFormAddr) { > + // (XFormAddr (LDRESULT|AFormAddr, imm)) > + SDOperand Op1 = Op.getOperand(1); > + MVT::ValueType VT = Op.getValueType(); > + > + DEBUG(cerr << "CellSPU: XFormAddr(" > + << (Op0.getOpcode() == SPUISD::LDRESULT > + ? "LDRESULT" > + : "AFormAddr") > + << ", imm):\nOp0 = "); > + DEBUG(Op.getOperand(0).Val->dump(CurDAG)); > + DEBUG(cerr << "\nOp1 = "); > + DEBUG(Op.getOperand(1).Val->dump(CurDAG)); > + DEBUG(cerr << "\n"); > + > + if (Op1.getOpcode() == ISD::Constant) { > + ConstantSDNode *CN = cast(Op1); > + Op1 = CurDAG->getTargetConstant(CN->getValue(), VT); > + } > + AddToISelQueue(Op0); > + AddToISelQueue(Op1); > + NewOpc = SPU::AIr32; > + Ops[0] = Op0; > + Ops[1] = Op1; > + n_ops = 2; > + } > } > > - return SelectCode(Op); > + if (n_ops > 0) { > + if (N->hasOneUse()) > + return CurDAG->SelectNodeTo(N, NewOpc, OpVT, Ops, n_ops); > + else > + return CurDAG->getTargetNode(NewOpc, OpVT, Ops, n_ops); > + } else > + return SelectCode(Op); > } > > /// createPPCISelDag - This pass converts a legalized DAG into a > > Modified: llvm/trunk/lib/Target/CellSPU/SPUISelLowering.cpp > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ > CellSPU/SPUISelLowering.cpp?rev=46142&r1=46141&r2=46142&view=diff > > ====================================================================== > ======== > --- llvm/trunk/lib/Target/CellSPU/SPUISelLowering.cpp (original) > +++ llvm/trunk/lib/Target/CellSPU/SPUISelLowering.cpp Thu Jan 17 > 14:38:41 2008 > @@ -100,6 +100,14 @@ > || Opc == ISD::TargetExternalSymbol > || Opc == SPUISD::AFormAddr); > } > + > + //! Predicate that returns true if the operand is an indirect > target > + bool isIndirectOperand(const SDOperand &Op) > + { > + const unsigned Opc = Op.getOpcode(); > + return (Opc == ISD::Register > + || Opc == SPUISD::LDRESULT); > + } > } > > SPUTargetLowering::SPUTargetLowering(SPUTargetMachine &TM) > @@ -126,7 +134,7 @@ > addRegisterClass(MVT::i128, SPU::GPRCRegisterClass); > > // SPU has no sign or zero extended loads for i1, i8, i16: > - setLoadXAction(ISD::EXTLOAD, MVT::i1, Custom); > + setLoadXAction(ISD::EXTLOAD, MVT::i1, Promote); > setLoadXAction(ISD::SEXTLOAD, MVT::i1, Promote); > setLoadXAction(ISD::ZEXTLOAD, MVT::i1, Promote); > setTruncStoreAction(MVT::i8, MVT::i1, Custom); > @@ -160,10 +168,9 @@ > setOperationAction(ISD::STORE, sctype, Custom); > } > > - // SPU supports BRCOND, although DAGCombine will convert BRCONDs > - // into BR_CCs. BR_CC instructions are custom selected in > - // SPUDAGToDAGISel. > - setOperationAction(ISD::BRCOND, MVT::Other, Legal); > + // Custom lower BRCOND for i1, i8 to "promote" the result to > + // i32 and i16, respectively. > + setOperationAction(ISD::BRCOND, MVT::Other, Custom); > > // Expand the jumptable branches > setOperationAction(ISD::BR_JT, MVT::Other, Expand); > @@ -472,7 +479,7 @@ > SDOperand Op1 = basePtr.Val->getOperand(1); > > if (Op1.getOpcode() == ISD::Constant || Op1.getOpcode() == > ISD::TargetConstant) { > - const ConstantSDNode *CN = cast(basePtr.Val- > >getOperand(1)); > + const ConstantSDNode *CN = cast > (basePtr.getOperand(1)); > > alignOffs = (int) CN->getValue(); > prefSlotOffs = (int) (alignOffs & 0xf); > @@ -482,15 +489,13 @@ > prefSlotOffs -= vtm->prefslot_byte; > basePtr = basePtr.getOperand(0); > > - // Modify alignment, since the ADD is likely from > getElementPtr: > - switch (basePtr.getOpcode()) { > - case ISD::GlobalAddress: > - case ISD::TargetGlobalAddress: { > - GlobalAddressSDNode *GN = cast > (basePtr.Val); > - const GlobalValue *GV = GN->getGlobal(); > - alignment = GV->getAlignment(); > - break; > - } > + // Loading from memory, can we adjust alignment? > + if (basePtr.getOpcode() == SPUISD::AFormAddr) { > + SDOperand APtr = basePtr.getOperand(0); > + if (APtr.getOpcode() == ISD::TargetGlobalAddress) { > + GlobalAddressSDNode *GSDN = cast > (APtr); > + alignment = GSDN->getGlobal()->getAlignment(); > + } > } > } else { > alignOffs = 0; > @@ -504,15 +509,9 @@ > if (alignment == 16) { > // Realign the base pointer as a D-Form address: > if (!isMemoryOperand(basePtr) || (alignOffs & ~0xf) != 0) { > - if (isMemoryOperand(basePtr)) { > - SDOperand Zero = DAG.getConstant(0, PtrVT); > - unsigned Opc = (!ST->usingLargeMem() > - ? SPUISD::AFormAddr > - : SPUISD::XFormAddr); > - basePtr = DAG.getNode(Opc, PtrVT, basePtr, Zero); > - } > - basePtr = DAG.getNode(SPUISD::DFormAddr, PtrVT, > - basePtr, DAG.getConstant((alignOffs & > ~0xf), PtrVT)); > + basePtr = DAG.getNode(ISD::ADD, PtrVT, > + basePtr, > + DAG.getConstant((alignOffs & ~0xf), PtrVT)); > } > > // Emit the vector load: > @@ -524,7 +523,7 @@ > > // Unaligned load or we're using the "large memory" model, which > means that > // we have to be very pessimistic: > - if (isMemoryOperand(basePtr)) { > + if (isMemoryOperand(basePtr) || isIndirectOperand(basePtr)) { > basePtr = DAG.getNode(SPUISD::XFormAddr, PtrVT, basePtr, > DAG.getConstant(0, PtrVT)); > } > > @@ -551,13 +550,6 @@ > unsigned alignment = LN->getAlignment(); > SDOperand Ops[8]; > > - // For an extending load of an i1 variable, just call it i8 (or > whatever we > - // were passed) and make it zero-extended: > - if (VT == MVT::i1) { > - VT = OpVT; > - ExtType = ISD::ZEXTLOAD; > - } > - > switch (LN->getAddressingMode()) { > case ISD::UNINDEXED: { > int offset, rotamt; > @@ -575,15 +567,13 @@ > if (rotamt != 0 || !was16aligned) { > SDVTList vecvts = DAG.getVTList(MVT::v16i8, MVT::Other); > > + Ops[0] = the_chain; > + Ops[1] = result; > if (was16aligned) { > - Ops[0] = the_chain; > - Ops[1] = result; > Ops[2] = DAG.getConstant(rotamt, MVT::i16); > } else { > MVT::ValueType PtrVT = DAG.getTargetLoweringInfo().getPointerTy(); > LoadSDNode *LN1 = cast(result); > - Ops[0] = the_chain; > - Ops[1] = result; > Ops[2] = DAG.getNode(ISD::ADD, PtrVT, LN1->getBasePtr(), > DAG.getConstant(rotamt, PtrVT)); > } > @@ -628,9 +618,14 @@ > } > > SDVTList retvts = DAG.getVTList(OpVT, MVT::Other); > - SDOperand retops[2] = { result, the_chain }; > + SDOperand retops[3] = { > + result, > + the_chain, > + DAG.getConstant(alignment, MVT::i32) > + }; > > - result = DAG.getNode(SPUISD::LDRESULT, retvts, retops, 2); > + result = DAG.getNode(SPUISD::LDRESULT, retvts, > + retops, sizeof(retops) / sizeof(retops[0])); > return result; > } > case ISD::PRE_INC: > @@ -712,6 +707,7 @@ > DEBUG(cerr << "\n"); > > if (basePtr.getOpcode() == SPUISD::DFormAddr) { > + // Hmmmm... do we ever actually hit this code? > insertEltPtr = DAG.getNode(SPUISD::DFormAddr, PtrVT, > basePtr.getOperand(0), > insertEltOffs); > @@ -720,6 +716,8 @@ > && basePtr.getOperand(0).getOpcode() == SPUISD::XFormAddr)) { > insertEltPtr = basePtr; > } else { > + // $sp is always aligned, so use it instead of potentially > loading an > + // address into a new register: > insertEltPtr = DAG.getNode(SPUISD::DFormAddr, PtrVT, > DAG.getRegister(SPU::R1, PtrVT), > insertEltOffs); > @@ -766,10 +764,9 @@ > if (TM.getRelocationModel() == Reloc::Static) { > if (!ST->usingLargeMem()) { > // Just return the SDOperand with the constant pool address > in it. > - return CPI; > + return DAG.getNode(SPUISD::AFormAddr, PtrVT, CPI, Zero); > } else { > #if 1 > - // Generate hi/lo address pair > SDOperand Hi = DAG.getNode(SPUISD::Hi, PtrVT, CPI, Zero); > SDOperand Lo = DAG.getNode(SPUISD::Lo, PtrVT, CPI, Zero); > > @@ -795,7 +792,7 @@ > > if (TM.getRelocationModel() == Reloc::Static) { > return (!ST->usingLargeMem() > - ? JTI > + ? DAG.getNode(SPUISD::AFormAddr, PtrVT, JTI, Zero) > : DAG.getNode(SPUISD::XFormAddr, PtrVT, JTI, Zero)); > } > > @@ -815,7 +812,7 @@ > > if (TM.getRelocationModel() == Reloc::Static) { > return (!ST->usingLargeMem() > - ? GA > + ? DAG.getNode(SPUISD::AFormAddr, PtrVT, GA, Zero) > : DAG.getNode(SPUISD::XFormAddr, PtrVT, GA, Zero)); > } else { > cerr << "LowerGlobalAddress: Relocation model other than > static not " > @@ -880,6 +877,24 @@ > return SDOperand(); > } > > +//! Lower MVT::i1, MVT::i8 brcond to a promoted type (MVT::i32, > MVT::i16) > +static SDOperand > +LowerBRCOND(SDOperand Op, SelectionDAG &DAG) > +{ > + SDOperand Cond = Op.getOperand(1); > + MVT::ValueType CondVT = Cond.getValueType(); > + MVT::ValueType CondNVT; > + > + if (CondVT == MVT::i1 || CondVT == MVT::i8) { > + CondNVT = (CondVT == MVT::i1 ? MVT::i32 : MVT::i16); > + return DAG.getNode(ISD::BRCOND, Op.getValueType(), > + Op.getOperand(0), > + DAG.getNode(ISD::ZERO_EXTEND, CondNVT, > Op.getOperand(1)), > + Op.getOperand(2)); > + } else > + return SDOperand(); // Unchanged > +} > + > static SDOperand > LowerFORMAL_ARGUMENTS(SDOperand Op, SelectionDAG &DAG, int > &VarArgsFrameIndex) > { > @@ -2458,8 +2473,10 @@ > return LowerConstant(Op, DAG); > case ISD::ConstantFP: > return LowerConstantFP(Op, DAG); > + case ISD::BRCOND: > + return LowerBRCOND(Op, DAG); > case ISD::FORMAL_ARGUMENTS: > - return LowerFORMAL_ARGUMENTS(Op, DAG, VarArgsFrameIndex); > + return LowerFORMAL_ARGUMENTS(Op, DAG, VarArgsFrameIndex); > case ISD::CALL: > return LowerCALL(Op, DAG, SPUTM.getSubtargetImpl()); > case ISD::RET: > @@ -2537,48 +2554,16 @@ > #if 0 > TargetMachine &TM = getTargetMachine(); > SelectionDAG &DAG = DCI.DAG; > -#endif > SDOperand N0 = N->getOperand(0); // everything has at least one > operand > > switch (N->getOpcode()) { > default: break; > - > - // Look for obvious optimizations for shift left: > - // a) Replace 0 << V with 0 > - // b) Replace V << 0 with V > - // > - // N.B: llvm will generate an undef node if the shift amount is > greater than > - // 15 (e.g.: V << 16), which will naturally trigger an assert. > - case SPU::SHLIr32: > - case SPU::SHLHIr16: > - case SPU::SHLQBIIvec: > - case SPU::ROTHIr16: > - case SPU::ROTHIr16_i32: > - case SPU::ROTIr32: > - case SPU::ROTIr32_i16: > - case SPU::ROTQBYIvec: > - case SPU::ROTQBYBIvec: > - case SPU::ROTQBIIvec: > - case SPU::ROTHMIr16: > - case SPU::ROTMIr32: > - case SPU::ROTQMBYIvec: { > - if (N0.getOpcode() == ISD::Constant) { > - if (ConstantSDNode *C = cast(N0)) { > - if (C->getValue() == 0) // 0 << V -> 0. > - return N0; > - } > - } > - SDOperand N1 = N->getOperand(1); > - if (N1.getOpcode() == ISD::Constant) { > - if (ConstantSDNode *C = cast(N1)) { > - if (C->getValue() == 0) // V << 0 -> V > - return N1; > - } > - } > - break; > - } > + // Do something creative here for ISD nodes that can be > coalesced in unique > + // ways. > } > +#endif > > + // Otherwise, return unchanged. > return SDOperand(); > } > > > Modified: llvm/trunk/lib/Target/CellSPU/SPUInstrInfo.td > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ > CellSPU/SPUInstrInfo.td?rev=46142&r1=46141&r2=46142&view=diff > > ====================================================================== > ======== > --- llvm/trunk/lib/Target/CellSPU/SPUInstrInfo.td (original) > +++ llvm/trunk/lib/Target/CellSPU/SPUInstrInfo.td Thu Jan 17 > 14:38:41 2008 > @@ -1359,6 +1359,9 @@ > def : Pat<(SPUextract_elt0 (v16i8 VECREG:$rA)), > (ORi8_v16i8 VECREG:$rA, VECREG:$rA)>; > > +def : Pat<(SPUextract_elt0_chained (v16i8 VECREG:$rA)), > + (ORi8_v16i8 VECREG:$rA, VECREG:$rA)>; > + > def ORi16_v8i16: > RRForm<0b10000010000, (outs R16C:$rT), (ins VECREG:$rA, VECREG: > $rB), > "or\t$rT, $rA, $rB", IntegerOp, > @@ -2868,6 +2871,9 @@ > */ > } > > +// > ===------------------------------------------------------------------- > ---===// > +// brcond predicates: > +// > ===------------------------------------------------------------------- > ---===// > def : Pat<(brcond (i16 (seteq R16C:$rA, 0)), bb:$dest), > (BRHZ R16C:$rA, bb:$dest)>; > def : Pat<(brcond (i16 (setne R16C:$rA, 0)), bb:$dest), > @@ -2876,7 +2882,7 @@ > def : Pat<(brcond (i32 (seteq R32C:$rA, 0)), bb:$dest), > (BRZ R32C:$rA, bb:$dest)>; > def : Pat<(brcond (i32 (setne R32C:$rA, 0)), bb:$dest), > - (BRZ R32C:$rA, bb:$dest)>; > + (BRNZ R32C:$rA, bb:$dest)>; > > let isTerminator = 1, isBarrier = 1 in { > let isReturn = 1 in { > @@ -2886,23 +2892,6 @@ > } > > // > ===------------------------------------------------------------------- > ---===// > -// Various brcond predicates: > -// > ===------------------------------------------------------------------- > ---===// > -/* > -def : Pat<(brcond (i32 (seteq R32C:$rA, 0)), bb:$dest), > - (BRZ R32C:$rA, bb:$dest)>; > - > -def : Pat<(brcond (i32 (seteq R32C:$rA, R32C:$rB)), bb:$dest), > - (BRNZ (CEQr32 R32C:$rA, R32C:$rB), bb:$dest)>; > - > -def : Pat<(brcond (i16 (seteq R16C:$rA, i16ImmSExt10:$val)), bb: > $dest), > - (BRHNZ (CEQHIr16 R16C:$rA, i16ImmSExt10:$val), bb:$dest)>; > - > -def : Pat<(brcond (i16 (seteq R16C:$rA, R16C:$rB)), bb:$dest), > - (BRHNZ (CEQHr16 R16C:$rA, R16C:$rB), bb:$dest)>; > -*/ > - > -// > ===------------------------------------------------------------------- > ---===// > // Single precision floating point instructions > // > ===------------------------------------------------------------------- > ---===// > > @@ -3475,21 +3464,20 @@ > // low parts in order to load them into a register. > // > ===------------------------------------------------------------------- > ---===// > > -def : Pat<(SPUhi tglobaladdr:$in, 0), (ILHUhi > tglobaladdr:$in)>; > -def : Pat<(SPUlo tglobaladdr:$in, 0), (ILAlo > tglobaladdr:$in)>; > def : Pat<(SPUaform tglobaladdr:$in, 0), (ILAlsa > tglobaladdr:$in)>; > def : Pat<(SPUxform tglobaladdr:$in, 0), > (IOHLlo (ILHUhi tglobaladdr:$in), tglobaladdr:$in)>; > -def : Pat<(SPUhi tjumptable:$in, 0), (ILHUhi tjumptable: > $in)>; > -def : Pat<(SPUlo tjumptable:$in, 0), (ILAlo tjumptable: > $in)>; > + > def : Pat<(SPUaform tjumptable:$in, 0), (ILAlsa tjumptable: > $in)>; > def : Pat<(SPUxform tjumptable:$in, 0), > (IOHLlo (ILHUhi tjumptable:$in), tjumptable:$in)>; > -def : Pat<(SPUhi tconstpool:$in , 0), (ILHUhi tconstpool: > $in)>; > -def : Pat<(SPUlo tconstpool:$in , 0), (ILAlo tconstpool: > $in)>; > -def : Pat<(SPUaform tconstpool:$in, 0), (ILAlsa tconstpool: > $in)>; > -/* def : Pat<(SPUxform tconstpool:$in, 0), > - (IOHLlo (ILHUhi tconstpool:$in), tconstpool:$in)>; */ > + > +def : Pat<(SPUhi tconstpool:$in , 0), (ILHUhi > tconstpool:$in)>; > +def : Pat<(SPUlo tconstpool:$in , 0), (ILAlsa > tconstpool:$in)>; > +def : Pat<(SPUaform tconstpool:$in, 0), (ILAlsa > tconstpool:$in)>; > +// tblgen bug prevents this from working. > +// def : Pat<(SPUxform tconstpool:$in, 0), > +// (IOHLlo (ILHUhi tconstpool:$in), tconstpool:$in)>; > > // Instrinsics: > include "CellSDKIntrinsics.td" > > Modified: llvm/trunk/lib/Target/CellSPU/SPUNodes.td > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ > CellSPU/SPUNodes.td?rev=46142&r1=46141&r2=46142&view=diff > > ====================================================================== > ======== > --- llvm/trunk/lib/Target/CellSPU/SPUNodes.td (original) > +++ llvm/trunk/lib/Target/CellSPU/SPUNodes.td Thu Jan 17 14:38:41 2008 > @@ -195,6 +195,10 @@ > // X-Form "$reg($reg)" addresses > def SPUxform : SDNode<"SPUISD::XFormAddr", SDTIntBinOp, []>; > > +// Load result node > +def SPUload_result : SDTypeProfile<1, 3, []>; > +def SPUldresult : SDNode<"SPUISD::LDRESULT", SPUload_result, > [SDNPHasChain]>; > + > // SPU 32-bit sign-extension to 64-bits > def SPUsext32_to_64: SDNode<"SPUISD::SEXT32TO64", SDTIntExtendOp, > []>; > > > Modified: llvm/trunk/test/CodeGen/CellSPU/call_indirect.ll > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ > CellSPU/call_indirect.ll?rev=46142&r1=46141&r2=46142&view=diff > > ====================================================================== > ======== > --- llvm/trunk/test/CodeGen/CellSPU/call_indirect.ll (original) > +++ llvm/trunk/test/CodeGen/CellSPU/call_indirect.ll Thu Jan 17 > 14:38:41 2008 > @@ -1,18 +1,18 @@ > ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s > ; RUN: llvm-as -o - %s | llc -march=cellspu -mattr=large_mem > %t2.s > -; RUN: grep bisl %t1.s | count 6 && > +; RUN: grep bisl %t1.s | count 7 && > ; RUN: grep ila %t1.s | count 1 && > ; RUN: grep rotqbyi %t1.s | count 4 && > -; RUN: grep lqa %t1.s | count 4 && > +; RUN: grep lqa %t1.s | count 5 && > ; RUN: grep lqd %t1.s | count 6 && > ; RUN: grep dispatch_tab %t1.s | count 10 > -; RUN: grep bisl %t2.s | count 6 && > -; RUN: grep ilhu %t2.s | count 1 && > -; RUN: grep iohl %t2.s | count 1 && > -; RUN: grep rotqby %t2.s | count 5 && > +; RUN: grep bisl %t2.s | count 7 && > +; RUN: grep ilhu %t2.s | count 2 && > +; RUN: grep iohl %t2.s | count 2 && > +; RUN: grep rotqby %t2.s | count 6 && > ; RUN: grep lqd %t2.s | count 12 && > -; RUN: grep lqx %t2.s | count 6 && > -; RUN: grep il %t2.s | count 7 && > +; RUN: grep lqx %t2.s | count 8 && > +; RUN: grep il %t2.s | count 9 && > ; RUN: grep ai %t2.s | count 5 && > ; RUN: grep dispatch_tab %t2.s | count 7 > > @@ -38,3 +38,13 @@ > tail call void %tmp2.5( i32 %i_arg, float %f_arg ) > ret void > } > + > + at ptr_list = internal global [1 x void ()*] [ void ()* inttoptr > (i64 4294967295 to void ()*) ], align 4 > + at ptr.a = internal global void ()** getelementptr ([1 x void ()*]* > @ptr_list, i32 0, i32 1), align 16 > + > +define void @double_indirect_call() { > + %a = load void ()*** @ptr.a, align 16 > + %b = load void ()** %a, align 4 > + tail call void %b() > + ret void > +} > > Added: llvm/trunk/test/CodeGen/CellSPU/mul_ops.ll > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ > CellSPU/mul_ops.ll?rev=46142&view=auto > > ====================================================================== > ======== > --- llvm/trunk/test/CodeGen/CellSPU/mul_ops.ll (added) > +++ llvm/trunk/test/CodeGen/CellSPU/mul_ops.ll Thu Jan 17 14:38:41 > 2008 > @@ -0,0 +1,90 @@ > +; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s > +; RUN: grep mpy %t1.s | count 44 && > +; RUN: grep mpyu %t1.s | count 4 && > +; RUN: grep mpyh %t1.s | count 10 && > +; RUN: grep mpyhh %t1.s | count 2 && > +; RUN: grep rotma %t1.s | count 12 && > +; RUN: grep rotmahi %t1.s | count 4 && > +; RUN: grep and %t1.s | count 2 && > +; RUN: grep selb %t1.s | count 6 && > +; RUN: grep fsmbi %t1.s | count 4 && > +; RUN: grep shli %t1.s | count 4 && > +; RUN: grep shlhi %t1.s | count 4 && > +; RUN: grep ila %t1.s | count 2 && > +; RUN: grep xsbh %t1.s | count 8 && > +; RUN: grep xshw %t1.s | count 4 > +target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128- > i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128- > v128:128:128-s0:128:128" > +target triple = "spu" > + > +; 32-bit multiply instruction generation: > +define <4 x i32> @mpy_v4i32_1(<4 x i32> %arg1, <4 x i32> %arg2) { > +entry: > + %A = mul <4 x i32> %arg1, %arg2 > + ret <4 x i32> %A > +} > + > +define <4 x i32> @mpy_v4i32_2(<4 x i32> %arg1, <4 x i32> %arg2) { > +entry: > + %A = mul <4 x i32> %arg2, %arg1 > + ret <4 x i32> %A > +} > + > +define <8 x i16> @mpy_v8i16_1(<8 x i16> %arg1, <8 x i16> %arg2) { > +entry: > + %A = mul <8 x i16> %arg1, %arg2 > + ret <8 x i16> %A > +} > + > +define <8 x i16> @mpy_v8i16_2(<8 x i16> %arg1, <8 x i16> %arg2) { > +entry: > + %A = mul <8 x i16> %arg2, %arg1 > + ret <8 x i16> %A > +} > + > +define <16 x i8> @mul_v16i8_1(<16 x i8> %arg1, <16 x i8> %arg2) { > +entry: > + %A = mul <16 x i8> %arg2, %arg1 > + ret <16 x i8> %A > +} > + > +define <16 x i8> @mul_v16i8_2(<16 x i8> %arg1, <16 x i8> %arg2) { > +entry: > + %A = mul <16 x i8> %arg1, %arg2 > + ret <16 x i8> %A > +} > + > +define i32 @mul_i32_1(i32 %arg1, i32 %arg2) { > +entry: > + %A = mul i32 %arg2, %arg1 > + ret i32 %A > +} > + > +define i32 @mul_i32_2(i32 %arg1, i32 %arg2) { > +entry: > + %A = mul i32 %arg1, %arg2 > + ret i32 %A > +} > + > +define i16 @mul_i16_1(i16 %arg1, i16 %arg2) { > +entry: > + %A = mul i16 %arg2, %arg1 > + ret i16 %A > +} > + > +define i16 @mul_i16_2(i16 %arg1, i16 %arg2) { > +entry: > + %A = mul i16 %arg1, %arg2 > + ret i16 %A > +} > + > +define i8 @mul_i8_1(i8 %arg1, i8 %arg2) { > +entry: > + %A = mul i8 %arg2, %arg1 > + ret i8 %A > +} > + > +define i8 @mul_i8_2(i8 %arg1, i8 %arg2) { > +entry: > + %A = mul i8 %arg1, %arg2 > + ret i8 %A > +} > > Modified: llvm/trunk/test/CodeGen/CellSPU/struct_1.ll > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ > CellSPU/struct_1.ll?rev=46142&r1=46141&r2=46142&view=diff > > ====================================================================== > ======== > --- llvm/trunk/test/CodeGen/CellSPU/struct_1.ll (original) > +++ llvm/trunk/test/CodeGen/CellSPU/struct_1.ll Thu Jan 17 14:38:41 > 2008 > @@ -16,9 +16,10 @@ > ; RUN: grep rotqbyi %t2.s | count 5 && > ; RUN: grep xshw %t2.s | count 1 && > ; RUN: grep andi %t2.s | count 4 && > -; RUN: grep cbd %t2.s | count 3 && > -; RUN: grep chd %t2.s | count 1 && > -; RUN: grep cwd %t2.s | count 3 && > +; RUN: grep cbx %t2.s | count 3 && > +; RUN: grep chx %t2.s | count 1 && > +; RUN: grep cwx %t2.s | count 1 && > +; RUN: grep cwd %t2.s | count 2 && > ; RUN: grep shufb %t2.s | count 7 && > ; RUN: grep stqx %t2.s | count 7 > > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From dalej at apple.com Thu Jan 17 17:04:07 2008 From: dalej at apple.com (Dale Johannesen) Date: Thu, 17 Jan 2008 23:04:07 -0000 Subject: [llvm-commits] [llvm] r46144 - in /llvm/trunk/lib/Target: PowerPC/PPCAsmPrinter.cpp X86/X86AsmPrinter.cpp Message-ID: <200801172304.m0HN48mF023476@zion.cs.uiuc.edu> Author: johannes Date: Thu Jan 17 17:04:07 2008 New Revision: 46144 URL: http://llvm.org/viewvc/llvm-project?rev=46144&view=rev Log: Revert the part of 45848 that treated weak globals as weak globals rather than commons. While not wrong, this change tickled a latent bug in Darwin's strip, so revert it for now as a workaround. Modified: llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp Modified: llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp?rev=46144&r1=46143&r2=46144&view=diff ============================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp (original) +++ llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp Thu Jan 17 17:04:07 2008 @@ -917,7 +917,8 @@ if (C->isNullValue() && /* FIXME: Verify correct */ !I->hasSection() && - (I->hasInternalLinkage() || I->hasExternalLinkage())) { + (I->hasInternalLinkage() || I->hasWeakLinkage() || + I->hasLinkOnceLinkage() || I->hasExternalLinkage())) { if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, avoid it. if (I->hasExternalLinkage()) { O << "\t.globl " << name << '\n'; Modified: llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp?rev=46144&r1=46143&r2=46144&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp (original) +++ llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp Thu Jan 17 17:04:07 2008 @@ -181,9 +181,8 @@ } if (!I->isThreadLocal() && - (I->hasInternalLinkage() || - (!Subtarget->isTargetDarwin() && - (I->hasWeakLinkage() || I->hasLinkOnceLinkage())))) { + (I->hasInternalLinkage() || I->hasWeakLinkage() || + I->hasLinkOnceLinkage())) { if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, avoid it. if (!NoZerosInBSS && TAI->getBSSSection()) SwitchToDataSection(TAI->getBSSSection(), I); From lauro.venancio at gmail.com Thu Jan 17 17:05:21 2008 From: lauro.venancio at gmail.com (Lauro Ramos Venancio) Date: Thu, 17 Jan 2008 23:05:21 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46145 - in /llvm-gcc-4.2/trunk/gcc/config/arm: arm.c arm.h bpabi.h Message-ID: <200801172305.m0HN5LbL023602@zion.cs.uiuc.edu> Author: laurov Date: Thu Jan 17 17:05:21 2008 New Revision: 46145 URL: http://llvm.org/viewvc/llvm-project?rev=46145&view=rev Log: Fix the build for arm-linux-gnueabi. Modified: llvm-gcc-4.2/trunk/gcc/config/arm/arm.c llvm-gcc-4.2/trunk/gcc/config/arm/arm.h llvm-gcc-4.2/trunk/gcc/config/arm/bpabi.h Modified: llvm-gcc-4.2/trunk/gcc/config/arm/arm.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/arm/arm.c?rev=46145&r1=46144&r2=46145&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/arm/arm.c (original) +++ llvm-gcc-4.2/trunk/gcc/config/arm/arm.c Thu Jan 17 17:05:21 2008 @@ -15165,13 +15165,14 @@ const char *function_name; /* Darwin/mach-o: use a stub for dynamic references. */ - if (TARGET_MACHO - && (flag_pic || MACHO_DYNAMIC_NO_PIC_P) +#if TARGET_MACHO + if ((flag_pic || MACHO_DYNAMIC_NO_PIC_P) && ! machopic_data_defined_p (function_rtx)) function_name = machopic_indirection_name (function_rtx, true); - else - function_name = XSTR (function_rtx, 0); +#else + function_name = XSTR (function_rtx, 0); +#endif /* APPLE LOCAL ARM end 4745175 */ if (mi_delta < 0) Modified: llvm-gcc-4.2/trunk/gcc/config/arm/arm.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/arm/arm.h?rev=46145&r1=46144&r2=46145&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/arm/arm.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/arm/arm.h Thu Jan 17 17:05:21 2008 @@ -31,6 +31,9 @@ #ifndef TARGET_MACHO #define TARGET_MACHO 0 #endif +#ifndef MACHO_DYNAMIC_NO_PIC_P +#define MACHO_DYNAMIC_NO_PIC_P 0 +#endif /* APPLE LOCAL end ARM darwin target */ /* APPLE LOCAL ARM interworking */ @@ -1830,9 +1833,15 @@ #define SHORT_CALL_FLAG_CHAR '^' #define LONG_CALL_FLAG_CHAR '#' +#define ENCODED_SHORT_CALL_ATTR_P(SYMBOL_NAME) \ + (*(SYMBOL_NAME) == SHORT_CALL_FLAG_CHAR) + #define SYMBOL_SHORT_CALL_ATTR_P(SYMBOL) \ (SYMBOL_REF_FLAGS (SYMBOL) & SYMBOL_SHORT_CALL) +#define ENCODED_LONG_CALL_ATTR_P(SYMBOL_NAME) \ + (*(SYMBOL_NAME) == LONG_CALL_FLAG_CHAR) + #define SYMBOL_LONG_CALL_ATTR_P(SYMBOL) \ (SYMBOL_REF_FLAGS (SYMBOL) & SYMBOL_LONG_CALL) Modified: llvm-gcc-4.2/trunk/gcc/config/arm/bpabi.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/arm/bpabi.h?rev=46145&r1=46144&r2=46145&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/arm/bpabi.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/arm/bpabi.h Thu Jan 17 17:05:21 2008 @@ -35,7 +35,9 @@ /* EABI targets should enable interworking by default. */ #undef TARGET_DEFAULT -#define TARGET_DEFAULT MASK_INTERWORK +/* LLVM Local begin */ +#define TARGET_DEFAULT (0) +/* LLVM Local end */ /* The ARM BPABI functions return a boolean; they use no special calling convention. */ From evan.cheng at apple.com Thu Jan 17 17:26:16 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Thu, 17 Jan 2008 15:26:16 -0800 Subject: [llvm-commits] [llvm] r46144 - in /llvm/trunk/lib/Target: PowerPC/PPCAsmPrinter.cpp X86/X86AsmPrinter.cpp In-Reply-To: <200801172304.m0HN48mF023476@zion.cs.uiuc.edu> References: <200801172304.m0HN48mF023476@zion.cs.uiuc.edu> Message-ID: <609BFD32-4431-4288-8EB3-32F94FE4A60F@apple.com> Please revert the ARM changes as well. I am assuming the bug is there as well. :-) Evan On Jan 17, 2008, at 3:04 PM, Dale Johannesen wrote: > Author: johannes > Date: Thu Jan 17 17:04:07 2008 > New Revision: 46144 > > URL: http://llvm.org/viewvc/llvm-project?rev=46144&view=rev > Log: > Revert the part of 45848 that treated weak globals > as weak globals rather than commons. While not wrong, > this change tickled a latent bug in Darwin's strip, > so revert it for now as a workaround. > > > Modified: > llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp > llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp > > Modified: llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp?rev=46144&r1=46143&r2=46144&view=diff > > = > = > = > = > = > = > = > = > ====================================================================== > --- llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp (original) > +++ llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp Thu Jan 17 > 17:04:07 2008 > @@ -917,7 +917,8 @@ > > if (C->isNullValue() && /* FIXME: Verify correct */ > !I->hasSection() && > - (I->hasInternalLinkage() || I->hasExternalLinkage())) { > + (I->hasInternalLinkage() || I->hasWeakLinkage() || > + I->hasLinkOnceLinkage() || I->hasExternalLinkage())) { > if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, avoid > it. > if (I->hasExternalLinkage()) { > O << "\t.globl " << name << '\n'; > > Modified: llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp?rev=46144&r1=46143&r2=46144&view=diff > > = > = > = > = > = > = > = > = > ====================================================================== > --- llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp (original) > +++ llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp Thu Jan 17 17:04:07 > 2008 > @@ -181,9 +181,8 @@ > } > > if (!I->isThreadLocal() && > - (I->hasInternalLinkage() || > - (!Subtarget->isTargetDarwin() && > - (I->hasWeakLinkage() || I->hasLinkOnceLinkage())))) { > + (I->hasInternalLinkage() || I->hasWeakLinkage() || > + I->hasLinkOnceLinkage())) { > if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, > avoid it. > if (!NoZerosInBSS && TAI->getBSSSection()) > SwitchToDataSection(TAI->getBSSSection(), I); > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From lauro.venancio at gmail.com Thu Jan 17 17:31:39 2008 From: lauro.venancio at gmail.com (Lauro Ramos Venancio) Date: Thu, 17 Jan 2008 23:31:39 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46146 - /llvm-gcc-4.2/trunk/gcc/config/arm/arm.c Message-ID: <200801172331.m0HNVdoZ025692@zion.cs.uiuc.edu> Author: laurov Date: Thu Jan 17 17:31:38 2008 New Revision: 46146 URL: http://llvm.org/viewvc/llvm-project?rev=46146&view=rev Log: Fix my previous patch. It changed the behavior on TARGET_MACHO. Modified: llvm-gcc-4.2/trunk/gcc/config/arm/arm.c Modified: llvm-gcc-4.2/trunk/gcc/config/arm/arm.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/arm/arm.c?rev=46146&r1=46145&r2=46146&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/arm/arm.c (original) +++ llvm-gcc-4.2/trunk/gcc/config/arm/arm.c Thu Jan 17 17:31:38 2008 @@ -15167,9 +15167,11 @@ /* Darwin/mach-o: use a stub for dynamic references. */ #if TARGET_MACHO if ((flag_pic || MACHO_DYNAMIC_NO_PIC_P) - && ! machopic_data_defined_p (function_rtx)) - function_name = - machopic_indirection_name (function_rtx, true); + && ! machopic_data_defined_p (function_rtx)) + function_name = + machopic_indirection_name (function_rtx, true); + else + function_name = XSTR (function_rtx, 0); #else function_name = XSTR (function_rtx, 0); #endif From dalej at apple.com Thu Jan 17 17:36:05 2008 From: dalej at apple.com (Dale Johannesen) Date: Thu, 17 Jan 2008 23:36:05 -0000 Subject: [llvm-commits] [llvm] r46147 - /llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp Message-ID: <200801172336.m0HNa5b4025994@zion.cs.uiuc.edu> Author: johannes Date: Thu Jan 17 17:36:04 2008 New Revision: 46147 URL: http://llvm.org/viewvc/llvm-project?rev=46147&view=rev Log: Revert the part of 45849 that treated weak globals as weak globals rather than commons. While not wrong, this change tickled a latent bug in Darwin's strip, so revert it for now as a workaround. Modified: llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp Modified: llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp?rev=46147&r1=46146&r2=46147&view=diff ============================================================================== --- llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp (original) +++ llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp Thu Jan 17 17:36:04 2008 @@ -845,9 +845,8 @@ } } - if (I->hasInternalLinkage() || - (!Subtarget->isTargetDarwin() && - (I->hasWeakLinkage() || I->hasLinkOnceLinkage()))) { + if (I->hasInternalLinkage() || I->hasWeakLinkage() || + I->hasLinkOnceLinkage()) { if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, avoid it. if (!NoZerosInBSS && TAI->getBSSSection()) SwitchToDataSection(TAI->getBSSSection(), I); From isanbard at gmail.com Thu Jan 17 18:28:24 2008 From: isanbard at gmail.com (Bill Wendling) Date: Fri, 18 Jan 2008 00:28:24 -0000 Subject: [llvm-commits] [llvm] r46148 - /llvm/tags/Apple/llvmCore-2009/ Message-ID: <200801180028.m0I0SOWS029829@zion.cs.uiuc.edu> Author: void Date: Thu Jan 17 18:28:22 2008 New Revision: 46148 URL: http://llvm.org/viewvc/llvm-project?rev=46148&view=rev Log: Creating llvmCore-2009 branch Added: llvm/tags/Apple/llvmCore-2009/ - copied from r46147, llvm/trunk/ From isanbard at gmail.com Thu Jan 17 18:30:42 2008 From: isanbard at gmail.com (Bill Wendling) Date: Fri, 18 Jan 2008 00:30:42 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46149 - /llvm-gcc-4.2/tags/Apple/llvmgcc42-2010/ Message-ID: <200801180030.m0I0UgDg029983@zion.cs.uiuc.edu> Author: void Date: Thu Jan 17 18:30:41 2008 New Revision: 46149 URL: http://llvm.org/viewvc/llvm-project?rev=46149&view=rev Log: Creating llvmgcc42-2010 branch Added: llvm-gcc-4.2/tags/Apple/llvmgcc42-2010/ - copied from r46148, llvm-gcc-4.2/trunk/ From kremenek at apple.com Thu Jan 17 18:38:08 2008 From: kremenek at apple.com (Ted Kremenek) Date: Fri, 18 Jan 2008 00:38:08 -0000 Subject: [llvm-commits] [llvm] r46150 - /llvm/trunk/include/llvm/ADT/ImmutableMap.h Message-ID: <200801180038.m0I0c8ig030576@zion.cs.uiuc.edu> Author: kremenek Date: Thu Jan 17 18:38:04 2008 New Revision: 46150 URL: http://llvm.org/viewvc/llvm-project?rev=46150&view=rev Log: Reverted implementation of ImmutableMap::find() to return a TreeTy* instead of an iterator, since the implementation returned an iterator that pointed to a different node! Renamed this implementation to SlimFind() so that users do not expect it to return an iterator (it is a more efficient implementation than returning an iterator if the user just wants to find the value of a key). Added a FIXME to implement ImmutableMap::find() that returns an iterator. Modified: llvm/trunk/include/llvm/ADT/ImmutableMap.h Modified: llvm/trunk/include/llvm/ADT/ImmutableMap.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/ImmutableMap.h?rev=46150&r1=46149&r2=46150&view=diff ============================================================================== --- llvm/trunk/include/llvm/ADT/ImmutableMap.h (original) +++ llvm/trunk/include/llvm/ADT/ImmutableMap.h Thu Jan 17 18:38:04 2008 @@ -188,15 +188,17 @@ iterator begin() const { return iterator(Root); } iterator end() const { return iterator(); } - iterator find(key_type_ref K) const { + TreeTy* SlimFind(key_type_ref K) const { if (Root) { TreeTy* T = Root->find(K); - if (T) return iterator(T); + if (T) return T; } - return iterator(); + return NULL; } + // FIXME: Add 'find' that returns an iterator instead of a TreeTy*. + //===--------------------------------------------------===// // Utility methods. //===--------------------------------------------------===// From evan.cheng at apple.com Thu Jan 17 19:46:12 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Fri, 18 Jan 2008 01:46:12 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46156 - /llvm-gcc-4.2/trunk/gcc/config/i386/i386.c Message-ID: <200801180146.m0I1kCZj004888@zion.cs.uiuc.edu> Author: evancheng Date: Thu Jan 17 19:46:11 2008 New Revision: 46156 URL: http://llvm.org/viewvc/llvm-project?rev=46156&view=rev Log: Manually initializing TYPE_MODE of vector types. Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386.c Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/i386.c?rev=46156&r1=46155&r2=46156&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/i386.c (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/i386.c Thu Jan 17 19:46:11 2008 @@ -15553,6 +15553,26 @@ tree V8HI_type_node = build_vector_type_for_mode (intHI_type_node, V8HImode); tree V1DI_type_node = build_vector_type_for_mode (long_long_integer_type_node, V1DImode); + /* APPLE LOCAL begin LLVM */ +#ifdef ENABLE_LLVM + /* LLVM doesn't initialize the RTL backend, so build_vector_type will assign + all of these types BLKmode. This interferes with i386.c-specific + argument passing routines. As such, give them the correct modes here + manually. */ + TYPE_MODE (V16QI_type_node) = V16QImode; + TYPE_MODE (V2SI_type_node) = V2SImode; + TYPE_MODE (V2SF_type_node) = V2SFmode; + TYPE_MODE (V2DI_type_node) = V2DImode; + TYPE_MODE (V2DF_type_node) = V2DFmode; + TYPE_MODE (V4SF_type_node) = V4SFmode; + TYPE_MODE (V4SI_type_node) = V4SImode; + TYPE_MODE (V4HI_type_node) = V4HImode; + TYPE_MODE (V8QI_type_node) = V8QImode; + TYPE_MODE (V8HI_type_node) = V8HImode; + TYPE_MODE (V1DI_type_node) = V1DImode; +#endif + /* APPLE LOCAL end LLVM */ + tree pchar_type_node = build_pointer_type (char_type_node); tree pcchar_type_node = build_pointer_type ( build_type_variant (char_type_node, 1, 0)); From evan.cheng at apple.com Thu Jan 17 19:47:03 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Fri, 18 Jan 2008 01:47:03 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46157 - in /llvm-gcc-4.2/trunk/gcc/config/i386: llvm-i386-target.h llvm-i386.cpp Message-ID: <200801180147.m0I1l4Pr004977@zion.cs.uiuc.edu> Author: evancheng Date: Thu Jan 17 19:47:03 2008 New Revision: 46157 URL: http://llvm.org/viewvc/llvm-project?rev=46157&view=rev Log: Do not pass zero sized array, struct, or class using byval attribute. This is true on both x86-32 and x86-64. Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h?rev=46157&r1=46156&r2=46157&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h Thu Jan 17 19:47:03 2008 @@ -62,10 +62,13 @@ } \ } +extern bool llvm_x86_is_zero_sized_aggregate(tree); extern bool llvm_x86_64_should_pass_aggregate_in_memory(tree); #define LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) \ - (!TARGET_64BIT || llvm_x86_64_should_pass_aggregate_in_memory(X)) + (!llvm_x86_is_zero_sized_aggregate(X) && \ + (!TARGET_64BIT || \ + llvm_x86_64_should_pass_aggregate_in_memory(X))) /* LLVM LOCAL end (ENTIRE FILE!) */ Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp?rev=46157&r1=46156&r2=46157&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Thu Jan 17 19:47:03 2008 @@ -664,6 +664,15 @@ extern "C" enum machine_mode ix86_getNaturalModeForType(tree); extern "C" int ix86_HowToPassArgument(enum machine_mode, tree, int, int*, int*); +/* Target hook for llvm-abi.h. It returns true if the specified type is a + zero sized array, struct, or class. */ +bool llvm_x86_is_zero_sized_aggregate(tree type) { + enum machine_mode Mode = ix86_getNaturalModeForType(type); + HOST_WIDE_INT Bytes = + (Mode == BLKmode) ? int_size_in_bytes(type) : (int) GET_MODE_SIZE(Mode); + return Bytes == 0; +} + /* Target hook for llvm-abi.h. It returns true if an aggregate of the specified type should be passed in memory. This is only called for x86-64. */ From duncan.sands at math.u-psud.fr Fri Jan 18 00:03:40 2008 From: duncan.sands at math.u-psud.fr (Duncan Sands) Date: Fri, 18 Jan 2008 07:03:40 +0100 Subject: [llvm-commits] [llvm] r46140 - in /llvm/trunk: include/llvm/Target/ lib/CodeGen/SelectionDAG/ lib/Target/ lib/Target/ARM/ lib/Target/Alpha/ lib/Target/CellSPU/ lib/Target/Mips/ lib/Target/PowerPC/ lib/Target/Sparc/ lib/Target/X86/ test/CodeGen/X86/ In-Reply-To: <200801171959.m0HJxkwr008950@zion.cs.uiuc.edu> References: <200801171959.m0HJxkwr008950@zion.cs.uiuc.edu> Message-ID: <200801180703.41972.duncan.sands@math.u-psud.fr> Hi Chris, > + LegalizeAction getTruncStoreAction(MVT::ValueType ValVT, > + MVT::ValueType MemVT) const { > + assert(ValVT < MVT::LAST_VALUETYPE && MemVT < 32 && what is 32? Did you mean <= LAST_INTEGER_VALUETYPE or something? Now I come to notice it, it is bad that you have to use < for LAST_VALUE_TYPE but <= for LAST_INTEGER_VALUETYPE and friends... > + void setTruncStoreAction(MVT::ValueType ValVT, MVT::ValueType MemVT, > + LegalizeAction Action) { > + assert(ValVT < MVT::LAST_VALUETYPE && MemVT < 32 && Again the magic 32. > - /// isStoreXLegal - Return true if the specified store with truncation is > + /// isTruncStoreLegal - Return true if the specified store with truncation is > /// legal on this target. > - bool isStoreXLegal(MVT::ValueType VT) const { > - return getStoreXAction(VT) == Legal || getStoreXAction(VT) == Custom; > + bool isTruncStoreLegal(MVT::ValueType ValVT, MVT::ValueType MemVT) const { > + return getTruncStoreAction(ValVT, MemVT) == Legal || > + getTruncStoreAction(ValVT, MemVT) == Custom; > } It would be more friendly to have isStoreXLegal return false if VT or MemVT is an extended value type, rather than having it assert in getTruncStoreAction... > + // If this is an FP_ROUND or TRUNC followed by a store, fold this into a > + // truncating store. We can do this even if this is already a truncstore. > + if ((Value.getOpcode() == ISD::FP_ROUND || Value.getOpcode() == ISD::TRUNCATE) > + && TLI.isTypeLegal(Value.getOperand(0).getValueType()) && > + Value.Val->hasOneUse() && ST->isUnindexed() && > + TLI.isTruncStoreLegal(Value.getOperand(0).getValueType(), > + ST->getStoredVT())) { For example, this will assert if ST->getStoredVT() >= 32, eg an apfloat (!). Also, before legalize this could be done whether all these guys are legal or not I suppose. > + case Expand: > + // Just store the low part. This may become a non-trunc store, so make > + // sure to use getTruncStore, not UpdateNodeOperands below. > + ExpandOp(ST->getValue(), Tmp3, Tmp4); > + return DAG.getTruncStore(Tmp1, Tmp3, Tmp2, ST->getSrcValue(), > + SVOffset, MVT::i8, isVolatile, Alignment); This may be wrong for apints, since the expanded value type may be smaller than ST->getStoredVT(), eg if you are expanding i64, and ST->getStoredVT() is i40. I can take care of this. Ciao, Duncan. From sabre at nondot.org Fri Jan 18 00:52:42 2008 From: sabre at nondot.org (Chris Lattner) Date: Fri, 18 Jan 2008 06:52:42 -0000 Subject: [llvm-commits] [llvm] r46159 - /llvm/trunk/lib/Target/X86/X86ISelLowering.h Message-ID: <200801180652.m0I6qgKY024082@zion.cs.uiuc.edu> Author: lattner Date: Fri Jan 18 00:52:41 2008 New Revision: 46159 URL: http://llvm.org/viewvc/llvm-project?rev=46159&view=rev Log: make a method public Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.h Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.h?rev=46159&r1=46158&r2=46159&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.h (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.h Fri Jan 18 00:52:41 2008 @@ -410,6 +410,13 @@ return static_cast(Subtarget); } + /// isScalarFPTypeInSSEReg - Return true if the specified scalar FP type is + /// computed in an SSE register, not on the X87 floating point stack. + bool isScalarFPTypeInSSEReg(MVT::ValueType VT) const { + return (VT == MVT::f64 && X86ScalarSSEf64) || // f64 is when SSE2 + (VT == MVT::f32 && X86ScalarSSEf32); // f32 is when SSE1 + } + private: /// Subtarget - Keep a pointer to the X86Subtarget around so that we can /// make the right decision when generating code for different targets. @@ -426,13 +433,6 @@ bool X86ScalarSSEf32; bool X86ScalarSSEf64; - /// isScalarFPTypeInSSEReg - Return true if the specified scalar FP type is - /// computed in an SSE register, not on the X87 floating point stack. - bool isScalarFPTypeInSSEReg(MVT::ValueType VT) const { - return (VT == MVT::f64 && X86ScalarSSEf64) || // f64 is when SSE2 - (VT == MVT::f32 && X86ScalarSSEf32); // f32 is when SSE1 - } - SDNode *LowerCallResult(SDOperand Chain, SDOperand InFlag, SDNode*TheCall, unsigned CallingConv, SelectionDAG &DAG); From evan.cheng at apple.com Fri Jan 18 02:39:57 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Fri, 18 Jan 2008 08:39:57 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46160 - /llvm-gcc-4.2/trunk/gcc/config/i386/i386.c Message-ID: <200801180839.m0I8dxIa002235@zion.cs.uiuc.edu> Author: evancheng Date: Fri Jan 18 02:39:55 2008 New Revision: 46160 URL: http://llvm.org/viewvc/llvm-project?rev=46160&view=rev Log: Eliminate a compilation warning: mixing declarations and code is badness. Forgot it's not C++. Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386.c Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/i386.c?rev=46160&r1=46159&r2=46160&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/i386.c (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/i386.c Fri Jan 18 02:39:55 2008 @@ -15553,26 +15553,6 @@ tree V8HI_type_node = build_vector_type_for_mode (intHI_type_node, V8HImode); tree V1DI_type_node = build_vector_type_for_mode (long_long_integer_type_node, V1DImode); - /* APPLE LOCAL begin LLVM */ -#ifdef ENABLE_LLVM - /* LLVM doesn't initialize the RTL backend, so build_vector_type will assign - all of these types BLKmode. This interferes with i386.c-specific - argument passing routines. As such, give them the correct modes here - manually. */ - TYPE_MODE (V16QI_type_node) = V16QImode; - TYPE_MODE (V2SI_type_node) = V2SImode; - TYPE_MODE (V2SF_type_node) = V2SFmode; - TYPE_MODE (V2DI_type_node) = V2DImode; - TYPE_MODE (V2DF_type_node) = V2DFmode; - TYPE_MODE (V4SF_type_node) = V4SFmode; - TYPE_MODE (V4SI_type_node) = V4SImode; - TYPE_MODE (V4HI_type_node) = V4HImode; - TYPE_MODE (V8QI_type_node) = V8QImode; - TYPE_MODE (V8HI_type_node) = V8HImode; - TYPE_MODE (V1DI_type_node) = V1DImode; -#endif - /* APPLE LOCAL end LLVM */ - tree pchar_type_node = build_pointer_type (char_type_node); tree pcchar_type_node = build_pointer_type ( build_type_variant (char_type_node, 1, 0)); @@ -15860,6 +15840,26 @@ tree float128_type; tree ftype; + /* APPLE LOCAL begin LLVM */ +#ifdef ENABLE_LLVM + /* LLVM doesn't initialize the RTL backend, so build_vector_type will assign + all of these types BLKmode. This interferes with i386.c-specific + argument passing routines. As such, give them the correct modes here + manually. */ + TYPE_MODE (V16QI_type_node) = V16QImode; + TYPE_MODE (V2SI_type_node) = V2SImode; + TYPE_MODE (V2SF_type_node) = V2SFmode; + TYPE_MODE (V2DI_type_node) = V2DImode; + TYPE_MODE (V2DF_type_node) = V2DFmode; + TYPE_MODE (V4SF_type_node) = V4SFmode; + TYPE_MODE (V4SI_type_node) = V4SImode; + TYPE_MODE (V4HI_type_node) = V4HImode; + TYPE_MODE (V8QI_type_node) = V8QImode; + TYPE_MODE (V8HI_type_node) = V8HImode; + TYPE_MODE (V1DI_type_node) = V1DImode; +#endif + /* APPLE LOCAL end LLVM */ + /* The __float80 type. */ if (TYPE_MODE (long_double_type_node) == XFmode) (*lang_hooks.types.register_builtin_type) (long_double_type_node, From baldrick at free.fr Fri Jan 18 03:39:40 2008 From: baldrick at free.fr (Duncan Sands) Date: Fri, 18 Jan 2008 10:39:40 +0100 Subject: [llvm-commits] [llvm-gcc-4.2] r46157 - in /llvm-gcc-4.2/trunk/gcc/config/i386: llvm-i386-target.h llvm-i386.cpp Message-ID: <200801181039.41291.baldrick@free.fr> Hi Evan, > Do not pass zero sized array, struct, or class using byval attribute. This is true on both x86-32 and x86-64. is this because LLVM can't handle it, or is it an optimization? If LLVM can't handle passing zero-sized objects using byval, that sounds like a bug... Thanks, Duncan. From sabre at nondot.org Fri Jan 18 11:13:03 2008 From: sabre at nondot.org (Chris Lattner) Date: Fri, 18 Jan 2008 17:13:03 -0000 Subject: [llvm-commits] [llvm] r46162 - /llvm/trunk/include/llvm/Target/TargetLowering.h Message-ID: <200801181713.m0IHD34M003028@zion.cs.uiuc.edu> Author: lattner Date: Fri Jan 18 11:13:03 2008 New Revision: 46162 URL: http://llvm.org/viewvc/llvm-project?rev=46162&view=rev Log: remove magic numbers. Modified: llvm/trunk/include/llvm/Target/TargetLowering.h Modified: llvm/trunk/include/llvm/Target/TargetLowering.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetLowering.h?rev=46162&r1=46161&r2=46162&view=diff ============================================================================== --- llvm/trunk/include/llvm/Target/TargetLowering.h (original) +++ llvm/trunk/include/llvm/Target/TargetLowering.h Fri Jan 18 11:13:03 2008 @@ -307,8 +307,8 @@ /// expander for it. LegalizeAction getTruncStoreAction(MVT::ValueType ValVT, MVT::ValueType MemVT) const { - assert(ValVT < MVT::LAST_VALUETYPE && MemVT < 32 && - "Table isn't big enough!"); + assert(ValVT < array_lengthof(TruncStoreActions) && + MemVT < sizeof(TruncStoreActions[0])*4 && "Table isn't big enough!"); return (LegalizeAction)((TruncStoreActions[ValVT] >> (2*MemVT)) & 3); } @@ -359,8 +359,8 @@ /// for it. LegalizeAction getConvertAction(MVT::ValueType FromVT, MVT::ValueType ToVT) const { - assert(FromVT < MVT::LAST_VALUETYPE && ToVT < 32 && - "Table isn't big enough!"); + assert(FromVT < array_lengthof(ConvertActions) && + ToVT < sizeof(ConvertActions[0])*4 && "Table isn't big enough!"); return (LegalizeAction)((ConvertActions[FromVT] >> (2*ToVT)) & 3); } @@ -747,7 +747,7 @@ /// with the specified type and indicate what to do about it. void setOperationAction(unsigned Op, MVT::ValueType VT, LegalizeAction Action) { - assert(VT < 32 && Op < array_lengthof(OpActions) && + assert(VT < sizeof(OpActions[0])*4 && Op < array_lengthof(OpActions) && "Table isn't big enough!"); OpActions[Op] &= ~(uint64_t(3UL) << VT*2); OpActions[Op] |= (uint64_t)Action << VT*2; @@ -757,7 +757,8 @@ /// work with the with specified type and indicate what to do about it. void setLoadXAction(unsigned ExtType, MVT::ValueType VT, LegalizeAction Action) { - assert(VT < 32 && ExtType < array_lengthof(LoadXActions) && + assert(VT < sizeof(LoadXActions[0])*4 && + ExtType < array_lengthof(LoadXActions) && "Table isn't big enough!"); LoadXActions[ExtType] &= ~(uint64_t(3UL) << VT*2); LoadXActions[ExtType] |= (uint64_t)Action << VT*2; @@ -767,8 +768,8 @@ /// not work with the with specified type and indicate what to do about it. void setTruncStoreAction(MVT::ValueType ValVT, MVT::ValueType MemVT, LegalizeAction Action) { - assert(ValVT < MVT::LAST_VALUETYPE && MemVT < 32 && - "Table isn't big enough!"); + assert(ValVT < array_lengthof(TruncStoreActions) && + MemVT < sizeof(TruncStoreActions[0])*4 && "Table isn't big enough!"); TruncStoreActions[ValVT] &= ~(uint64_t(3UL) << MemVT*2); TruncStoreActions[ValVT] |= (uint64_t)Action << MemVT*2; } @@ -779,7 +780,7 @@ /// TargetLowering.cpp void setIndexedLoadAction(unsigned IdxMode, MVT::ValueType VT, LegalizeAction Action) { - assert(VT < 32 && IdxMode < + assert(VT < sizeof(IndexedModeActions[0])*4 && IdxMode < array_lengthof(IndexedModeActions[0]) && "Table isn't big enough!"); IndexedModeActions[0][IdxMode] &= ~(uint64_t(3UL) << VT*2); @@ -792,8 +793,8 @@ /// TargetLowering.cpp void setIndexedStoreAction(unsigned IdxMode, MVT::ValueType VT, LegalizeAction Action) { - assert(VT < 32 && IdxMode < - array_lengthof(IndexedModeActions[1]) && + assert(VT < sizeof(IndexedModeActions[1][0])*4 && + IdxMode < array_lengthof(IndexedModeActions[1]) && "Table isn't big enough!"); IndexedModeActions[1][IdxMode] &= ~(uint64_t(3UL) << VT*2); IndexedModeActions[1][IdxMode] |= (uint64_t)Action << VT*2; @@ -803,8 +804,8 @@ /// not work with the with specified type and indicate what to do about it. void setConvertAction(MVT::ValueType FromVT, MVT::ValueType ToVT, LegalizeAction Action) { - assert(FromVT < MVT::LAST_VALUETYPE && ToVT < 32 && - "Table isn't big enough!"); + assert(FromVT < array_lengthof(ConvertActions) && + ToVT < sizeof(ConvertActions[0])*4 && "Table isn't big enough!"); ConvertActions[FromVT] &= ~(uint64_t(3UL) << ToVT*2); ConvertActions[FromVT] |= (uint64_t)Action << ToVT*2; } From clattner at apple.com Fri Jan 18 11:17:25 2008 From: clattner at apple.com (Chris Lattner) Date: Fri, 18 Jan 2008 09:17:25 -0800 Subject: [llvm-commits] [llvm] r46140 - in /llvm/trunk: include/llvm/Target/ lib/CodeGen/SelectionDAG/ lib/Target/ lib/Target/ARM/ lib/Target/Alpha/ lib/Target/CellSPU/ lib/Target/Mips/ lib/Target/PowerPC/ lib/Target/Sparc/ lib/Target/X86/ test/CodeGen/X86/ In-Reply-To: <200801180703.41972.duncan.sands@math.u-psud.fr> References: <200801171959.m0HJxkwr008950@zion.cs.uiuc.edu> <200801180703.41972.duncan.sands@math.u-psud.fr> Message-ID: <6DEA4FD0-2FEA-4EE4-93D3-217356D558B3@apple.com> On Jan 17, 2008, at 10:03 PM, Duncan Sands wrote: > Hi Chris, >> + LegalizeAction getTruncStoreAction(MVT::ValueType ValVT, >> + MVT::ValueType MemVT) const { >> + assert(ValVT < MVT::LAST_VALUETYPE && MemVT < 32 && > > what is 32? Did you mean <= LAST_INTEGER_VALUETYPE or something? > Now I > come to notice it, it is bad that you have to use < for > LAST_VALUE_TYPE > but <= for LAST_INTEGER_VALUETYPE and friends... 32 is sizeof(uint64_t)*8 / 2, because each entry takes two bits in a uint64_t. I converted this to symbolic math to make it more obvious, and switched to using array_lengthof instead of comparing against MVT::LAST_VALUETYPE directly. >> - /// isStoreXLegal - Return true if the specified store with >> truncation is >> + /// isTruncStoreLegal - Return true if the specified store with >> truncation is >> /// legal on this target. >> - bool isStoreXLegal(MVT::ValueType VT) const { >> - return getStoreXAction(VT) == Legal || getStoreXAction(VT) == >> Custom; >> + bool isTruncStoreLegal(MVT::ValueType ValVT, MVT::ValueType >> MemVT) const { >> + return getTruncStoreAction(ValVT, MemVT) == Legal || >> + getTruncStoreAction(ValVT, MemVT) == Custom; >> } > > It would be more friendly to have isStoreXLegal return false if VT > or MemVT is > an extended value type, rather than having it assert in > getTruncStoreAction... This is tricky because I can't just use isTypeLegal here. PPC for example supports a truncstore from i32 to i8 even though i8 isn't legal. When I return to working on apints, I'll figure out what the right answer is. >> + // If this is an FP_ROUND or TRUNC followed by a store, fold >> this into a >> + // truncating store. We can do this even if this is already a >> truncstore. >> + if ((Value.getOpcode() == ISD::FP_ROUND || Value.getOpcode() == >> ISD::TRUNCATE) >> + && TLI.isTypeLegal(Value.getOperand(0).getValueType()) && >> + Value.Val->hasOneUse() && ST->isUnindexed() && >> + TLI.isTruncStoreLegal(Value.getOperand(0).getValueType(), >> + ST->getStoredVT())) { > > For example, this will assert if ST->getStoredVT() >= 32, eg an > apfloat (!). Also, > before legalize this could be done whether all these guys are legal > or not I suppose. It could be done, but isn't profitable and doesn't simplify the code necessarily. >> + case Expand: >> + // Just store the low part. This may become a non-trunc >> store, so make >> + // sure to use getTruncStore, not UpdateNodeOperands below. >> + ExpandOp(ST->getValue(), Tmp3, Tmp4); >> + return DAG.getTruncStore(Tmp1, Tmp3, Tmp2, ST- >> >getSrcValue(), >> + SVOffset, MVT::i8, isVolatile, >> Alignment); > > This may be wrong for apints, since the expanded value type may be > smaller than > ST->getStoredVT(), eg if you are expanding i64, and ST- > >getStoredVT() is i40. I > can take care of this. Ok. As it turns out, I think this code is unreachable currently. If we made the above dag combine xform happen even for illegal xforms before legalize, then this code would be live. -Chris From evan.cheng at apple.com Fri Jan 18 11:37:32 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Fri, 18 Jan 2008 09:37:32 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r46157 - in /llvm-gcc-4.2/trunk/gcc/config/i386: llvm-i386-target.h llvm-i386.cpp In-Reply-To: <200801181039.41291.baldrick@free.fr> References: <200801181039.41291.baldrick@free.fr> Message-ID: <3E70A682-566F-4E01-B585-DC36D5FCC419@apple.com> It's for ABI compatibility reason. Also, it makes sense. Evan On Jan 18, 2008, at 1:39 AM, Duncan Sands wrote: > Hi Evan, > >> Do not pass zero sized array, struct, or class using byval >> attribute. This is true on both x86-32 and x86-64. > > is this because LLVM can't handle it, or is it an optimization? > If LLVM can't handle passing zero-sized objects using byval, that > sounds like a bug... > > Thanks, > > Duncan. From baldrick at free.fr Fri Jan 18 12:12:07 2008 From: baldrick at free.fr (Duncan Sands) Date: Fri, 18 Jan 2008 19:12:07 +0100 Subject: [llvm-commits] [llvm-gcc-4.2] r46157 - in /llvm-gcc-4.2/trunk/gcc/config/i386: llvm-i386-target.h llvm-i386.cpp In-Reply-To: <3E70A682-566F-4E01-B585-DC36D5FCC419@apple.com> References: <200801181039.41291.baldrick@free.fr> <3E70A682-566F-4E01-B585-DC36D5FCC419@apple.com> Message-ID: <200801181912.08179.baldrick@free.fr> Hi Evan, > It's for ABI compatibility reason. Also, it makes sense. presumably this results in the parameter being dropped? If so, the LLVM codegenerators could do that too. And either they should, or the verifier should check for this case. Ciao, Duncan. From lattner at apple.com Fri Jan 18 12:13:06 2008 From: lattner at apple.com (Tanya Lattner) Date: Fri, 18 Jan 2008 10:13:06 -0800 Subject: [llvm-commits] [llvm] r46144 - in /llvm/trunk/lib/Target: PowerPC/PPCAsmPrinter.cpp X86/X86AsmPrinter.cpp In-Reply-To: <200801172304.m0HN48mF023476@zion.cs.uiuc.edu> References: <200801172304.m0HN48mF023476@zion.cs.uiuc.edu> Message-ID: <1B7759E6-A5C8-4182-952E-EB338B4B39B7@apple.com> Should the test/CodeGen/X86/aligned-comm.ll be un-XFAILED? Its now XPASSing. -Tanya On Jan 17, 2008, at 3:04 PM, Dale Johannesen wrote: > Author: johannes > Date: Thu Jan 17 17:04:07 2008 > New Revision: 46144 > > URL: http://llvm.org/viewvc/llvm-project?rev=46144&view=rev > Log: > Revert the part of 45848 that treated weak globals > as weak globals rather than commons. While not wrong, > this change tickled a latent bug in Darwin's strip, > so revert it for now as a workaround. > > > Modified: > llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp > llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp > > Modified: llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ > PowerPC/PPCAsmPrinter.cpp?rev=46144&r1=46143&r2=46144&view=diff > > ====================================================================== > ======== > --- llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp (original) > +++ llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp Thu Jan 17 > 17:04:07 2008 > @@ -917,7 +917,8 @@ > > if (C->isNullValue() && /* FIXME: Verify correct */ > !I->hasSection() && > - (I->hasInternalLinkage() || I->hasExternalLinkage())) { > + (I->hasInternalLinkage() || I->hasWeakLinkage() || > + I->hasLinkOnceLinkage() || I->hasExternalLinkage())) { > if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, > avoid it. > if (I->hasExternalLinkage()) { > O << "\t.globl " << name << '\n'; > > Modified: llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/ > X86AsmPrinter.cpp?rev=46144&r1=46143&r2=46144&view=diff > > ====================================================================== > ======== > --- llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp (original) > +++ llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp Thu Jan 17 17:04:07 > 2008 > @@ -181,9 +181,8 @@ > } > > if (!I->isThreadLocal() && > - (I->hasInternalLinkage() || > - (!Subtarget->isTargetDarwin() && > - (I->hasWeakLinkage() || I->hasLinkOnceLinkage())))) { > + (I->hasInternalLinkage() || I->hasWeakLinkage() || > + I->hasLinkOnceLinkage())) { > if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, > avoid it. > if (!NoZerosInBSS && TAI->getBSSSection()) > SwitchToDataSection(TAI->getBSSSection(), I); > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From lauro.venancio at gmail.com Fri Jan 18 12:14:24 2008 From: lauro.venancio at gmail.com (Lauro Ramos Venancio) Date: Fri, 18 Jan 2008 18:14:24 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46163 - /llvm-gcc-4.2/trunk/gcc/config/arm/arm.c Message-ID: <200801181814.m0IIEO9q008050@zion.cs.uiuc.edu> Author: laurov Date: Fri Jan 18 12:14:23 2008 New Revision: 46163 URL: http://llvm.org/viewvc/llvm-project?rev=46163&view=rev Log: Eliminate a compilation warning. Modified: llvm-gcc-4.2/trunk/gcc/config/arm/arm.c Modified: llvm-gcc-4.2/trunk/gcc/config/arm/arm.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/arm/arm.c?rev=46163&r1=46162&r2=46163&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/arm/arm.c (original) +++ llvm-gcc-4.2/trunk/gcc/config/arm/arm.c Fri Jan 18 12:14:23 2008 @@ -15233,11 +15233,14 @@ (inter-module thumbness is fixed up by the linker). */ rtx tem = gen_rtx_SYMBOL_REF (Pmode, function_name); - if (TARGET_MACHO - && ! machopic_data_defined_p (function_rtx)) +#if TARGET_MACHO + if (! machopic_data_defined_p (function_rtx)) tem = gen_rtx_PLUS (GET_MODE (tem), tem, GEN_INT (-8)); else tem = gen_rtx_PLUS (GET_MODE (tem), tem, GEN_INT (-7)); +#else + tem = gen_rtx_PLUS (GET_MODE (tem), tem, GEN_INT (-7)); +#endif /* APPLE LOCAL end ARM 4745175 */ tem = gen_rtx_MINUS (GET_MODE (tem), From baldrick at free.fr Fri Jan 18 12:15:04 2008 From: baldrick at free.fr (Duncan Sands) Date: Fri, 18 Jan 2008 19:15:04 +0100 Subject: [llvm-commits] =?iso-8859-1?q?=5Bllvm=5D_r46140_-_in_/llvm/trunk?= =?iso-8859-1?q?=3A_include/llvm/Target/_lib/CodeGen/SelectionDAG/_lib/Tar?= =?iso-8859-1?q?get/=09lib/Target/ARM/_lib/Target/Alpha/_lib/Target/CellSP?= =?iso-8859-1?q?U/=09lib/Target/Mips/_lib/Target/PowerPC/_lib/Target/Sparc?= =?iso-8859-1?q?/=09lib/Target/X86/_test/CodeGen/X86/?= In-Reply-To: <6DEA4FD0-2FEA-4EE4-93D3-217356D558B3@apple.com> References: <200801171959.m0HJxkwr008950@zion.cs.uiuc.edu> <200801180703.41972.duncan.sands@math.u-psud.fr> <6DEA4FD0-2FEA-4EE4-93D3-217356D558B3@apple.com> Message-ID: <200801181915.05498.baldrick@free.fr> Hi Chris, > 32 is sizeof(uint64_t)*8 / 2, because each entry takes two bits in a > uint64_t. > > I converted this to symbolic math to make it more obvious, and > switched to using array_lengthof instead of comparing against > MVT::LAST_VALUETYPE directly. thanks! > > This may be wrong for apints, since the expanded value type may be > > smaller than > > ST->getStoredVT(), eg if you are expanding i64, and ST- > > >getStoredVT() is i40. I > > can take care of this. > > Ok. As it turns out, I think this code is unreachable currently. If > we made the above dag combine xform happen even for illegal xforms > before legalize, then this code would be live. I'd forgotten that the new legalize stuff already takes care of this case, and once that is turned on this particular bit of code will be removed anyway (though not the part following which handles illegal trunc store of a legal type). Ciao, Duncan. From dalej at apple.com Fri Jan 18 12:19:09 2008 From: dalej at apple.com (Dale Johannesen) Date: Fri, 18 Jan 2008 10:19:09 -0800 Subject: [llvm-commits] [llvm] r46144 - in /llvm/trunk/lib/Target: PowerPC/PPCAsmPrinter.cpp X86/X86AsmPrinter.cpp In-Reply-To: <1B7759E6-A5C8-4182-952E-EB338B4B39B7@apple.com> References: <200801172304.m0HN48mF023476@zion.cs.uiuc.edu> <1B7759E6-A5C8-4182-952E-EB338B4B39B7@apple.com> Message-ID: On Jan 18, 2008, at 10:13 AM, Tanya Lattner wrote: > Should the test/CodeGen/X86/aligned-comm.ll be un-XFAILED? Its now > XPASSing. > > -Tanya I guess so; given the current state of llvm it is supposed to pass. Longterm what should happen is that tentative definitions ("common") get represented differently in the IR than weak globals; when that happens the test will be incorrect (again). > On Jan 17, 2008, at 3:04 PM, Dale Johannesen wrote: > >> Author: johannes >> Date: Thu Jan 17 17:04:07 2008 >> New Revision: 46144 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=46144&view=rev >> Log: >> Revert the part of 45848 that treated weak globals >> as weak globals rather than commons. While not wrong, >> this change tickled a latent bug in Darwin's strip, >> so revert it for now as a workaround. >> >> >> Modified: >> llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp >> llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp >> >> Modified: llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp >> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ >> PowerPC/PPCAsmPrinter.cpp?rev=46144&r1=46143&r2=46144&view=diff >> >> = >> ===================================================================== >> ======== >> --- llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp (original) >> +++ llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp Thu Jan 17 >> 17:04:07 2008 >> @@ -917,7 +917,8 @@ >> >> if (C->isNullValue() && /* FIXME: Verify correct */ >> !I->hasSection() && >> - (I->hasInternalLinkage() || I->hasExternalLinkage())) { >> + (I->hasInternalLinkage() || I->hasWeakLinkage() || >> + I->hasLinkOnceLinkage() || I->hasExternalLinkage())) { >> if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, >> avoid it. >> if (I->hasExternalLinkage()) { >> O << "\t.globl " << name << '\n'; >> >> Modified: llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp >> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/ >> X86AsmPrinter.cpp?rev=46144&r1=46143&r2=46144&view=diff >> >> = >> ===================================================================== >> ======== >> --- llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp (original) >> +++ llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp Thu Jan 17 17:04:07 >> 2008 >> @@ -181,9 +181,8 @@ >> } >> >> if (!I->isThreadLocal() && >> - (I->hasInternalLinkage() || >> - (!Subtarget->isTargetDarwin() && >> - (I->hasWeakLinkage() || I->hasLinkOnceLinkage())))) { >> + (I->hasInternalLinkage() || I->hasWeakLinkage() || >> + I->hasLinkOnceLinkage())) { >> if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, >> avoid it. >> if (!NoZerosInBSS && TAI->getBSSSection()) >> SwitchToDataSection(TAI->getBSSSection(), I); >> >> >> _______________________________________________ >> llvm-commits mailing list >> llvm-commits at cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From clattner at apple.com Fri Jan 18 12:21:52 2008 From: clattner at apple.com (Chris Lattner) Date: Fri, 18 Jan 2008 10:21:52 -0800 Subject: [llvm-commits] [llvm] r46144 - in /llvm/trunk/lib/Target: PowerPC/PPCAsmPrinter.cpp X86/X86AsmPrinter.cpp In-Reply-To: References: <200801172304.m0HN48mF023476@zion.cs.uiuc.edu> <1B7759E6-A5C8-4182-952E-EB338B4B39B7@apple.com> Message-ID: <541E6481-E068-472C-9981-D2B5C0E583DF@apple.com> On Jan 18, 2008, at 10:19 AM, Dale Johannesen wrote: > On Jan 18, 2008, at 10:13 AM, Tanya Lattner wrote: >> Should the test/CodeGen/X86/aligned-comm.ll be un-XFAILED? Its now >> XPASSing. >> >> -Tanya > > I guess so; given the current state of llvm it is supposed to pass. > Longterm what should happen is that tentative definitions ("common") > get represented differently in the IR than weak globals; when that > happens the test will be incorrect (again). The goal is to keep the tree in a state where all tests pass or xfail. Please update the test, and if you commit something that breaks a test, please xfail it. Thanks Dale, -Chris From evan.cheng at apple.com Fri Jan 18 12:35:19 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Fri, 18 Jan 2008 18:35:19 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46164 - in /llvm-gcc-4.2/trunk/gcc/config/i386: llvm-i386-target.h llvm-i386.cpp Message-ID: <200801181835.m0IIZJMU009764@zion.cs.uiuc.edu> Author: evancheng Date: Fri Jan 18 12:35:18 2008 New Revision: 46164 URL: http://llvm.org/viewvc/llvm-project?rev=46164&view=rev Log: i32 / i64 all integer structs are not passed byval. Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h?rev=46164&r1=46163&r2=46164&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h Fri Jan 18 12:35:18 2008 @@ -62,13 +62,10 @@ } \ } -extern bool llvm_x86_is_zero_sized_aggregate(tree); -extern bool llvm_x86_64_should_pass_aggregate_in_memory(tree); +extern bool llvm_x86_should_pass_aggregate_in_memory(tree); #define LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) \ - (!llvm_x86_is_zero_sized_aggregate(X) && \ - (!TARGET_64BIT || \ - llvm_x86_64_should_pass_aggregate_in_memory(X))) + llvm_x86_should_pass_aggregate_in_memory(X) /* LLVM LOCAL end (ENTIRE FILE!) */ Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp?rev=46164&r1=46163&r2=46164&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Fri Jan 18 12:35:18 2008 @@ -664,23 +664,43 @@ extern "C" enum machine_mode ix86_getNaturalModeForType(tree); extern "C" int ix86_HowToPassArgument(enum machine_mode, tree, int, int*, int*); -/* Target hook for llvm-abi.h. It returns true if the specified type is a - zero sized array, struct, or class. */ -bool llvm_x86_is_zero_sized_aggregate(tree type) { - enum machine_mode Mode = ix86_getNaturalModeForType(type); - HOST_WIDE_INT Bytes = - (Mode == BLKmode) ? int_size_in_bytes(type) : (int) GET_MODE_SIZE(Mode); - return Bytes == 0; -} - /* Target hook for llvm-abi.h. It returns true if an aggregate of the specified type should be passed in memory. This is only called for x86-64. */ -bool llvm_x86_64_should_pass_aggregate_in_memory(tree type) { +static bool llvm_x86_64_should_pass_aggregate_in_memory(tree type, + enum machine_mode Mode){ int IntRegs, SSERegs; - enum machine_mode Mode = ix86_getNaturalModeForType(type); /* If ix86_HowToPassArgument return 0, then it's passed byval in memory.*/ return !ix86_HowToPassArgument(Mode, type, 0, &IntRegs, &SSERegs); } +/* Target hook for llvm-abi.h. It returns true if an aggregate of the + specified type should be passed in memory. */ +bool llvm_x86_should_pass_aggregate_in_memory(tree type) { + enum machine_mode Mode = ix86_getNaturalModeForType(type); + HOST_WIDE_INT Bytes = + (Mode == BLKmode) ? int_size_in_bytes(type) : (int) GET_MODE_SIZE(Mode); + + // Zero sized array, struct, or class, not passed in memory. + if (Bytes == 0) + return false; + + if (Bytes == GET_MODE_SIZE(SImode) || Bytes == GET_MODE_SIZE(DImode)) { + // 32-bit or 64-bit and all elements are integers, not passed in memory. + bool AllIntegers = true; + const Type *Ty = ConvertType(type); + for (Type::subtype_iterator I = Ty->subtype_begin(), E = Ty->subtype_end(); + I != E; ++I) + if (!I->get()->isIntOrIntVector()) { + AllIntegers = false; + break; + } + if (AllIntegers) + return false; + } + if (!TARGET_64BIT) + return true; + return llvm_x86_64_should_pass_aggregate_in_memory(type, Mode); +} + /* LLVM LOCAL end (ENTIRE FILE!) */ From sabre at nondot.org Fri Jan 18 12:51:20 2008 From: sabre at nondot.org (Chris Lattner) Date: Fri, 18 Jan 2008 18:51:20 -0000 Subject: [llvm-commits] [llvm] r46165 - /llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp Message-ID: <200801181851.m0IIpK8m011180@zion.cs.uiuc.edu> Author: lattner Date: Fri Jan 18 12:51:16 2008 New Revision: 46165 URL: http://llvm.org/viewvc/llvm-project?rev=46165&view=rev Log: get symbolic information for ppc ldbl nodes. Modified: llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp Modified: llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp?rev=46165&r1=46164&r2=46165&view=diff ============================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp (original) +++ llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp Fri Jan 18 12:51:16 2008 @@ -382,6 +382,11 @@ case PPCISD::LBRX: return "PPCISD::LBRX"; case PPCISD::STBRX: return "PPCISD::STBRX"; case PPCISD::COND_BRANCH: return "PPCISD::COND_BRANCH"; + case PPCISD::MFFS: return "PPCISD::MFFS"; + case PPCISD::MTFSB0: return "PPCISD::MTFSB0"; + case PPCISD::MTFSB1: return "PPCISD::MTFSB1"; + case PPCISD::FADDRTZ: return "PPCISD::FADDRTZ"; + case PPCISD::MTFSF: return "PPCISD::MTFSF"; } } From sabre at nondot.org Fri Jan 18 12:54:32 2008 From: sabre at nondot.org (Chris Lattner) Date: Fri, 18 Jan 2008 18:54:32 -0000 Subject: [llvm-commits] [llvm] r46166 - /llvm/trunk/include/llvm/ADT/StringExtras.h Message-ID: <200801181854.m0IIsWgX011393@zion.cs.uiuc.edu> Author: lattner Date: Fri Jan 18 12:54:31 2008 New Revision: 46166 URL: http://llvm.org/viewvc/llvm-project?rev=46166&view=rev Log: don't form an std::string with a null pointer, it aborts. Modified: llvm/trunk/include/llvm/ADT/StringExtras.h Modified: llvm/trunk/include/llvm/ADT/StringExtras.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringExtras.h?rev=46166&r1=46165&r2=46166&view=diff ============================================================================== --- llvm/trunk/include/llvm/ADT/StringExtras.h (original) +++ llvm/trunk/include/llvm/ADT/StringExtras.h Fri Jan 18 12:54:31 2008 @@ -98,7 +98,7 @@ return ftostr(V.convertToDouble()); else if (&V.getSemantics() == &APFloat::IEEEsingle) return ftostr((double)V.convertToFloat()); - return 0; // error + return ""; // error } static inline std::string LowercaseString(const std::string &S) { From tonic at nondot.org Fri Jan 18 13:13:34 2008 From: tonic at nondot.org (Tanya Lattner) Date: Fri, 18 Jan 2008 19:13:34 -0000 Subject: [llvm-commits] [llvm] r46167 - in /llvm/branches/release_22/lib/Target: PowerPC/PPCAsmPrinter.cpp X86/X86AsmPrinter.cpp Message-ID: <200801181913.m0IJDY15012632@zion.cs.uiuc.edu> Author: tbrethou Date: Fri Jan 18 13:13:34 2008 New Revision: 46167 URL: http://llvm.org/viewvc/llvm-project?rev=46167&view=rev Log: Merge from mainline. Revert the part of 45848 that treated weak globals as weak globals rather than commons. While not wrong, this change tickled a latent bug in Darwin's strip, so revert it for now as a workaround. Modified: llvm/branches/release_22/lib/Target/PowerPC/PPCAsmPrinter.cpp llvm/branches/release_22/lib/Target/X86/X86AsmPrinter.cpp Modified: llvm/branches/release_22/lib/Target/PowerPC/PPCAsmPrinter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_22/lib/Target/PowerPC/PPCAsmPrinter.cpp?rev=46167&r1=46166&r2=46167&view=diff ============================================================================== --- llvm/branches/release_22/lib/Target/PowerPC/PPCAsmPrinter.cpp (original) +++ llvm/branches/release_22/lib/Target/PowerPC/PPCAsmPrinter.cpp Fri Jan 18 13:13:34 2008 @@ -917,7 +917,8 @@ if (C->isNullValue() && /* FIXME: Verify correct */ !I->hasSection() && - (I->hasInternalLinkage() || I->hasExternalLinkage())) { + (I->hasInternalLinkage() || I->hasWeakLinkage() || + I->hasLinkOnceLinkage() || I->hasExternalLinkage())) { if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, avoid it. if (I->hasExternalLinkage()) { O << "\t.globl " << name << '\n'; Modified: llvm/branches/release_22/lib/Target/X86/X86AsmPrinter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_22/lib/Target/X86/X86AsmPrinter.cpp?rev=46167&r1=46166&r2=46167&view=diff ============================================================================== --- llvm/branches/release_22/lib/Target/X86/X86AsmPrinter.cpp (original) +++ llvm/branches/release_22/lib/Target/X86/X86AsmPrinter.cpp Fri Jan 18 13:13:34 2008 @@ -181,9 +181,8 @@ } if (!I->isThreadLocal() && - (I->hasInternalLinkage() || - (!Subtarget->isTargetDarwin() && - (I->hasWeakLinkage() || I->hasLinkOnceLinkage())))) { + (I->hasInternalLinkage() || I->hasWeakLinkage() || + I->hasLinkOnceLinkage())) { if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, avoid it. if (!NoZerosInBSS && TAI->getBSSSection()) SwitchToDataSection(TAI->getBSSSection(), I); From tonic at nondot.org Fri Jan 18 13:15:09 2008 From: tonic at nondot.org (Tanya Lattner) Date: Fri, 18 Jan 2008 19:15:09 -0000 Subject: [llvm-commits] [llvm] r46168 - /llvm/branches/release_22/lib/Target/ARM/ARMAsmPrinter.cpp Message-ID: <200801181915.m0IJF9X8012861@zion.cs.uiuc.edu> Author: tbrethou Date: Fri Jan 18 13:15:06 2008 New Revision: 46168 URL: http://llvm.org/viewvc/llvm-project?rev=46168&view=rev Log: Merge from mainline. Revert the part of 45849 that treated weak globals as weak globals rather than commons. While not wrong, this change tickled a latent bug in Darwin's strip, so revert it for now as a workaround. Modified: llvm/branches/release_22/lib/Target/ARM/ARMAsmPrinter.cpp Modified: llvm/branches/release_22/lib/Target/ARM/ARMAsmPrinter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_22/lib/Target/ARM/ARMAsmPrinter.cpp?rev=46168&r1=46167&r2=46168&view=diff ============================================================================== --- llvm/branches/release_22/lib/Target/ARM/ARMAsmPrinter.cpp (original) +++ llvm/branches/release_22/lib/Target/ARM/ARMAsmPrinter.cpp Fri Jan 18 13:15:06 2008 @@ -845,9 +845,8 @@ } } - if (I->hasInternalLinkage() || - (!Subtarget->isTargetDarwin() && - (I->hasWeakLinkage() || I->hasLinkOnceLinkage()))) { + if (I->hasInternalLinkage() || I->hasWeakLinkage() || + I->hasLinkOnceLinkage()) { if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, avoid it. if (!NoZerosInBSS && TAI->getBSSSection()) SwitchToDataSection(TAI->getBSSSection(), I); From tonic at nondot.org Fri Jan 18 13:18:52 2008 From: tonic at nondot.org (Tanya Lattner) Date: Fri, 18 Jan 2008 19:18:52 -0000 Subject: [llvm-commits] [llvm] r46169 - /llvm/branches/release_22/test/CodeGen/X86/aligned-comm.ll Message-ID: <200801181918.m0IJIqFT013242@zion.cs.uiuc.edu> Author: tbrethou Date: Fri Jan 18 13:18:51 2008 New Revision: 46169 URL: http://llvm.org/viewvc/llvm-project?rev=46169&view=rev Log: UnXFAIL this test. Modified: llvm/branches/release_22/test/CodeGen/X86/aligned-comm.ll Modified: llvm/branches/release_22/test/CodeGen/X86/aligned-comm.ll URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_22/test/CodeGen/X86/aligned-comm.ll?rev=46169&r1=46168&r2=46169&view=diff ============================================================================== --- llvm/branches/release_22/test/CodeGen/X86/aligned-comm.ll (original) +++ llvm/branches/release_22/test/CodeGen/X86/aligned-comm.ll Fri Jan 18 13:18:51 2008 @@ -2,9 +2,6 @@ ; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin10 | grep {array,16512,7} ; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin9 | grep {array,16512,7} ; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin8 | not grep {7} -; XFAIL: * - -; Currently there is no construct which generates .comm, so test is xfail'ed. ; Darwin 9+ should get alignment on common symbols. Darwin8 does ; not support this. From dpatel at apple.com Fri Jan 18 13:35:01 2008 From: dpatel at apple.com (Devang Patel) Date: Fri, 18 Jan 2008 19:35:01 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46170 - in /llvm-gcc-4.2/trunk/gcc: autom4te.cache/output.0 autom4te.cache/requests autom4te.cache/traces.0 configure configure.ac Message-ID: <200801181935.m0IJZ1FT014499@zion.cs.uiuc.edu> Author: dpatel Date: Fri Jan 18 13:35:00 2008 New Revision: 46170 URL: http://llvm.org/viewvc/llvm-project?rev=46170&view=rev Log: Do not select Release build if --enable-checking is ON. Modified: llvm-gcc-4.2/trunk/gcc/autom4te.cache/output.0 llvm-gcc-4.2/trunk/gcc/autom4te.cache/requests llvm-gcc-4.2/trunk/gcc/autom4te.cache/traces.0 llvm-gcc-4.2/trunk/gcc/configure llvm-gcc-4.2/trunk/gcc/configure.ac Modified: llvm-gcc-4.2/trunk/gcc/autom4te.cache/output.0 URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/autom4te.cache/output.0?rev=46170&r1=46169&r2=46170&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/autom4te.cache/output.0 (original) +++ llvm-gcc-4.2/trunk/gcc/autom4te.cache/output.0 Fri Jan 18 13:35:00 2008 @@ -6255,7 +6255,7 @@ if test $ac_cv_prog_cc_w_no_long_long = yes \ && test $ac_cv_prog_cc_w_no_variadic_macros = yes \ && test $ac_cv_prog_cc_w_no_overlength_strings = yes ; then - strict1_warn="-pedantic -Wno-long-long -Wno-variadic-macros" + strict1_warn="-pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings" fi # Add -Wold-style-definition if it's accepted @@ -7368,31 +7368,47 @@ ;; esac + LLVMBUILDMODE="" if test -x "$LLVMBASEPATH/Release/bin/llc$EXEEXT"; then + if test x$checkingenabled_flag == x ; then echo Found Release LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Release" - elif test -x "$LLVMBASEPATH/Debug/bin/llc$EXEEXT"; then + fi + fi + if test -x "$LLVMBASEPATH/Debug/bin/llc$EXEEXT"; then + if test x$checkingenabled_flag != x ; then echo Found Debug LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Debug" - elif test -x "$LLVMBASEPATH/Release-Asserts/bin/llc$EXEEXT"; then + fi + fi + if test -x "$LLVMBASEPATH/Release-Asserts/bin/llc$EXEEXT"; then echo Found Release-Asserts LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Release-Asserts" - elif test -x "$LLVMBASEPATH/Debug-Asserts/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/Debug-Asserts/bin/llc$EXEEXT"; then echo Found Debug-Asserts LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Debug-Asserts" - elif test -x "$LLVMBASEPATH/Release+Checks/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/Release+Checks/bin/llc$EXEEXT"; then echo Found Release+Checks LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Release+Checks" - elif test -x "$LLVMBASEPATH/Debug+Checks/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/Debug+Checks/bin/llc$EXEEXT"; then echo Found Debug+Checks LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Debug+Checks" - elif test -x "$LLVMBASEPATH/Release-Asserts+Checks/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/Release-Asserts+Checks/bin/llc$EXEEXT"; then echo Found Release-Asserts+Checks LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Release-Asserts+Checks" - elif test -x "$LLVMBASEPATH/Debug-Asserts+Checks/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/Debug-Asserts+Checks/bin/llc$EXEEXT"; then echo Found Debug-Asserts+Checks LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Debug-Asserts+Checks" - else + fi + if test -x "$LLVMBASEPATH/bin/llc$EXEEXT"; then + echo Found Installed LLVM Tree in $LLVMBASEPATH + fi + if test x$LLVMBUILDMODE == x; then { { echo "$as_me:$LINENO: error: You must specify valid path to your LLVM tree with --enable-llvm=DIR" >&5 echo "$as_me: error: You must specify valid path to your LLVM tree with --enable-llvm=DIR" >&2;} { (exit 1); exit 1; }; } Modified: llvm-gcc-4.2/trunk/gcc/autom4te.cache/requests URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/autom4te.cache/requests?rev=46170&r1=46169&r2=46170&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/autom4te.cache/requests (original) +++ llvm-gcc-4.2/trunk/gcc/autom4te.cache/requests Fri Jan 18 13:35:00 2008 @@ -17,19 +17,19 @@ { 'm4_pattern_forbid' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, - 'AC_C_VOLATILE' => 1, 'AC_TYPE_OFF_T' => 1, + 'AC_C_VOLATILE' => 1, 'AC_FUNC_CLOSEDIR_VOID' => 1, 'AC_REPLACE_FNMATCH' => 1, 'AC_PROG_LIBTOOL' => 1, 'AC_FUNC_STAT' => 1, - 'AC_FUNC_WAIT3' => 1, 'AC_HEADER_TIME' => 1, - 'AC_FUNC_LSTAT' => 1, - 'AC_STRUCT_TM' => 1, + 'AC_FUNC_WAIT3' => 1, 'AM_AUTOMAKE_VERSION' => 1, - 'AC_FUNC_GETMNTENT' => 1, + 'AC_STRUCT_TM' => 1, + 'AC_FUNC_LSTAT' => 1, 'AC_TYPE_MODE_T' => 1, + 'AC_FUNC_GETMNTENT' => 1, 'AC_FUNC_STRTOD' => 1, 'AC_CHECK_HEADERS' => 1, 'AC_FUNC_STRNLEN' => 1, @@ -48,17 +48,17 @@ 'AC_STRUCT_ST_BLOCKS' => 1, 'AC_TYPE_SIGNAL' => 1, 'AC_TYPE_UID_T' => 1, - 'AC_PROG_MAKE_SET' => 1, 'AC_CONFIG_AUX_DIR' => 1, - 'm4_pattern_allow' => 1, + 'AC_PROG_MAKE_SET' => 1, 'sinclude' => 1, + 'm4_pattern_allow' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, 'AC_FUNC_STRERROR_R' => 1, 'AC_PROG_CC' => 1, - 'AC_DECL_SYS_SIGLIST' => 1, 'AC_FUNC_FORK' => 1, - 'AC_FUNC_STRCOLL' => 1, + 'AC_DECL_SYS_SIGLIST' => 1, 'AC_FUNC_VPRINTF' => 1, + 'AC_FUNC_STRCOLL' => 1, 'AC_PROG_YACC' => 1, 'AC_INIT' => 1, 'AC_STRUCT_TIMEZONE' => 1, @@ -80,33 +80,33 @@ 'AM_MAINTAINER_MODE' => 1, 'AC_FUNC_UTIME_NULL' => 1, 'AC_FUNC_SELECT_ARGTYPES' => 1, - 'AC_HEADER_STAT' => 1, 'AC_FUNC_STRFTIME' => 1, - 'AC_PROG_CPP' => 1, + 'AC_HEADER_STAT' => 1, 'AC_C_INLINE' => 1, - 'AC_PROG_LEX' => 1, - 'AC_C_CONST' => 1, + 'AC_PROG_CPP' => 1, 'AC_TYPE_PID_T' => 1, + 'AC_C_CONST' => 1, + 'AC_PROG_LEX' => 1, 'AC_CONFIG_FILES' => 1, 'include' => 1, 'AC_FUNC_SETVBUF_REVERSED' => 1, 'AC_PROG_INSTALL' => 1, 'AM_GNU_GETTEXT' => 1, - 'AC_CHECK_LIB' => 1, 'AC_FUNC_OBSTACK' => 1, + 'AC_CHECK_LIB' => 1, 'AC_FUNC_MALLOC' => 1, 'AC_FUNC_GETGROUPS' => 1, 'AC_FUNC_GETLOADAVG' => 1, 'AH_OUTPUT' => 1, 'AC_FUNC_FSEEKO' => 1, 'AM_PROG_CC_C_O' => 1, - 'AC_FUNC_MKTIME' => 1, - 'AC_CANONICAL_SYSTEM' => 1, 'AM_CONDITIONAL' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_FUNC_MKTIME' => 1, 'AC_CONFIG_HEADERS' => 1, 'AC_HEADER_SYS_WAIT' => 1, - 'AC_PROG_LN_S' => 1, 'AC_FUNC_MEMCMP' => 1, + 'AC_PROG_LN_S' => 1, 'm4_include' => 1, 'AC_HEADER_DIRENT' => 1, 'AC_CHECK_FUNCS' => 1 Modified: llvm-gcc-4.2/trunk/gcc/autom4te.cache/traces.0 URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/autom4te.cache/traces.0?rev=46170&r1=46169&r2=46170&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/autom4te.cache/traces.0 (original) +++ llvm-gcc-4.2/trunk/gcc/autom4te.cache/traces.0 Fri Jan 18 13:35:00 2008 @@ -410,884 +410,884 @@ #undef HAVE_DSYMUTIL #endif ]) -m4trace:configure.ac:887: -1- AC_SUBST([LLVMBASEPATH]) -m4trace:configure.ac:889: -1- AC_SUBST([LLVMBUILDMODE]) -m4trace:configure.ac:915: -1- AC_SUBST([datarootdir]) -m4trace:configure.ac:916: -1- AC_SUBST([docdir]) -m4trace:configure.ac:917: -1- AC_SUBST([htmldir]) -m4trace:configure.ac:923: -1- AC_PROG_MAKE_SET -m4trace:configure.ac:923: -1- AC_SUBST([SET_MAKE]) -m4trace:configure.ac:926: -1- AC_PROG_AWK -m4trace:configure.ac:926: -1- AC_SUBST([AWK]) -m4trace:configure.ac:933: -1- AC_SUBST([LN_S]) -m4trace:configure.ac:934: -1- AC_SUBST([LN]) -m4trace:configure.ac:935: -1- AC_PROG_RANLIB -m4trace:configure.ac:935: -1- AC_SUBST([RANLIB]) -m4trace:configure.ac:935: -1- AC_SUBST([ac_ct_RANLIB]) -m4trace:configure.ac:947: -1- AC_SUBST([ranlib_flags]) -m4trace:configure.ac:949: -1- AC_SUBST([INSTALL]) -m4trace:configure.ac:949: -1- AC_SUBST([INSTALL_PROGRAM]) -m4trace:configure.ac:949: -1- AC_SUBST([INSTALL_DATA]) -m4trace:configure.ac:952: -1- AC_CHECK_HEADERS([mach/mach_time.h]) -m4trace:configure.ac:952: -1- AH_OUTPUT([HAVE_MACH_MACH_TIME_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:903: -1- AC_SUBST([LLVMBASEPATH]) +m4trace:configure.ac:905: -1- AC_SUBST([LLVMBUILDMODE]) +m4trace:configure.ac:931: -1- AC_SUBST([datarootdir]) +m4trace:configure.ac:932: -1- AC_SUBST([docdir]) +m4trace:configure.ac:933: -1- AC_SUBST([htmldir]) +m4trace:configure.ac:939: -1- AC_PROG_MAKE_SET +m4trace:configure.ac:939: -1- AC_SUBST([SET_MAKE]) +m4trace:configure.ac:942: -1- AC_PROG_AWK +m4trace:configure.ac:942: -1- AC_SUBST([AWK]) +m4trace:configure.ac:949: -1- AC_SUBST([LN_S]) +m4trace:configure.ac:950: -1- AC_SUBST([LN]) +m4trace:configure.ac:951: -1- AC_PROG_RANLIB +m4trace:configure.ac:951: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:951: -1- AC_SUBST([ac_ct_RANLIB]) +m4trace:configure.ac:963: -1- AC_SUBST([ranlib_flags]) +m4trace:configure.ac:965: -1- AC_SUBST([INSTALL]) +m4trace:configure.ac:965: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.ac:965: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.ac:968: -1- AC_CHECK_HEADERS([mach/mach_time.h]) +m4trace:configure.ac:968: -1- AH_OUTPUT([HAVE_MACH_MACH_TIME_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_MACH_MACH_TIME_H #endif ]) -m4trace:configure.ac:956: -1- AC_SUBST([make_compare_target]) -m4trace:configure.ac:959: -1- AC_SUBST([have_mktemp_command]) -m4trace:configure.ac:967: -1- AC_SUBST([MAKEINFO]) -m4trace:configure.ac:977: -1- AC_SUBST([BUILD_INFO]) -m4trace:configure.ac:988: -1- AC_SUBST([GENERATED_MANPAGES]) -m4trace:configure.ac:993: -1- AC_SUBST([FLEX]) -m4trace:configure.ac:996: -1- AC_SUBST([BISON]) -m4trace:configure.ac:1006: -1- AC_SUBST([NM]) -m4trace:configure.ac:1014: -1- AC_SUBST([AR]) -m4trace:configure.ac:1033: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) -m4trace:configure.ac:1033: -1- AH_OUTPUT([_GNU_SOURCE], [/* Always define this when using the GNU C Library */ +m4trace:configure.ac:972: -1- AC_SUBST([make_compare_target]) +m4trace:configure.ac:975: -1- AC_SUBST([have_mktemp_command]) +m4trace:configure.ac:983: -1- AC_SUBST([MAKEINFO]) +m4trace:configure.ac:993: -1- AC_SUBST([BUILD_INFO]) +m4trace:configure.ac:1004: -1- AC_SUBST([GENERATED_MANPAGES]) +m4trace:configure.ac:1009: -1- AC_SUBST([FLEX]) +m4trace:configure.ac:1012: -1- AC_SUBST([BISON]) +m4trace:configure.ac:1022: -1- AC_SUBST([NM]) +m4trace:configure.ac:1030: -1- AC_SUBST([AR]) +m4trace:configure.ac:1049: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) +m4trace:configure.ac:1049: -1- AH_OUTPUT([_GNU_SOURCE], [/* Always define this when using the GNU C Library */ #ifndef USED_FOR_TARGET #undef _GNU_SOURCE #endif ]) -m4trace:configure.ac:1040: -1- AC_HEADER_STDC -m4trace:configure.ac:1040: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) -m4trace:configure.ac:1040: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ +m4trace:configure.ac:1056: -1- AC_HEADER_STDC +m4trace:configure.ac:1056: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.ac:1056: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ #ifndef USED_FOR_TARGET #undef STDC_HEADERS #endif ]) -m4trace:configure.ac:1041: -1- AC_HEADER_TIME -m4trace:configure.ac:1041: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME]) -m4trace:configure.ac:1041: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both and . */ +m4trace:configure.ac:1057: -1- AC_HEADER_TIME +m4trace:configure.ac:1057: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME]) +m4trace:configure.ac:1057: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both and . */ #ifndef USED_FOR_TARGET #undef TIME_WITH_SYS_TIME #endif ]) -m4trace:configure.ac:1042: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +m4trace:configure.ac:1058: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... ../config/acx.m4:407: ACX_HEADER_STRING is expanded from... -configure.ac:1042: the top level]) -m4trace:configure.ac:1042: -1- AC_DEFINE_TRACE_LITERAL([STRING_WITH_STRINGS]) -m4trace:configure.ac:1042: -1- AH_OUTPUT([STRING_WITH_STRINGS], [/* Define if you can safely include both and . */ +configure.ac:1058: the top level]) +m4trace:configure.ac:1058: -1- AC_DEFINE_TRACE_LITERAL([STRING_WITH_STRINGS]) +m4trace:configure.ac:1058: -1- AH_OUTPUT([STRING_WITH_STRINGS], [/* Define if you can safely include both and . */ #ifndef USED_FOR_TARGET #undef STRING_WITH_STRINGS #endif ]) -m4trace:configure.ac:1043: -1- AC_HEADER_SYS_WAIT -m4trace:configure.ac:1043: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_WAIT_H]) -m4trace:configure.ac:1043: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have that is POSIX.1 compatible. */ +m4trace:configure.ac:1059: -1- AC_HEADER_SYS_WAIT +m4trace:configure.ac:1059: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_WAIT_H]) +m4trace:configure.ac:1059: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have that is POSIX.1 compatible. */ #ifndef USED_FOR_TARGET #undef HAVE_SYS_WAIT_H #endif ]) -m4trace:configure.ac:1047: -1- AC_CHECK_HEADERS([limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \ +m4trace:configure.ac:1063: -1- AC_CHECK_HEADERS([limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \ fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \ sys/resource.h sys/param.h sys/times.h sys/stat.h \ direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_LIMITS_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_STDDEF_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_STRING_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_STRINGS_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_STDLIB_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_TIME_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_TIME_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_TIME_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_ICONV_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_ICONV_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_ICONV_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_FCNTL_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_UNISTD_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_SYS_FILE_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_SYS_TIME_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_SYS_MMAN_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_SYS_MMAN_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_SYS_MMAN_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_SYS_RESOURCE_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_SYS_PARAM_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_SYS_TIMES_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_SYS_TIMES_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_SYS_TIMES_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_SYS_STAT_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_DIRECT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_DIRECT_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_DIRECT_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_MALLOC_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_LANGINFO_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_LANGINFO_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_LANGINFO_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_LDFCN_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_LDFCN_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_LDFCN_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_LOCALE_H #endif ]) -m4trace:configure.ac:1047: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1063: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_WCHAR_H #endif ]) -m4trace:configure.ac:1054: -1- AC_DEFINE_TRACE_LITERAL([CHAR_BIT]) -m4trace:configure.ac:1054: -1- AH_OUTPUT([CHAR_BIT], [/* Define as the number of bits in a byte, if \\`limits.h\' doesn\'t. */ +m4trace:configure.ac:1070: -1- AC_DEFINE_TRACE_LITERAL([CHAR_BIT]) +m4trace:configure.ac:1070: -1- AH_OUTPUT([CHAR_BIT], [/* Define as the number of bits in a byte, if \\`limits.h\' doesn\'t. */ #ifndef USED_FOR_TARGET #undef CHAR_BIT #endif ]) -m4trace:configure.ac:1055: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) -m4trace:configure.ac:1055: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define to 1 if your processor stores words with the most significant byte +m4trace:configure.ac:1071: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) +m4trace:configure.ac:1071: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ #ifndef USED_FOR_TARGET #undef WORDS_BIGENDIAN #endif ]) -m4trace:configure.ac:1073: -1- AC_SUBST([stage1_cflags]) -m4trace:configure.ac:1093: -1- AC_SUBST([COLLECT2_LIBS]) -m4trace:configure.ac:1102: -1- AC_SUBST([GNAT_LIBEXC]) -m4trace:configure.ac:1111: -1- AC_SUBST([LDEXP_LIB]) -m4trace:configure.ac:1126: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H]) -m4trace:configure.ac:1126: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define if you have a working header file. */ +m4trace:configure.ac:1089: -1- AC_SUBST([stage1_cflags]) +m4trace:configure.ac:1109: -1- AC_SUBST([COLLECT2_LIBS]) +m4trace:configure.ac:1118: -1- AC_SUBST([GNAT_LIBEXC]) +m4trace:configure.ac:1127: -1- AC_SUBST([LDEXP_LIB]) +m4trace:configure.ac:1142: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H]) +m4trace:configure.ac:1142: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define if you have a working header file. */ #ifndef USED_FOR_TARGET #undef HAVE_INTTYPES_H #endif ]) -m4trace:configure.ac:1140: -1- AC_CHECK_FUNCS([times clock kill getrlimit setrlimit atoll atoq \ +m4trace:configure.ac:1156: -1- AC_CHECK_FUNCS([times clock kill getrlimit setrlimit atoll atoq \ sysconf strsignal getrusage nl_langinfo scandir alphasort \ gettimeofday mbstowcs wcswidth mmap mincore setlocale \ clearerr_unlocked feof_unlocked ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked putchar_unlocked putc_unlocked]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_TIMES], [/* Define to 1 if you have the `times\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_TIMES], [/* Define to 1 if you have the `times\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_TIMES #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_CLOCK], [/* Define to 1 if you have the `clock\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_CLOCK], [/* Define to 1 if you have the `clock\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_CLOCK #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_KILL], [/* Define to 1 if you have the `kill\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_KILL], [/* Define to 1 if you have the `kill\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_KILL #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the `getrlimit\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the `getrlimit\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_GETRLIMIT #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_SETRLIMIT], [/* Define to 1 if you have the `setrlimit\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_SETRLIMIT], [/* Define to 1 if you have the `setrlimit\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_SETRLIMIT #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_ATOLL], [/* Define to 1 if you have the `atoll\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_ATOLL], [/* Define to 1 if you have the `atoll\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_ATOLL #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_ATOQ], [/* Define to 1 if you have the `atoq\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_ATOQ], [/* Define to 1 if you have the `atoq\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_ATOQ #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_SYSCONF], [/* Define to 1 if you have the `sysconf\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_SYSCONF], [/* Define to 1 if you have the `sysconf\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_SYSCONF #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_STRSIGNAL], [/* Define to 1 if you have the `strsignal\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_STRSIGNAL], [/* Define to 1 if you have the `strsignal\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_STRSIGNAL #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_GETRUSAGE], [/* Define to 1 if you have the `getrusage\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_GETRUSAGE], [/* Define to 1 if you have the `getrusage\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_GETRUSAGE #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_NL_LANGINFO], [/* Define to 1 if you have the `nl_langinfo\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_NL_LANGINFO], [/* Define to 1 if you have the `nl_langinfo\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_NL_LANGINFO #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_SCANDIR], [/* Define to 1 if you have the `scandir\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_SCANDIR], [/* Define to 1 if you have the `scandir\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_SCANDIR #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_ALPHASORT], [/* Define to 1 if you have the `alphasort\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_ALPHASORT], [/* Define to 1 if you have the `alphasort\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_ALPHASORT #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_GETTIMEOFDAY #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_MBSTOWCS], [/* Define to 1 if you have the `mbstowcs\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_MBSTOWCS], [/* Define to 1 if you have the `mbstowcs\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_MBSTOWCS #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_WCSWIDTH], [/* Define to 1 if you have the `wcswidth\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_WCSWIDTH], [/* Define to 1 if you have the `wcswidth\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_WCSWIDTH #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have the `mmap\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have the `mmap\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_MMAP #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_MINCORE], [/* Define to 1 if you have the `mincore\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_MINCORE], [/* Define to 1 if you have the `mincore\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_MINCORE #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_SETLOCALE #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_CLEARERR_UNLOCKED], [/* Define to 1 if you have the `clearerr_unlocked\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_CLEARERR_UNLOCKED], [/* Define to 1 if you have the `clearerr_unlocked\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_CLEARERR_UNLOCKED #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_FEOF_UNLOCKED], [/* Define to 1 if you have the `feof_unlocked\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_FEOF_UNLOCKED], [/* Define to 1 if you have the `feof_unlocked\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_FEOF_UNLOCKED #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_FERROR_UNLOCKED], [/* Define to 1 if you have the `ferror_unlocked\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_FERROR_UNLOCKED], [/* Define to 1 if you have the `ferror_unlocked\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_FERROR_UNLOCKED #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_FFLUSH_UNLOCKED], [/* Define to 1 if you have the `fflush_unlocked\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_FFLUSH_UNLOCKED], [/* Define to 1 if you have the `fflush_unlocked\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_FFLUSH_UNLOCKED #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_FGETC_UNLOCKED], [/* Define to 1 if you have the `fgetc_unlocked\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_FGETC_UNLOCKED], [/* Define to 1 if you have the `fgetc_unlocked\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_FGETC_UNLOCKED #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_FGETS_UNLOCKED], [/* Define to 1 if you have the `fgets_unlocked\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_FGETS_UNLOCKED], [/* Define to 1 if you have the `fgets_unlocked\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_FGETS_UNLOCKED #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_FILENO_UNLOCKED], [/* Define to 1 if you have the `fileno_unlocked\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_FILENO_UNLOCKED], [/* Define to 1 if you have the `fileno_unlocked\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_FILENO_UNLOCKED #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_FPRINTF_UNLOCKED], [/* Define to 1 if you have the `fprintf_unlocked\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_FPRINTF_UNLOCKED], [/* Define to 1 if you have the `fprintf_unlocked\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_FPRINTF_UNLOCKED #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_FPUTC_UNLOCKED], [/* Define to 1 if you have the `fputc_unlocked\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_FPUTC_UNLOCKED], [/* Define to 1 if you have the `fputc_unlocked\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_FPUTC_UNLOCKED #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_FPUTS_UNLOCKED], [/* Define to 1 if you have the `fputs_unlocked\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_FPUTS_UNLOCKED], [/* Define to 1 if you have the `fputs_unlocked\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_FPUTS_UNLOCKED #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_FREAD_UNLOCKED], [/* Define to 1 if you have the `fread_unlocked\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_FREAD_UNLOCKED], [/* Define to 1 if you have the `fread_unlocked\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_FREAD_UNLOCKED #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_FWRITE_UNLOCKED], [/* Define to 1 if you have the `fwrite_unlocked\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_FWRITE_UNLOCKED], [/* Define to 1 if you have the `fwrite_unlocked\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_FWRITE_UNLOCKED #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_GETCHAR_UNLOCKED], [/* Define to 1 if you have the `getchar_unlocked\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_GETCHAR_UNLOCKED], [/* Define to 1 if you have the `getchar_unlocked\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_GETCHAR_UNLOCKED #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_GETC_UNLOCKED], [/* Define to 1 if you have the `getc_unlocked\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_GETC_UNLOCKED], [/* Define to 1 if you have the `getc_unlocked\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_GETC_UNLOCKED #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_PUTCHAR_UNLOCKED], [/* Define to 1 if you have the `putchar_unlocked\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_PUTCHAR_UNLOCKED], [/* Define to 1 if you have the `putchar_unlocked\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_PUTCHAR_UNLOCKED #endif ]) -m4trace:configure.ac:1140: -1- AH_OUTPUT([HAVE_PUTC_UNLOCKED], [/* Define to 1 if you have the `putc_unlocked\' function. */ +m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_PUTC_UNLOCKED], [/* Define to 1 if you have the `putc_unlocked\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_PUTC_UNLOCKED #endif ]) -m4trace:configure.ac:1156: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_MBSTOWCS]) -m4trace:configure.ac:1156: -1- AH_OUTPUT([HAVE_WORKING_MBSTOWCS], [/* Define this macro if mbstowcs does not crash when its first argument is +m4trace:configure.ac:1172: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_MBSTOWCS]) +m4trace:configure.ac:1172: -1- AH_OUTPUT([HAVE_WORKING_MBSTOWCS], [/* Define this macro if mbstowcs does not crash when its first argument is NULL. */ #ifndef USED_FOR_TARGET #undef HAVE_WORKING_MBSTOWCS #endif ]) -m4trace:configure.ac:1160: -1- AC_DEFINE_TRACE_LITERAL([ssize_t]) -m4trace:configure.ac:1160: -1- AH_OUTPUT([ssize_t], [/* Define to `int\' if does not define. */ +m4trace:configure.ac:1176: -1- AC_DEFINE_TRACE_LITERAL([ssize_t]) +m4trace:configure.ac:1176: -1- AH_OUTPUT([ssize_t], [/* Define to `int\' if does not define. */ #ifndef USED_FOR_TARGET #undef ssize_t #endif ]) -m4trace:configure.ac:1164: -1- AC_TYPE_UID_T -m4trace:configure.ac:1164: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) -m4trace:configure.ac:1164: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if doesn\'t define. */ +m4trace:configure.ac:1180: -1- AC_TYPE_UID_T +m4trace:configure.ac:1180: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) +m4trace:configure.ac:1180: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if doesn\'t define. */ #ifndef USED_FOR_TARGET #undef uid_t #endif ]) -m4trace:configure.ac:1164: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) -m4trace:configure.ac:1164: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if doesn\'t define. */ +m4trace:configure.ac:1180: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) +m4trace:configure.ac:1180: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if doesn\'t define. */ #ifndef USED_FOR_TARGET #undef gid_t #endif ]) -m4trace:configure.ac:1164: -1- AC_DEFINE_TRACE_LITERAL([GETGROUPS_T]) -m4trace:configure.ac:1164: -1- AH_OUTPUT([GETGROUPS_T], [/* Define to the type of elements in the array set by `getgroups\'. Usually +m4trace:configure.ac:1180: -1- AC_DEFINE_TRACE_LITERAL([GETGROUPS_T]) +m4trace:configure.ac:1180: -1- AH_OUTPUT([GETGROUPS_T], [/* Define to the type of elements in the array set by `getgroups\'. Usually this is either `int\' or `gid_t\'. */ #ifndef USED_FOR_TARGET #undef GETGROUPS_T #endif ]) -m4trace:configure.ac:1180: -1- AC_SUBST([TARGET_GETGROUPS_T]) -m4trace:configure.ac:1182: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP_FILE]) -m4trace:configure.ac:1182: -1- AH_OUTPUT([HAVE_MMAP_FILE], [/* Define if read-only mmap of a plain file works. */ +m4trace:configure.ac:1196: -1- AC_SUBST([TARGET_GETGROUPS_T]) +m4trace:configure.ac:1198: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP_FILE]) +m4trace:configure.ac:1198: -1- AH_OUTPUT([HAVE_MMAP_FILE], [/* Define if read-only mmap of a plain file works. */ #ifndef USED_FOR_TARGET #undef HAVE_MMAP_FILE #endif ]) -m4trace:configure.ac:1182: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP_DEV_ZERO]) -m4trace:configure.ac:1182: -1- AH_OUTPUT([HAVE_MMAP_DEV_ZERO], [/* Define if mmap of /dev/zero works. */ +m4trace:configure.ac:1198: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP_DEV_ZERO]) +m4trace:configure.ac:1198: -1- AH_OUTPUT([HAVE_MMAP_DEV_ZERO], [/* Define if mmap of /dev/zero works. */ #ifndef USED_FOR_TARGET #undef HAVE_MMAP_DEV_ZERO #endif ]) -m4trace:configure.ac:1182: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP_ANON]) -m4trace:configure.ac:1182: -1- AH_OUTPUT([HAVE_MMAP_ANON], [/* Define if mmap with MAP_ANON(YMOUS) works. */ +m4trace:configure.ac:1198: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP_ANON]) +m4trace:configure.ac:1198: -1- AH_OUTPUT([HAVE_MMAP_ANON], [/* Define if mmap with MAP_ANON(YMOUS) works. */ #ifndef USED_FOR_TARGET #undef HAVE_MMAP_ANON #endif ]) -m4trace:configure.ac:1192: -1- AC_FUNC_FORK -m4trace:configure.ac:1192: -1- AC_TYPE_PID_T -m4trace:configure.ac:1192: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) -m4trace:configure.ac:1192: -1- AH_OUTPUT([pid_t], [/* Define to `int\' if does not define. */ +m4trace:configure.ac:1208: -1- AC_FUNC_FORK +m4trace:configure.ac:1208: -1- AC_TYPE_PID_T +m4trace:configure.ac:1208: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) +m4trace:configure.ac:1208: -1- AH_OUTPUT([pid_t], [/* Define to `int\' if does not define. */ #ifndef USED_FOR_TARGET #undef pid_t #endif ]) -m4trace:configure.ac:1192: -1- AC_CHECK_HEADERS([unistd.h vfork.h]) -m4trace:configure.ac:1192: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1208: -1- AC_CHECK_HEADERS([unistd.h vfork.h]) +m4trace:configure.ac:1208: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_UNISTD_H #endif ]) -m4trace:configure.ac:1192: -1- AH_OUTPUT([HAVE_VFORK_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:1208: -1- AH_OUTPUT([HAVE_VFORK_H], [/* Define to 1 if you have the header file. */ #ifndef USED_FOR_TARGET #undef HAVE_VFORK_H #endif ]) -m4trace:configure.ac:1192: -1- AC_CHECK_FUNCS([fork vfork]) -m4trace:configure.ac:1192: -1- AH_OUTPUT([HAVE_FORK], [/* Define to 1 if you have the `fork\' function. */ +m4trace:configure.ac:1208: -1- AC_CHECK_FUNCS([fork vfork]) +m4trace:configure.ac:1208: -1- AH_OUTPUT([HAVE_FORK], [/* Define to 1 if you have the `fork\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_FORK #endif ]) -m4trace:configure.ac:1192: -1- AH_OUTPUT([HAVE_VFORK], [/* Define to 1 if you have the `vfork\' function. */ +m4trace:configure.ac:1208: -1- AH_OUTPUT([HAVE_VFORK], [/* Define to 1 if you have the `vfork\' function. */ #ifndef USED_FOR_TARGET #undef HAVE_VFORK #endif ]) -m4trace:configure.ac:1192: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_VFORK]) -m4trace:configure.ac:1192: -1- AH_OUTPUT([HAVE_WORKING_VFORK], [/* Define to 1 if `vfork\' works. */ +m4trace:configure.ac:1208: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_VFORK]) +m4trace:configure.ac:1208: -1- AH_OUTPUT([HAVE_WORKING_VFORK], [/* Define to 1 if `vfork\' works. */ #ifndef USED_FOR_TARGET #undef HAVE_WORKING_VFORK #endif ]) -m4trace:configure.ac:1192: -1- AC_DEFINE_TRACE_LITERAL([vfork]) -m4trace:configure.ac:1192: -1- AH_OUTPUT([vfork], [/* Define as `fork\' if `vfork\' does not work. */ +m4trace:configure.ac:1208: -1- AC_DEFINE_TRACE_LITERAL([vfork]) +m4trace:configure.ac:1208: -1- AH_OUTPUT([vfork], [/* Define as `fork\' if `vfork\' does not work. */ #ifndef USED_FOR_TARGET #undef vfork #endif ]) -m4trace:configure.ac:1192: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_FORK]) -m4trace:configure.ac:1192: -1- AH_OUTPUT([HAVE_WORKING_FORK], [/* Define to 1 if `fork\' works. */ +m4trace:configure.ac:1208: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_FORK]) +m4trace:configure.ac:1208: -1- AH_OUTPUT([HAVE_WORKING_FORK], [/* Define to 1 if `fork\' works. */ #ifndef USED_FOR_TARGET #undef HAVE_WORKING_FORK #endif ]) -m4trace:configure.ac:1194: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +m4trace:configure.ac:1210: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... ../config/iconv.m4:75: AM_ICONV_LINK is expanded from... ../config/iconv.m4:103: AM_ICONV is expanded from... -configure.ac:1194: the top level]) -m4trace:configure.ac:1194: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +configure.ac:1210: the top level]) +m4trace:configure.ac:1210: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... ../config/iconv.m4:75: AM_ICONV_LINK is expanded from... ../config/iconv.m4:103: AM_ICONV is expanded from... -configure.ac:1194: the top level]) -m4trace:configure.ac:1194: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) -m4trace:configure.ac:1194: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function. */ +configure.ac:1210: the top level]) +m4trace:configure.ac:1210: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) +m4trace:configure.ac:1210: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function. */ #ifndef USED_FOR_TARGET #undef HAVE_ICONV #endif ]) -m4trace:configure.ac:1194: -1- AC_SUBST([LIBICONV]) -m4trace:configure.ac:1194: -1- AC_SUBST([LTLIBICONV]) -m4trace:configure.ac:1194: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +m4trace:configure.ac:1210: -1- AC_SUBST([LIBICONV]) +m4trace:configure.ac:1210: -1- AC_SUBST([LTLIBICONV]) +m4trace:configure.ac:1210: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... ../config/iconv.m4:103: AM_ICONV is expanded from... -configure.ac:1194: the top level]) -m4trace:configure.ac:1194: -1- AC_DEFINE_TRACE_LITERAL([ICONV_CONST]) -m4trace:configure.ac:1194: -1- AH_OUTPUT([ICONV_CONST], [/* Define as const if the declaration of iconv() needs const. */ +configure.ac:1210: the top level]) +m4trace:configure.ac:1210: -1- AC_DEFINE_TRACE_LITERAL([ICONV_CONST]) +m4trace:configure.ac:1210: -1- AH_OUTPUT([ICONV_CONST], [/* Define as const if the declaration of iconv() needs const. */ #ifndef USED_FOR_TARGET #undef ICONV_CONST #endif ]) -m4trace:configure.ac:1197: -1- AC_SUBST([LIBICONV_DEP]) -m4trace:configure.ac:1199: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +m4trace:configure.ac:1213: -1- AC_SUBST([LIBICONV_DEP]) +m4trace:configure.ac:1215: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... ../config/lcmessage.m4:32: AM_LC_MESSAGES is expanded from... -configure.ac:1199: the top level]) -m4trace:configure.ac:1199: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES]) -m4trace:configure.ac:1199: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your file defines LC_MESSAGES. */ +configure.ac:1215: the top level]) +m4trace:configure.ac:1215: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES]) +m4trace:configure.ac:1215: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your file defines LC_MESSAGES. */ #ifndef USED_FOR_TARGET #undef HAVE_LC_MESSAGES #endif ]) -m4trace:configure.ac:1201: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +m4trace:configure.ac:1217: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... ../config/codeset.m4:23: AM_LANGINFO_CODESET is expanded from... -configure.ac:1201: the top level]) -m4trace:configure.ac:1201: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET]) -m4trace:configure.ac:1201: -1- AH_OUTPUT([HAVE_LANGINFO_CODESET], [/* Define if you have and nl_langinfo(CODESET). */ +configure.ac:1217: the top level]) +m4trace:configure.ac:1217: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET]) +m4trace:configure.ac:1217: -1- AH_OUTPUT([HAVE_LANGINFO_CODESET], [/* Define if you have and nl_langinfo(CODESET). */ #ifndef USED_FOR_TARGET #undef HAVE_LANGINFO_CODESET #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_GETENV], [/* Define to 1 if we found a declaration for \'getenv\', otherwise define to 0. +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_GETENV], [/* Define to 1 if we found a declaration for \'getenv\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_GETENV #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_ATOL], [/* Define to 1 if we found a declaration for \'atol\', otherwise define to 0. */ +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_ATOL], [/* Define to 1 if we found a declaration for \'atol\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_ATOL #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_ASPRINTF], [/* Define to 1 if we found a declaration for \'asprintf\', otherwise define to +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_ASPRINTF], [/* Define to 1 if we found a declaration for \'asprintf\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_ASPRINTF #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_SBRK], [/* Define to 1 if we found a declaration for \'sbrk\', otherwise define to 0. */ +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_SBRK], [/* Define to 1 if we found a declaration for \'sbrk\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_SBRK #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_ABORT], [/* Define to 1 if we found a declaration for \'abort\', otherwise define to 0. +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_ABORT], [/* Define to 1 if we found a declaration for \'abort\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_ABORT #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_ATOF], [/* Define to 1 if we found a declaration for \'atof\', otherwise define to 0. */ +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_ATOF], [/* Define to 1 if we found a declaration for \'atof\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_ATOF #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_GETCWD], [/* Define to 1 if we found a declaration for \'getcwd\', otherwise define to 0. +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_GETCWD], [/* Define to 1 if we found a declaration for \'getcwd\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_GETCWD #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_GETWD], [/* Define to 1 if we found a declaration for \'getwd\', otherwise define to 0. +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_GETWD], [/* Define to 1 if we found a declaration for \'getwd\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_GETWD #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_STRSIGNAL], [/* Define to 1 if we found a declaration for \'strsignal\', otherwise define to +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_STRSIGNAL], [/* Define to 1 if we found a declaration for \'strsignal\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_STRSIGNAL #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_STRSTR], [/* Define to 1 if we found a declaration for \'strstr\', otherwise define to 0. +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_STRSTR], [/* Define to 1 if we found a declaration for \'strstr\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_STRSTR #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_STRVERSCMP], [/* Define to 1 if we found a declaration for \'strverscmp\', otherwise define to +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_STRVERSCMP], [/* Define to 1 if we found a declaration for \'strverscmp\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_STRVERSCMP #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_ERRNO], [/* Define to 1 if we found a declaration for \'errno\', otherwise define to 0. +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_ERRNO], [/* Define to 1 if we found a declaration for \'errno\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_ERRNO #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_SNPRINTF], [/* Define to 1 if we found a declaration for \'snprintf\', otherwise define to +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_SNPRINTF], [/* Define to 1 if we found a declaration for \'snprintf\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_SNPRINTF #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_VSNPRINTF], [/* Define to 1 if we found a declaration for \'vsnprintf\', otherwise define to +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_VSNPRINTF], [/* Define to 1 if we found a declaration for \'vsnprintf\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_VSNPRINTF #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_VASPRINTF], [/* Define to 1 if we found a declaration for \'vasprintf\', otherwise define to +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_VASPRINTF], [/* Define to 1 if we found a declaration for \'vasprintf\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_VASPRINTF #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_MALLOC], [/* Define to 1 if we found a declaration for \'malloc\', otherwise define to 0. +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_MALLOC], [/* Define to 1 if we found a declaration for \'malloc\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_MALLOC #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_REALLOC], [/* Define to 1 if we found a declaration for \'realloc\', otherwise define to 0. +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_REALLOC], [/* Define to 1 if we found a declaration for \'realloc\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_REALLOC #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_CALLOC], [/* Define to 1 if we found a declaration for \'calloc\', otherwise define to 0. +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_CALLOC], [/* Define to 1 if we found a declaration for \'calloc\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_CALLOC #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_FREE], [/* Define to 1 if we found a declaration for \'free\', otherwise define to 0. */ +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_FREE], [/* Define to 1 if we found a declaration for \'free\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_FREE #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_BASENAME], [/* Define to 1 if we found a declaration for \'basename\', otherwise define to +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_BASENAME], [/* Define to 1 if we found a declaration for \'basename\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_BASENAME #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_GETOPT], [/* Define to 1 if we found a declaration for \'getopt\', otherwise define to 0. +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_GETOPT], [/* Define to 1 if we found a declaration for \'getopt\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_GETOPT #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_CLOCK], [/* Define to 1 if we found a declaration for \'clock\', otherwise define to 0. +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_CLOCK], [/* Define to 1 if we found a declaration for \'clock\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_CLOCK #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_GETPAGESIZE], [/* Define to 1 if we found a declaration for \'getpagesize\', otherwise define +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_GETPAGESIZE], [/* Define to 1 if we found a declaration for \'getpagesize\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_GETPAGESIZE #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_CLEARERR_UNLOCKED], [/* Define to 1 if we found a declaration for \'clearerr_unlocked\', otherwise +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_CLEARERR_UNLOCKED], [/* Define to 1 if we found a declaration for \'clearerr_unlocked\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_CLEARERR_UNLOCKED #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_FEOF_UNLOCKED], [/* Define to 1 if we found a declaration for \'feof_unlocked\', otherwise define +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_FEOF_UNLOCKED], [/* Define to 1 if we found a declaration for \'feof_unlocked\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_FEOF_UNLOCKED #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_FERROR_UNLOCKED], [/* Define to 1 if we found a declaration for \'ferror_unlocked\', otherwise +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_FERROR_UNLOCKED], [/* Define to 1 if we found a declaration for \'ferror_unlocked\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_FERROR_UNLOCKED #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_FFLUSH_UNLOCKED], [/* Define to 1 if we found a declaration for \'fflush_unlocked\', otherwise +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_FFLUSH_UNLOCKED], [/* Define to 1 if we found a declaration for \'fflush_unlocked\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_FFLUSH_UNLOCKED #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_FGETC_UNLOCKED], [/* Define to 1 if we found a declaration for \'fgetc_unlocked\', otherwise +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_FGETC_UNLOCKED], [/* Define to 1 if we found a declaration for \'fgetc_unlocked\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_FGETC_UNLOCKED #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_FGETS_UNLOCKED], [/* Define to 1 if we found a declaration for \'fgets_unlocked\', otherwise +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_FGETS_UNLOCKED], [/* Define to 1 if we found a declaration for \'fgets_unlocked\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_FGETS_UNLOCKED #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_FILENO_UNLOCKED], [/* Define to 1 if we found a declaration for \'fileno_unlocked\', otherwise +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_FILENO_UNLOCKED], [/* Define to 1 if we found a declaration for \'fileno_unlocked\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_FILENO_UNLOCKED #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_FPRINTF_UNLOCKED], [/* Define to 1 if we found a declaration for \'fprintf_unlocked\', otherwise +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_FPRINTF_UNLOCKED], [/* Define to 1 if we found a declaration for \'fprintf_unlocked\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_FPRINTF_UNLOCKED #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_FPUTC_UNLOCKED], [/* Define to 1 if we found a declaration for \'fputc_unlocked\', otherwise +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_FPUTC_UNLOCKED], [/* Define to 1 if we found a declaration for \'fputc_unlocked\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_FPUTC_UNLOCKED #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_FPUTS_UNLOCKED], [/* Define to 1 if we found a declaration for \'fputs_unlocked\', otherwise +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_FPUTS_UNLOCKED], [/* Define to 1 if we found a declaration for \'fputs_unlocked\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_FPUTS_UNLOCKED #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_FREAD_UNLOCKED], [/* Define to 1 if we found a declaration for \'fread_unlocked\', otherwise +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_FREAD_UNLOCKED], [/* Define to 1 if we found a declaration for \'fread_unlocked\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_FREAD_UNLOCKED #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_FWRITE_UNLOCKED], [/* Define to 1 if we found a declaration for \'fwrite_unlocked\', otherwise +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_FWRITE_UNLOCKED], [/* Define to 1 if we found a declaration for \'fwrite_unlocked\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_FWRITE_UNLOCKED #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_GETCHAR_UNLOCKED], [/* Define to 1 if we found a declaration for \'getchar_unlocked\', otherwise +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_GETCHAR_UNLOCKED], [/* Define to 1 if we found a declaration for \'getchar_unlocked\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_GETCHAR_UNLOCKED #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_GETC_UNLOCKED], [/* Define to 1 if we found a declaration for \'getc_unlocked\', otherwise define +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_GETC_UNLOCKED], [/* Define to 1 if we found a declaration for \'getc_unlocked\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_GETC_UNLOCKED #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_PUTCHAR_UNLOCKED], [/* Define to 1 if we found a declaration for \'putchar_unlocked\', otherwise +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_PUTCHAR_UNLOCKED], [/* Define to 1 if we found a declaration for \'putchar_unlocked\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_PUTCHAR_UNLOCKED #endif ]) -m4trace:configure.ac:1211: -1- AH_OUTPUT([HAVE_DECL_PUTC_UNLOCKED], [/* Define to 1 if we found a declaration for \'putc_unlocked\', otherwise define +m4trace:configure.ac:1227: -1- AH_OUTPUT([HAVE_DECL_PUTC_UNLOCKED], [/* Define to 1 if we found a declaration for \'putc_unlocked\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_PUTC_UNLOCKED #endif ]) -m4trace:configure.ac:1219: -1- AH_OUTPUT([HAVE_DECL_GETRLIMIT], [/* Define to 1 if we found a declaration for \'getrlimit\', otherwise define to +m4trace:configure.ac:1235: -1- AH_OUTPUT([HAVE_DECL_GETRLIMIT], [/* Define to 1 if we found a declaration for \'getrlimit\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_GETRLIMIT #endif ]) -m4trace:configure.ac:1219: -1- AH_OUTPUT([HAVE_DECL_SETRLIMIT], [/* Define to 1 if we found a declaration for \'setrlimit\', otherwise define to +m4trace:configure.ac:1235: -1- AH_OUTPUT([HAVE_DECL_SETRLIMIT], [/* Define to 1 if we found a declaration for \'setrlimit\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_SETRLIMIT #endif ]) -m4trace:configure.ac:1219: -1- AH_OUTPUT([HAVE_DECL_GETRUSAGE], [/* Define to 1 if we found a declaration for \'getrusage\', otherwise define to +m4trace:configure.ac:1235: -1- AH_OUTPUT([HAVE_DECL_GETRUSAGE], [/* Define to 1 if we found a declaration for \'getrusage\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_GETRUSAGE #endif ]) -m4trace:configure.ac:1228: -1- AC_DEFINE_TRACE_LITERAL([rlim_t]) -m4trace:configure.ac:1228: -1- AH_OUTPUT([rlim_t], [/* Define to \\`long\' if doesn\'t define. */ +m4trace:configure.ac:1244: -1- AC_DEFINE_TRACE_LITERAL([rlim_t]) +m4trace:configure.ac:1244: -1- AH_OUTPUT([rlim_t], [/* Define to \\`long\' if doesn\'t define. */ #ifndef USED_FOR_TARGET #undef rlim_t #endif ]) -m4trace:configure.ac:1242: -1- AH_OUTPUT([HAVE_DECL_LDGETNAME], [/* Define to 1 if we found a declaration for \'ldgetname\', otherwise define to +m4trace:configure.ac:1258: -1- AH_OUTPUT([HAVE_DECL_LDGETNAME], [/* Define to 1 if we found a declaration for \'ldgetname\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_LDGETNAME #endif ]) -m4trace:configure.ac:1250: -1- AH_OUTPUT([HAVE_DECL_TIMES], [/* Define to 1 if we found a declaration for \'times\', otherwise define to 0. +m4trace:configure.ac:1266: -1- AH_OUTPUT([HAVE_DECL_TIMES], [/* Define to 1 if we found a declaration for \'times\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_TIMES #endif ]) -m4trace:configure.ac:1256: -1- AH_OUTPUT([HAVE_DECL_SIGALTSTACK], [/* Define to 1 if we found a declaration for \'sigaltstack\', otherwise define +m4trace:configure.ac:1272: -1- AH_OUTPUT([HAVE_DECL_SIGALTSTACK], [/* Define to 1 if we found a declaration for \'sigaltstack\', otherwise define to 0. */ #ifndef USED_FOR_TARGET #undef HAVE_DECL_SIGALTSTACK #endif ]) -m4trace:configure.ac:1269: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TMS]) -m4trace:configure.ac:1269: -1- AH_OUTPUT([HAVE_STRUCT_TMS], [/* Define if defines struct tms. */ +m4trace:configure.ac:1285: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TMS]) +m4trace:configure.ac:1285: -1- AH_OUTPUT([HAVE_STRUCT_TMS], [/* Define if defines struct tms. */ #ifndef USED_FOR_TARGET #undef HAVE_STRUCT_TMS #endif ]) -m4trace:configure.ac:1281: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CLOCK_T]) -m4trace:configure.ac:1281: -1- AH_OUTPUT([HAVE_CLOCK_T], [/* Define if defines clock_t. */ +m4trace:configure.ac:1297: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CLOCK_T]) +m4trace:configure.ac:1297: -1- AH_OUTPUT([HAVE_CLOCK_T], [/* Define if defines clock_t. */ #ifndef USED_FOR_TARGET #undef HAVE_CLOCK_T #endif ]) -m4trace:configure.ac:1287: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INITFINI_ARRAY]) -m4trace:configure.ac:1287: -1- AH_OUTPUT([HAVE_INITFINI_ARRAY], [/* Define .init_array/.fini_array sections are available and working. */ +m4trace:configure.ac:1303: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INITFINI_ARRAY]) +m4trace:configure.ac:1303: -1- AH_OUTPUT([HAVE_INITFINI_ARRAY], [/* Define .init_array/.fini_array sections are available and working. */ #ifndef USED_FOR_TARGET #undef HAVE_INITFINI_ARRAY #endif ]) -m4trace:configure.ac:1290: -1- AC_DEFINE_TRACE_LITERAL([MKDIR_TAKES_ONE_ARG]) -m4trace:configure.ac:1290: -1- AH_OUTPUT([MKDIR_TAKES_ONE_ARG], [/* Define if host mkdir takes a single argument. */ +m4trace:configure.ac:1306: -1- AC_DEFINE_TRACE_LITERAL([MKDIR_TAKES_ONE_ARG]) +m4trace:configure.ac:1306: -1- AH_OUTPUT([MKDIR_TAKES_ONE_ARG], [/* Define if host mkdir takes a single argument. */ #ifndef USED_FOR_TARGET #undef MKDIR_TAKES_ONE_ARG #endif ]) -m4trace:configure.ac:1295: -1- AC_SUBST([manext]) -m4trace:configure.ac:1296: -1- AC_SUBST([objext]) -m4trace:configure.ac:1304: -1- AC_DEFINE_TRACE_LITERAL([CONFIG_SJLJ_EXCEPTIONS]) -m4trace:configure.ac:1304: -1- AH_OUTPUT([CONFIG_SJLJ_EXCEPTIONS], [/* Define 0/1 to force the choice for exception handling model. */ +m4trace:configure.ac:1311: -1- AC_SUBST([manext]) +m4trace:configure.ac:1312: -1- AC_SUBST([objext]) +m4trace:configure.ac:1320: -1- AC_DEFINE_TRACE_LITERAL([CONFIG_SJLJ_EXCEPTIONS]) +m4trace:configure.ac:1320: -1- AH_OUTPUT([CONFIG_SJLJ_EXCEPTIONS], [/* Define 0/1 to force the choice for exception handling model. */ #ifndef USED_FOR_TARGET #undef CONFIG_SJLJ_EXCEPTIONS #endif ]) -m4trace:configure.ac:1314: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETIPINFO]) -m4trace:configure.ac:1314: -1- AH_OUTPUT([HAVE_GETIPINFO], [/* Define to 1 if system unwind library has _Unwind_GetIPInfo. */ +m4trace:configure.ac:1330: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETIPINFO]) +m4trace:configure.ac:1330: -1- AH_OUTPUT([HAVE_GETIPINFO], [/* Define to 1 if system unwind library has _Unwind_GetIPInfo. */ #ifndef USED_FOR_TARGET #undef HAVE_GETIPINFO #endif ]) -m4trace:configure.ac:1407: -1- AC_DEFINE_TRACE_LITERAL([NEED_64BIT_HOST_WIDE_INT]) -m4trace:configure.ac:1407: -1- AH_OUTPUT([NEED_64BIT_HOST_WIDE_INT], [/* Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h). */ +m4trace:configure.ac:1423: -1- AC_DEFINE_TRACE_LITERAL([NEED_64BIT_HOST_WIDE_INT]) +m4trace:configure.ac:1423: -1- AH_OUTPUT([NEED_64BIT_HOST_WIDE_INT], [/* Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h). */ #ifndef USED_FOR_TARGET #undef NEED_64BIT_HOST_WIDE_INT #endif ]) -m4trace:configure.ac:1413: -1- AC_DEFINE_TRACE_LITERAL([USE_LONG_LONG_FOR_WIDEST_FAST_INT]) -m4trace:configure.ac:1413: -1- AH_OUTPUT([USE_LONG_LONG_FOR_WIDEST_FAST_INT], [/* Define to 1 if the \'long long\' (or \'__int64\') is wider than \'long\' but +m4trace:configure.ac:1429: -1- AC_DEFINE_TRACE_LITERAL([USE_LONG_LONG_FOR_WIDEST_FAST_INT]) +m4trace:configure.ac:1429: -1- AH_OUTPUT([USE_LONG_LONG_FOR_WIDEST_FAST_INT], [/* Define to 1 if the \'long long\' (or \'__int64\') is wider than \'long\' but still efficiently supported by the host hardware. */ #ifndef USED_FOR_TARGET #undef USE_LONG_LONG_FOR_WIDEST_FAST_INT #endif ]) -m4trace:configure.ac:1461: -1- AC_DEFINE_TRACE_LITERAL([HAS_MCONTEXT_T_UNDERSCORES]) -m4trace:configure.ac:1461: -1- AH_OUTPUT([HAS_MCONTEXT_T_UNDERSCORES], [/* mcontext_t fields start with __ */ +m4trace:configure.ac:1477: -1- AC_DEFINE_TRACE_LITERAL([HAS_MCONTEXT_T_UNDERSCORES]) +m4trace:configure.ac:1477: -1- AH_OUTPUT([HAS_MCONTEXT_T_UNDERSCORES], [/* mcontext_t fields start with __ */ #ifndef USED_FOR_TARGET #undef HAS_MCONTEXT_T_UNDERSCORES #endif ]) -m4trace:configure.ac:1503: -1- AC_SUBST([gthread_flags]) -m4trace:configure.ac:1525: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_USE_CXA_ATEXIT]) -m4trace:configure.ac:1525: -1- AH_OUTPUT([DEFAULT_USE_CXA_ATEXIT], [/* Define if you want to use __cxa_atexit, rather than atexit, to register C++ +m4trace:configure.ac:1519: -1- AC_SUBST([gthread_flags]) +m4trace:configure.ac:1541: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_USE_CXA_ATEXIT]) +m4trace:configure.ac:1541: -1- AH_OUTPUT([DEFAULT_USE_CXA_ATEXIT], [/* Define if you want to use __cxa_atexit, rather than atexit, to register C++ destructors for local statics and global objects. This is essential for fully standards-compliant handling of destructors, but requires __cxa_atexit in libc. */ @@ -1295,47 +1295,47 @@ #undef DEFAULT_USE_CXA_ATEXIT #endif ]) -m4trace:configure.ac:1538: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETIPINFO]) -m4trace:configure.ac:1538: -1- AH_OUTPUT([HAVE_GETIPINFO], [/* Define to 1 if system unwind library has _Unwind_GetIPInfo. */ +m4trace:configure.ac:1554: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETIPINFO]) +m4trace:configure.ac:1554: -1- AH_OUTPUT([HAVE_GETIPINFO], [/* Define to 1 if system unwind library has _Unwind_GetIPInfo. */ #undef HAVE_GETIPINFO]) -m4trace:configure.ac:1546: -1- AC_SUBST([extra_modes_file]) -m4trace:configure.ac:1549: -1- AC_DEFINE_TRACE_LITERAL([EXTRA_MODES_FILE]) -m4trace:configure.ac:1549: -1- AH_OUTPUT([EXTRA_MODES_FILE], [/* Define to the name of a file containing a list of extra machine modes for +m4trace:configure.ac:1562: -1- AC_SUBST([extra_modes_file]) +m4trace:configure.ac:1565: -1- AC_DEFINE_TRACE_LITERAL([EXTRA_MODES_FILE]) +m4trace:configure.ac:1565: -1- AH_OUTPUT([EXTRA_MODES_FILE], [/* Define to the name of a file containing a list of extra machine modes for this architecture. */ #ifndef USED_FOR_TARGET #undef EXTRA_MODES_FILE #endif ]) -m4trace:configure.ac:1557: -1- AC_SUBST([extra_opt_files]) -m4trace:configure.ac:1594: -1- AC_SUBST([build_subdir]) -m4trace:configure.ac:1638: -1- AC_SUBST([USE_NLS]) -m4trace:configure.ac:1638: -1- AC_SUBST([LIBINTL]) -m4trace:configure.ac:1638: -1- AC_SUBST([LIBINTL_DEP]) -m4trace:configure.ac:1638: -1- AC_SUBST([INCINTL]) -m4trace:configure.ac:1638: -1- AC_SUBST([XGETTEXT]) -m4trace:configure.ac:1638: -1- AC_SUBST([GMSGFMT]) -m4trace:configure.ac:1638: -1- AC_SUBST([POSUB]) -m4trace:configure.ac:1638: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) -m4trace:configure.ac:1638: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native +m4trace:configure.ac:1573: -1- AC_SUBST([extra_opt_files]) +m4trace:configure.ac:1610: -1- AC_SUBST([build_subdir]) +m4trace:configure.ac:1654: -1- AC_SUBST([USE_NLS]) +m4trace:configure.ac:1654: -1- AC_SUBST([LIBINTL]) +m4trace:configure.ac:1654: -1- AC_SUBST([LIBINTL_DEP]) +m4trace:configure.ac:1654: -1- AC_SUBST([INCINTL]) +m4trace:configure.ac:1654: -1- AC_SUBST([XGETTEXT]) +m4trace:configure.ac:1654: -1- AC_SUBST([GMSGFMT]) +m4trace:configure.ac:1654: -1- AC_SUBST([POSUB]) +m4trace:configure.ac:1654: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) +m4trace:configure.ac:1654: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native language is requested. */ #ifndef USED_FOR_TARGET #undef ENABLE_NLS #endif ]) -m4trace:configure.ac:1638: -1- AC_SUBST([CATALOGS]) -m4trace:configure.ac:1638: -1- AC_SUBST([DATADIRNAME]) -m4trace:configure.ac:1638: -1- AC_SUBST([INSTOBJEXT]) -m4trace:configure.ac:1638: -1- AC_SUBST([GENCAT]) -m4trace:configure.ac:1638: -1- AC_SUBST([CATOBJEXT]) -m4trace:configure.ac:1669: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_WIN32_REGISTRY]) -m4trace:configure.ac:1669: -1- AH_OUTPUT([ENABLE_WIN32_REGISTRY], [/* Define to 1 if installation paths should be looked up in the Windows +m4trace:configure.ac:1654: -1- AC_SUBST([CATALOGS]) +m4trace:configure.ac:1654: -1- AC_SUBST([DATADIRNAME]) +m4trace:configure.ac:1654: -1- AC_SUBST([INSTOBJEXT]) +m4trace:configure.ac:1654: -1- AC_SUBST([GENCAT]) +m4trace:configure.ac:1654: -1- AC_SUBST([CATOBJEXT]) +m4trace:configure.ac:1685: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_WIN32_REGISTRY]) +m4trace:configure.ac:1685: -1- AH_OUTPUT([ENABLE_WIN32_REGISTRY], [/* Define to 1 if installation paths should be looked up in the Windows Registry. Ignored on non-Windows hosts. */ #ifndef USED_FOR_TARGET #undef ENABLE_WIN32_REGISTRY #endif ]) -m4trace:configure.ac:1677: -1- AC_DEFINE_TRACE_LITERAL([WIN32_REGISTRY_KEY]) -m4trace:configure.ac:1677: -1- AH_OUTPUT([WIN32_REGISTRY_KEY], [/* Define to be the last component of the Windows registry key under which to +m4trace:configure.ac:1693: -1- AC_DEFINE_TRACE_LITERAL([WIN32_REGISTRY_KEY]) +m4trace:configure.ac:1693: -1- AH_OUTPUT([WIN32_REGISTRY_KEY], [/* Define to be the last component of the Windows registry key under which to look for installation paths. The full key used will be HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}. The default is the GCC version number. */ @@ -1343,378 +1343,378 @@ #undef WIN32_REGISTRY_KEY #endif ]) -m4trace:configure.ac:1731: -1- AC_SUBST([host_cc_for_libada]) -m4trace:configure.ac:1827: -1- AC_SUBST([CROSS]) -m4trace:configure.ac:1828: -1- AC_SUBST([ALL]) -m4trace:configure.ac:1829: -1- AC_SUBST([SYSTEM_HEADER_DIR]) -m4trace:configure.ac:1885: -1- AC_SUBST([inhibit_libc]) -m4trace:configure.ac:1892: -1- AC_SUBST([CC_FOR_BUILD]) -m4trace:configure.ac:1893: -1- AC_SUBST([BUILD_CFLAGS]) -m4trace:configure.ac:1894: -1- AC_SUBST([STMP_FIXINC]) -m4trace:configure.ac:1905: -1- AC_SUBST([STMP_FIXPROTO]) -m4trace:configure.ac:1932: -1- AC_SUBST([collect2]) -m4trace:configure.ac:1964: -1- m4_pattern_allow([AS_FOR_TARGET]) -m4trace:configure.ac:1979: -1- AC_SUBST([gcc_cv_as], [$ac_cv_path_gcc_cv_as]) -m4trace:configure.ac:1982: -1- AC_SUBST([ORIGINAL_AS_FOR_TARGET]) -m4trace:configure.ac:2030: -1- AC_SUBST([gcc_cv_ld], [$ac_cv_path_gcc_cv_ld]) -m4trace:configure.ac:2033: -1- AC_SUBST([ORIGINAL_LD_FOR_TARGET]) -m4trace:configure.ac:2077: -1- AC_SUBST([gcc_cv_nm], [$ac_cv_path_gcc_cv_nm]) -m4trace:configure.ac:2090: -1- AC_SUBST([ORIGINAL_NM_FOR_TARGET]) -m4trace:configure.ac:2105: -1- AC_SUBST([gcc_cv_objdump], [$ac_cv_path_gcc_cv_objdump]) -m4trace:configure.ac:2123: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_BALIGN_AND_P2ALIGN]) -m4trace:configure.ac:2123: -1- AH_OUTPUT([HAVE_GAS_BALIGN_AND_P2ALIGN], [/* Define if your assembler supports .balign and .p2align. */ +m4trace:configure.ac:1747: -1- AC_SUBST([host_cc_for_libada]) +m4trace:configure.ac:1843: -1- AC_SUBST([CROSS]) +m4trace:configure.ac:1844: -1- AC_SUBST([ALL]) +m4trace:configure.ac:1845: -1- AC_SUBST([SYSTEM_HEADER_DIR]) +m4trace:configure.ac:1901: -1- AC_SUBST([inhibit_libc]) +m4trace:configure.ac:1908: -1- AC_SUBST([CC_FOR_BUILD]) +m4trace:configure.ac:1909: -1- AC_SUBST([BUILD_CFLAGS]) +m4trace:configure.ac:1910: -1- AC_SUBST([STMP_FIXINC]) +m4trace:configure.ac:1921: -1- AC_SUBST([STMP_FIXPROTO]) +m4trace:configure.ac:1948: -1- AC_SUBST([collect2]) +m4trace:configure.ac:1980: -1- m4_pattern_allow([AS_FOR_TARGET]) +m4trace:configure.ac:1995: -1- AC_SUBST([gcc_cv_as], [$ac_cv_path_gcc_cv_as]) +m4trace:configure.ac:1998: -1- AC_SUBST([ORIGINAL_AS_FOR_TARGET]) +m4trace:configure.ac:2046: -1- AC_SUBST([gcc_cv_ld], [$ac_cv_path_gcc_cv_ld]) +m4trace:configure.ac:2049: -1- AC_SUBST([ORIGINAL_LD_FOR_TARGET]) +m4trace:configure.ac:2093: -1- AC_SUBST([gcc_cv_nm], [$ac_cv_path_gcc_cv_nm]) +m4trace:configure.ac:2106: -1- AC_SUBST([ORIGINAL_NM_FOR_TARGET]) +m4trace:configure.ac:2121: -1- AC_SUBST([gcc_cv_objdump], [$ac_cv_path_gcc_cv_objdump]) +m4trace:configure.ac:2139: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_BALIGN_AND_P2ALIGN]) +m4trace:configure.ac:2139: -1- AH_OUTPUT([HAVE_GAS_BALIGN_AND_P2ALIGN], [/* Define if your assembler supports .balign and .p2align. */ #ifndef USED_FOR_TARGET #undef HAVE_GAS_BALIGN_AND_P2ALIGN #endif ]) -m4trace:configure.ac:2130: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_MAX_SKIP_P2ALIGN]) -m4trace:configure.ac:2130: -1- AH_OUTPUT([HAVE_GAS_MAX_SKIP_P2ALIGN], [/* Define if your assembler supports specifying the maximum number of bytes to +m4trace:configure.ac:2146: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_MAX_SKIP_P2ALIGN]) +m4trace:configure.ac:2146: -1- AH_OUTPUT([HAVE_GAS_MAX_SKIP_P2ALIGN], [/* Define if your assembler supports specifying the maximum number of bytes to skip when using the GAS .p2align command. */ #ifndef USED_FOR_TARGET #undef HAVE_GAS_MAX_SKIP_P2ALIGN #endif ]) -m4trace:configure.ac:2137: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_LITERAL16]) -m4trace:configure.ac:2137: -1- AH_OUTPUT([HAVE_GAS_LITERAL16], [/* Define if your assembler supports .literal16. */ +m4trace:configure.ac:2153: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_LITERAL16]) +m4trace:configure.ac:2153: -1- AH_OUTPUT([HAVE_GAS_LITERAL16], [/* Define if your assembler supports .literal16. */ #ifndef USED_FOR_TARGET #undef HAVE_GAS_LITERAL16 #endif ]) -m4trace:configure.ac:2157: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_SUBSECTION_ORDERING]) -m4trace:configure.ac:2157: -1- AH_OUTPUT([HAVE_GAS_SUBSECTION_ORDERING], [/* Define if your assembler supports .subsection and .subsection -1 starts +m4trace:configure.ac:2173: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_SUBSECTION_ORDERING]) +m4trace:configure.ac:2173: -1- AH_OUTPUT([HAVE_GAS_SUBSECTION_ORDERING], [/* Define if your assembler supports .subsection and .subsection -1 starts emitting at the beginning of your section. */ #ifndef USED_FOR_TARGET #undef HAVE_GAS_SUBSECTION_ORDERING #endif ]) -m4trace:configure.ac:2162: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_WEAK]) -m4trace:configure.ac:2162: -1- AH_OUTPUT([HAVE_GAS_WEAK], [/* Define if your assembler supports .weak. */ +m4trace:configure.ac:2178: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_WEAK]) +m4trace:configure.ac:2178: -1- AH_OUTPUT([HAVE_GAS_WEAK], [/* Define if your assembler supports .weak. */ #ifndef USED_FOR_TARGET #undef HAVE_GAS_WEAK #endif ]) -m4trace:configure.ac:2167: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_WEAKREF]) -m4trace:configure.ac:2167: -1- AH_OUTPUT([HAVE_GAS_WEAKREF], [/* Define if your assembler supports .weakref. */ +m4trace:configure.ac:2183: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_WEAKREF]) +m4trace:configure.ac:2183: -1- AH_OUTPUT([HAVE_GAS_WEAKREF], [/* Define if your assembler supports .weakref. */ #ifndef USED_FOR_TARGET #undef HAVE_GAS_WEAKREF #endif ]) -m4trace:configure.ac:2173: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_NSUBSPA_COMDAT]) -m4trace:configure.ac:2173: -1- AH_OUTPUT([HAVE_GAS_NSUBSPA_COMDAT], [/* Define if your assembler supports .nsubspa comdat option. */ +m4trace:configure.ac:2189: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_NSUBSPA_COMDAT]) +m4trace:configure.ac:2189: -1- AH_OUTPUT([HAVE_GAS_NSUBSPA_COMDAT], [/* Define if your assembler supports .nsubspa comdat option. */ #ifndef USED_FOR_TARGET #undef HAVE_GAS_NSUBSPA_COMDAT #endif ]) -m4trace:configure.ac:2242: -1- AC_SUBST([libgcc_visibility]) -m4trace:configure.ac:2247: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_HIDDEN]) -m4trace:configure.ac:2247: -1- AH_OUTPUT([HAVE_GAS_HIDDEN], [/* Define if your assembler and linker support .hidden. */ +m4trace:configure.ac:2258: -1- AC_SUBST([libgcc_visibility]) +m4trace:configure.ac:2263: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_HIDDEN]) +m4trace:configure.ac:2263: -1- AH_OUTPUT([HAVE_GAS_HIDDEN], [/* Define if your assembler and linker support .hidden. */ #undef HAVE_GAS_HIDDEN]) -m4trace:configure.ac:2277: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_LEB128]) -m4trace:configure.ac:2277: -1- AH_OUTPUT([HAVE_AS_LEB128], [/* Define if your assembler supports .sleb128 and .uleb128. */ +m4trace:configure.ac:2293: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_LEB128]) +m4trace:configure.ac:2293: -1- AH_OUTPUT([HAVE_AS_LEB128], [/* Define if your assembler supports .sleb128 and .uleb128. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_LEB128 #endif ]) -m4trace:configure.ac:2347: -1- AC_DEFINE_TRACE_LITERAL([USE_AS_TRADITIONAL_FORMAT]) -m4trace:configure.ac:2347: -1- AH_OUTPUT([USE_AS_TRADITIONAL_FORMAT], [/* Define if your assembler mis-optimizes .eh_frame data. */ +m4trace:configure.ac:2363: -1- AC_DEFINE_TRACE_LITERAL([USE_AS_TRADITIONAL_FORMAT]) +m4trace:configure.ac:2363: -1- AH_OUTPUT([USE_AS_TRADITIONAL_FORMAT], [/* Define if your assembler mis-optimizes .eh_frame data. */ #ifndef USED_FOR_TARGET #undef USE_AS_TRADITIONAL_FORMAT #endif ]) -m4trace:configure.ac:2360: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_SHF_MERGE]) -m4trace:configure.ac:2360: -1- AH_OUTPUT([HAVE_GAS_SHF_MERGE], [/* Define 0/1 if your assembler supports marking sections with SHF_MERGE flag. +m4trace:configure.ac:2376: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_SHF_MERGE]) +m4trace:configure.ac:2376: -1- AH_OUTPUT([HAVE_GAS_SHF_MERGE], [/* Define 0/1 if your assembler supports marking sections with SHF_MERGE flag. */ #ifndef USED_FOR_TARGET #undef HAVE_GAS_SHF_MERGE #endif ]) -m4trace:configure.ac:2394: -1- AC_DEFINE_TRACE_LITERAL([HAVE_COMDAT_GROUP]) -m4trace:configure.ac:2394: -1- AH_OUTPUT([HAVE_COMDAT_GROUP], [/* Define 0/1 if your assembler and linker support COMDAT groups. */ +m4trace:configure.ac:2410: -1- AC_DEFINE_TRACE_LITERAL([HAVE_COMDAT_GROUP]) +m4trace:configure.ac:2410: -1- AH_OUTPUT([HAVE_COMDAT_GROUP], [/* Define 0/1 if your assembler and linker support COMDAT groups. */ #ifndef USED_FOR_TARGET #undef HAVE_COMDAT_GROUP #endif ]) -m4trace:configure.ac:2745: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_TLS]) -m4trace:configure.ac:2745: -1- AH_OUTPUT([HAVE_AS_TLS], [/* Define if your assembler supports thread-local storage. */ +m4trace:configure.ac:2761: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_TLS]) +m4trace:configure.ac:2761: -1- AH_OUTPUT([HAVE_AS_TLS], [/* Define if your assembler supports thread-local storage. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_TLS #endif ]) -m4trace:configure.ac:2765: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LD_STATIC_DYNAMIC]) -m4trace:configure.ac:2765: -1- AH_OUTPUT([HAVE_LD_STATIC_DYNAMIC], [/* Define if your linker supports -Bstatic/-Bdynamic option. */ +m4trace:configure.ac:2781: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LD_STATIC_DYNAMIC]) +m4trace:configure.ac:2781: -1- AH_OUTPUT([HAVE_LD_STATIC_DYNAMIC], [/* Define if your linker supports -Bstatic/-Bdynamic option. */ #ifndef USED_FOR_TARGET #undef HAVE_LD_STATIC_DYNAMIC #endif ]) -m4trace:configure.ac:2784: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LD_DEMANGLE]) -m4trace:configure.ac:2784: -1- AH_OUTPUT([HAVE_LD_DEMANGLE], [/* Define if your linker supports --demangle option. */ +m4trace:configure.ac:2800: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LD_DEMANGLE]) +m4trace:configure.ac:2800: -1- AH_OUTPUT([HAVE_LD_DEMANGLE], [/* Define if your linker supports --demangle option. */ #ifndef USED_FOR_TARGET #undef HAVE_LD_DEMANGLE #endif ]) -m4trace:configure.ac:2808: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_EXPLICIT_RELOCS]) -m4trace:configure.ac:2808: -1- AH_OUTPUT([HAVE_AS_EXPLICIT_RELOCS], [/* Define if your assembler supports explicit relocations. */ +m4trace:configure.ac:2824: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_EXPLICIT_RELOCS]) +m4trace:configure.ac:2824: -1- AH_OUTPUT([HAVE_AS_EXPLICIT_RELOCS], [/* Define if your assembler supports explicit relocations. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_EXPLICIT_RELOCS #endif ]) -m4trace:configure.ac:2816: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_JSRDIRECT_RELOCS]) -m4trace:configure.ac:2816: -1- AH_OUTPUT([HAVE_AS_JSRDIRECT_RELOCS], [/* Define if your assembler supports the lituse_jsrdirect relocation. */ +m4trace:configure.ac:2832: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_JSRDIRECT_RELOCS]) +m4trace:configure.ac:2832: -1- AH_OUTPUT([HAVE_AS_JSRDIRECT_RELOCS], [/* Define if your assembler supports the lituse_jsrdirect relocation. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_JSRDIRECT_RELOCS #endif ]) -m4trace:configure.ac:2824: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_NO_MUL_BUG_ABORT_OPTION]) -m4trace:configure.ac:2824: -1- AH_OUTPUT([HAVE_AS_NO_MUL_BUG_ABORT_OPTION], [/* Define if your assembler supports the -no-mul-bug-abort option. */ +m4trace:configure.ac:2840: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_NO_MUL_BUG_ABORT_OPTION]) +m4trace:configure.ac:2840: -1- AH_OUTPUT([HAVE_AS_NO_MUL_BUG_ABORT_OPTION], [/* Define if your assembler supports the -no-mul-bug-abort option. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_NO_MUL_BUG_ABORT_OPTION #endif ]) -m4trace:configure.ac:2831: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_REGISTER_PSEUDO_OP]) -m4trace:configure.ac:2831: -1- AH_OUTPUT([HAVE_AS_REGISTER_PSEUDO_OP], [/* Define if your assembler supports .register. */ +m4trace:configure.ac:2847: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_REGISTER_PSEUDO_OP]) +m4trace:configure.ac:2847: -1- AH_OUTPUT([HAVE_AS_REGISTER_PSEUDO_OP], [/* Define if your assembler supports .register. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_REGISTER_PSEUDO_OP #endif ]) -m4trace:configure.ac:2836: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_RELAX_OPTION]) -m4trace:configure.ac:2836: -1- AH_OUTPUT([HAVE_AS_RELAX_OPTION], [/* Define if your assembler supports -relax option. */ +m4trace:configure.ac:2852: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_RELAX_OPTION]) +m4trace:configure.ac:2852: -1- AH_OUTPUT([HAVE_AS_RELAX_OPTION], [/* Define if your assembler supports -relax option. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_RELAX_OPTION #endif ]) -m4trace:configure.ac:2882: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_SPARC_UA_PCREL]) -m4trace:configure.ac:2882: -1- AH_OUTPUT([HAVE_AS_SPARC_UA_PCREL], [/* Define if your assembler and linker support unaligned PC relative relocs. +m4trace:configure.ac:2898: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_SPARC_UA_PCREL]) +m4trace:configure.ac:2898: -1- AH_OUTPUT([HAVE_AS_SPARC_UA_PCREL], [/* Define if your assembler and linker support unaligned PC relative relocs. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_SPARC_UA_PCREL #endif ]) -m4trace:configure.ac:2882: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_SPARC_UA_PCREL_HIDDEN]) -m4trace:configure.ac:2882: -1- AH_OUTPUT([HAVE_AS_SPARC_UA_PCREL_HIDDEN], [/* Define if your assembler and linker support unaligned PC relative relocs +m4trace:configure.ac:2898: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_SPARC_UA_PCREL_HIDDEN]) +m4trace:configure.ac:2898: -1- AH_OUTPUT([HAVE_AS_SPARC_UA_PCREL_HIDDEN], [/* Define if your assembler and linker support unaligned PC relative relocs against hidden symbols. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_SPARC_UA_PCREL_HIDDEN #endif ]) -m4trace:configure.ac:2896: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_OFFSETABLE_LO10]) -m4trace:configure.ac:2896: -1- AH_OUTPUT([HAVE_AS_OFFSETABLE_LO10], [/* Define if your assembler supports offsetable %lo(). */ +m4trace:configure.ac:2912: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_OFFSETABLE_LO10]) +m4trace:configure.ac:2912: -1- AH_OUTPUT([HAVE_AS_OFFSETABLE_LO10], [/* Define if your assembler supports offsetable %lo(). */ #ifndef USED_FOR_TARGET #undef HAVE_AS_OFFSETABLE_LO10 #endif ]) -m4trace:configure.ac:2918: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_PE_SECREL32_RELOC]) -m4trace:configure.ac:2918: -1- AH_OUTPUT([HAVE_GAS_PE_SECREL32_RELOC], [/* Define if your assembler and linker support 32-bit section relative relocs +m4trace:configure.ac:2934: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_PE_SECREL32_RELOC]) +m4trace:configure.ac:2934: -1- AH_OUTPUT([HAVE_GAS_PE_SECREL32_RELOC], [/* Define if your assembler and linker support 32-bit section relative relocs via \'.secrel32 label\'. */ #ifndef USED_FOR_TARGET #undef HAVE_GAS_PE_SECREL32_RELOC #endif ]) -m4trace:configure.ac:2926: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_FILDS_FISTS]) -m4trace:configure.ac:2926: -1- AH_OUTPUT([HAVE_GAS_FILDS_FISTS], [/* Define if your assembler uses the new HImode fild and fist notation. */ +m4trace:configure.ac:2942: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GAS_FILDS_FISTS]) +m4trace:configure.ac:2942: -1- AH_OUTPUT([HAVE_GAS_FILDS_FISTS], [/* Define if your assembler uses the new HImode fild and fist notation. */ #ifndef USED_FOR_TARGET #undef HAVE_GAS_FILDS_FISTS #endif ]) -m4trace:configure.ac:2932: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_IX86_CMOV_SUN_SYNTAX]) -m4trace:configure.ac:2932: -1- AH_OUTPUT([HAVE_AS_IX86_CMOV_SUN_SYNTAX], [/* Define if your assembler supports the Sun syntax for cmov. */ +m4trace:configure.ac:2948: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_IX86_CMOV_SUN_SYNTAX]) +m4trace:configure.ac:2948: -1- AH_OUTPUT([HAVE_AS_IX86_CMOV_SUN_SYNTAX], [/* Define if your assembler supports the Sun syntax for cmov. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_IX86_CMOV_SUN_SYNTAX #endif ]) -m4trace:configure.ac:2938: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_IX86_FFREEP]) -m4trace:configure.ac:2938: -1- AH_OUTPUT([HAVE_AS_IX86_FFREEP], [/* Define if your assembler supports the ffreep mnemonic. */ +m4trace:configure.ac:2954: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_IX86_FFREEP]) +m4trace:configure.ac:2954: -1- AH_OUTPUT([HAVE_AS_IX86_FFREEP], [/* Define if your assembler supports the ffreep mnemonic. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_IX86_FFREEP #endif ]) -m4trace:configure.ac:2951: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_GOTOFF_IN_DATA]) -m4trace:configure.ac:2951: -1- AH_OUTPUT([HAVE_AS_GOTOFF_IN_DATA], [/* Define true if the assembler supports \'.long foo at GOTOFF\'. */ +m4trace:configure.ac:2967: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_GOTOFF_IN_DATA]) +m4trace:configure.ac:2967: -1- AH_OUTPUT([HAVE_AS_GOTOFF_IN_DATA], [/* Define true if the assembler supports \'.long foo at GOTOFF\'. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_GOTOFF_IN_DATA #endif ]) -m4trace:configure.ac:2962: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_LTOFFX_LDXMOV_RELOCS]) -m4trace:configure.ac:2962: -1- AH_OUTPUT([HAVE_AS_LTOFFX_LDXMOV_RELOCS], [/* Define if your assembler supports ltoffx and ldxmov relocations. */ +m4trace:configure.ac:2978: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_LTOFFX_LDXMOV_RELOCS]) +m4trace:configure.ac:2978: -1- AH_OUTPUT([HAVE_AS_LTOFFX_LDXMOV_RELOCS], [/* Define if your assembler supports ltoffx and ldxmov relocations. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_LTOFFX_LDXMOV_RELOCS #endif ]) -m4trace:configure.ac:2991: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_MFCRF]) -m4trace:configure.ac:2991: -1- AH_OUTPUT([HAVE_AS_MFCRF], [/* Define if your assembler supports mfcr field. */ +m4trace:configure.ac:3007: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_MFCRF]) +m4trace:configure.ac:3007: -1- AH_OUTPUT([HAVE_AS_MFCRF], [/* Define if your assembler supports mfcr field. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_MFCRF #endif ]) -m4trace:configure.ac:3006: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_POPCNTB]) -m4trace:configure.ac:3006: -1- AH_OUTPUT([HAVE_AS_POPCNTB], [/* Define if your assembler supports popcntb field. */ +m4trace:configure.ac:3022: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_POPCNTB]) +m4trace:configure.ac:3022: -1- AH_OUTPUT([HAVE_AS_POPCNTB], [/* Define if your assembler supports popcntb field. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_POPCNTB #endif ]) -m4trace:configure.ac:3021: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_FPRND]) -m4trace:configure.ac:3021: -1- AH_OUTPUT([HAVE_AS_FPRND], [/* Define if your assembler supports fprnd. */ +m4trace:configure.ac:3037: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_FPRND]) +m4trace:configure.ac:3037: -1- AH_OUTPUT([HAVE_AS_FPRND], [/* Define if your assembler supports fprnd. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_FPRND #endif ]) -m4trace:configure.ac:3040: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_REL16]) -m4trace:configure.ac:3040: -1- AH_OUTPUT([HAVE_AS_REL16], [/* Define if your assembler supports R_PPC_REL16 relocs. */ +m4trace:configure.ac:3056: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_REL16]) +m4trace:configure.ac:3056: -1- AH_OUTPUT([HAVE_AS_REL16], [/* Define if your assembler supports R_PPC_REL16 relocs. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_REL16 #endif ]) -m4trace:configure.ac:3117: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_DWARF2_DEBUG_LINE]) -m4trace:configure.ac:3117: -1- AH_OUTPUT([HAVE_AS_DWARF2_DEBUG_LINE], [/* Define if your assembler supports dwarf2 .file/.loc directives, and +m4trace:configure.ac:3133: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_DWARF2_DEBUG_LINE]) +m4trace:configure.ac:3133: -1- AH_OUTPUT([HAVE_AS_DWARF2_DEBUG_LINE], [/* Define if your assembler supports dwarf2 .file/.loc directives, and preserves file table indices exactly as given. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_DWARF2_DEBUG_LINE #endif ]) -m4trace:configure.ac:3124: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_GDWARF2_DEBUG_FLAG]) -m4trace:configure.ac:3124: -1- AH_OUTPUT([HAVE_AS_GDWARF2_DEBUG_FLAG], [/* Define if your assembler supports the --gdwarf2 option. */ +m4trace:configure.ac:3140: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_GDWARF2_DEBUG_FLAG]) +m4trace:configure.ac:3140: -1- AH_OUTPUT([HAVE_AS_GDWARF2_DEBUG_FLAG], [/* Define if your assembler supports the --gdwarf2 option. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_GDWARF2_DEBUG_FLAG #endif ]) -m4trace:configure.ac:3137: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_GSTABS_DEBUG_FLAG]) -m4trace:configure.ac:3137: -1- AH_OUTPUT([HAVE_AS_GSTABS_DEBUG_FLAG], [/* Define if your assembler supports the --gstabs option. */ +m4trace:configure.ac:3153: -1- AC_DEFINE_TRACE_LITERAL([HAVE_AS_GSTABS_DEBUG_FLAG]) +m4trace:configure.ac:3153: -1- AH_OUTPUT([HAVE_AS_GSTABS_DEBUG_FLAG], [/* Define if your assembler supports the --gstabs option. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_GSTABS_DEBUG_FLAG #endif ]) -m4trace:configure.ac:3175: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LD_RO_RW_SECTION_MIXING]) -m4trace:configure.ac:3175: -1- AH_OUTPUT([HAVE_LD_RO_RW_SECTION_MIXING], [/* Define if your linker links a mix of read-only and read-write sections into +m4trace:configure.ac:3191: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LD_RO_RW_SECTION_MIXING]) +m4trace:configure.ac:3191: -1- AH_OUTPUT([HAVE_LD_RO_RW_SECTION_MIXING], [/* Define if your linker links a mix of read-only and read-write sections into a read-write section. */ #ifndef USED_FOR_TARGET #undef HAVE_LD_RO_RW_SECTION_MIXING #endif ]) -m4trace:configure.ac:3195: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LD_EH_FRAME_HDR]) -m4trace:configure.ac:3195: -1- AH_OUTPUT([HAVE_LD_EH_FRAME_HDR], [/* Define if your linker supports --eh-frame-hdr option. */ +m4trace:configure.ac:3211: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LD_EH_FRAME_HDR]) +m4trace:configure.ac:3211: -1- AH_OUTPUT([HAVE_LD_EH_FRAME_HDR], [/* Define if your linker supports --eh-frame-hdr option. */ #undef HAVE_LD_EH_FRAME_HDR]) -m4trace:configure.ac:3214: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LD_PIE]) -m4trace:configure.ac:3214: -1- AH_OUTPUT([HAVE_LD_PIE], [/* Define if your linker supports -pie option. */ +m4trace:configure.ac:3230: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LD_PIE]) +m4trace:configure.ac:3230: -1- AH_OUTPUT([HAVE_LD_PIE], [/* Define if your linker supports -pie option. */ #ifndef USED_FOR_TARGET #undef HAVE_LD_PIE #endif ]) -m4trace:configure.ac:3239: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LD_AS_NEEDED]) -m4trace:configure.ac:3239: -1- AH_OUTPUT([HAVE_LD_AS_NEEDED], [/* Define if your linker supports --as-needed and --no-as-needed options. */ +m4trace:configure.ac:3255: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LD_AS_NEEDED]) +m4trace:configure.ac:3255: -1- AH_OUTPUT([HAVE_LD_AS_NEEDED], [/* Define if your linker supports --as-needed and --no-as-needed options. */ #ifndef USED_FOR_TARGET #undef HAVE_LD_AS_NEEDED #endif ]) -m4trace:configure.ac:3278: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LD_NO_DOT_SYMS]) -m4trace:configure.ac:3278: -1- AH_OUTPUT([HAVE_LD_NO_DOT_SYMS], [/* Define if your PowerPC64 linker only needs function descriptor syms. */ +m4trace:configure.ac:3294: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LD_NO_DOT_SYMS]) +m4trace:configure.ac:3294: -1- AH_OUTPUT([HAVE_LD_NO_DOT_SYMS], [/* Define if your PowerPC64 linker only needs function descriptor syms. */ #ifndef USED_FOR_TARGET #undef HAVE_LD_NO_DOT_SYMS #endif ]) -m4trace:configure.ac:3297: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LD_SYSROOT]) -m4trace:configure.ac:3297: -1- AH_OUTPUT([HAVE_LD_SYSROOT], [/* Define if your linker supports --sysroot. */ +m4trace:configure.ac:3313: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LD_SYSROOT]) +m4trace:configure.ac:3313: -1- AH_OUTPUT([HAVE_LD_SYSROOT], [/* Define if your linker supports --sysroot. */ #ifndef USED_FOR_TARGET #undef HAVE_LD_SYSROOT #endif ]) -m4trace:configure.ac:3303: -1- AC_DEFINE_TRACE_LITERAL([PREFIX_INCLUDE_DIR]) -m4trace:configure.ac:3303: -1- AH_OUTPUT([PREFIX_INCLUDE_DIR], [/* Define to PREFIX/include if cpp should also search that directory. */ +m4trace:configure.ac:3319: -1- AC_DEFINE_TRACE_LITERAL([PREFIX_INCLUDE_DIR]) +m4trace:configure.ac:3319: -1- AH_OUTPUT([PREFIX_INCLUDE_DIR], [/* Define to PREFIX/include if cpp should also search that directory. */ #ifndef USED_FOR_TARGET #undef PREFIX_INCLUDE_DIR #endif ]) -m4trace:configure.ac:3353: -1- AC_DEFINE_TRACE_LITERAL([TARGET_LIBC_PROVIDES_SSP]) -m4trace:configure.ac:3353: -1- AH_OUTPUT([TARGET_LIBC_PROVIDES_SSP], [/* Define if your target C library provides stack protector support */ +m4trace:configure.ac:3369: -1- AC_DEFINE_TRACE_LITERAL([TARGET_LIBC_PROVIDES_SSP]) +m4trace:configure.ac:3369: -1- AH_OUTPUT([TARGET_LIBC_PROVIDES_SSP], [/* Define if your target C library provides stack protector support */ #ifndef USED_FOR_TARGET #undef TARGET_LIBC_PROVIDES_SSP #endif ]) -m4trace:configure.ac:3389: -1- AC_DEFINE_TRACE_LITERAL([TARGET_DEFAULT_LONG_DOUBLE_128]) -m4trace:configure.ac:3389: -1- AH_OUTPUT([TARGET_DEFAULT_LONG_DOUBLE_128], [/* Define if TFmode long double should be the default */ +m4trace:configure.ac:3405: -1- AC_DEFINE_TRACE_LITERAL([TARGET_DEFAULT_LONG_DOUBLE_128]) +m4trace:configure.ac:3405: -1- AH_OUTPUT([TARGET_DEFAULT_LONG_DOUBLE_128], [/* Define if TFmode long double should be the default */ #ifndef USED_FOR_TARGET #undef TARGET_DEFAULT_LONG_DOUBLE_128 #endif ]) -m4trace:configure.ac:3408: -1- AC_DEFINE_TRACE_LITERAL([GGC_ZONE]) -m4trace:configure.ac:3408: -1- AH_OUTPUT([GGC_ZONE], [/* Define if the zone collector is in use */ +m4trace:configure.ac:3424: -1- AC_DEFINE_TRACE_LITERAL([GGC_ZONE]) +m4trace:configure.ac:3424: -1- AH_OUTPUT([GGC_ZONE], [/* Define if the zone collector is in use */ #ifndef USED_FOR_TARGET #undef GGC_ZONE #endif ]) -m4trace:configure.ac:3409: -1- AC_SUBST([GGC]) -m4trace:configure.ac:3420: -1- AC_SUBST([zlibdir]) -m4trace:configure.ac:3421: -1- AC_SUBST([zlibinc]) -m4trace:configure.ac:3441: -1- AC_SUBST([MAINT]) -m4trace:configure.ac:3654: -1- AC_SUBST([gcc_tooldir]) -m4trace:configure.ac:3655: -1- AC_SUBST([dollar]) -m4trace:configure.ac:3674: -1- AC_SUBST([slibdir]) -m4trace:configure.ac:3677: -1- AC_SUBST([objdir]) -m4trace:configure.ac:3683: -1- AC_SUBST([datarootdir]) -m4trace:configure.ac:3689: -1- AC_SUBST([docdir]) -m4trace:configure.ac:3695: -1- AC_SUBST([htmldir]) -m4trace:configure.ac:3698: -1- AC_SUBST([subdirs]) -m4trace:configure.ac:3699: -1- AC_SUBST([srcdir]) -m4trace:configure.ac:3700: -1- AC_SUBST([all_boot_languages]) -m4trace:configure.ac:3701: -1- AC_SUBST([all_compilers]) -m4trace:configure.ac:3702: -1- AC_SUBST([all_gtfiles]) -m4trace:configure.ac:3703: -1- AC_SUBST([all_gtfiles_files_langs]) -m4trace:configure.ac:3704: -1- AC_SUBST([all_gtfiles_files_files]) -m4trace:configure.ac:3705: -1- AC_SUBST([all_lang_makefrags]) -m4trace:configure.ac:3706: -1- AC_SUBST([all_lang_makefiles]) -m4trace:configure.ac:3707: -1- AC_SUBST([all_languages]) -m4trace:configure.ac:3708: -1- AC_SUBST([all_selected_languages]) -m4trace:configure.ac:3709: -1- AC_SUBST([all_stagestuff]) -m4trace:configure.ac:3710: -1- AC_SUBST([build_exeext]) -m4trace:configure.ac:3711: -1- AC_SUBST([build_install_headers_dir]) -m4trace:configure.ac:3712: -1- AC_SUBST([build_xm_file_list]) -m4trace:configure.ac:3713: -1- AC_SUBST([build_xm_include_list]) -m4trace:configure.ac:3714: -1- AC_SUBST([build_xm_defines]) -m4trace:configure.ac:3715: -1- AC_SUBST([check_languages]) -m4trace:configure.ac:3716: -1- AC_SUBST([cc_set_by_configure]) -m4trace:configure.ac:3717: -1- AC_SUBST([quoted_cc_set_by_configure]) -m4trace:configure.ac:3718: -1- AC_SUBST([cpp_install_dir]) -m4trace:configure.ac:3719: -1- AC_SUBST([xmake_file]) -m4trace:configure.ac:3720: -1- AC_SUBST([tmake_file]) -m4trace:configure.ac:3721: -1- AC_SUBST([extra_gcc_objs]) -m4trace:configure.ac:3722: -1- AC_SUBST([extra_headers_list]) -m4trace:configure.ac:3723: -1- AC_SUBST([extra_objs]) -m4trace:configure.ac:3724: -1- AC_SUBST([extra_parts]) -m4trace:configure.ac:3725: -1- AC_SUBST([extra_passes]) -m4trace:configure.ac:3726: -1- AC_SUBST([extra_programs]) -m4trace:configure.ac:3727: -1- AC_SUBST([float_h_file]) -m4trace:configure.ac:3728: -1- AC_SUBST([gcc_config_arguments]) -m4trace:configure.ac:3729: -1- AC_SUBST([gcc_gxx_include_dir]) -m4trace:configure.ac:3730: -1- AC_SUBST([host_exeext]) -m4trace:configure.ac:3731: -1- AC_SUBST([host_xm_file_list]) -m4trace:configure.ac:3732: -1- AC_SUBST([host_xm_include_list]) -m4trace:configure.ac:3733: -1- AC_SUBST([host_xm_defines]) -m4trace:configure.ac:3734: -1- AC_SUBST([out_host_hook_obj]) -m4trace:configure.ac:3735: -1- AC_SUBST([install]) -m4trace:configure.ac:3736: -1- AC_SUBST([lang_opt_files]) -m4trace:configure.ac:3737: -1- AC_SUBST([lang_specs_files]) -m4trace:configure.ac:3738: -1- AC_SUBST([lang_tree_files]) -m4trace:configure.ac:3739: -1- AC_SUBST([local_prefix]) -m4trace:configure.ac:3740: -1- AC_SUBST([md_file]) -m4trace:configure.ac:3741: -1- AC_SUBST([objc_boehm_gc]) -m4trace:configure.ac:3742: -1- AC_SUBST([out_file]) -m4trace:configure.ac:3744: -1- AC_SUBST([out_cxx_file]) -m4trace:configure.ac:3745: -1- AC_SUBST([out_object_file]) -m4trace:configure.ac:3747: -1- AC_SUBST([out_cxx_object_file]) -m4trace:configure.ac:3748: -1- AC_SUBST([stage_prefix_set_by_configure]) -m4trace:configure.ac:3749: -1- AC_SUBST([quoted_stage_prefix_set_by_configure]) -m4trace:configure.ac:3750: -1- AC_SUBST([thread_file]) -m4trace:configure.ac:3751: -1- AC_SUBST([tm_file_list]) -m4trace:configure.ac:3752: -1- AC_SUBST([tm_include_list]) -m4trace:configure.ac:3753: -1- AC_SUBST([tm_defines]) -m4trace:configure.ac:3754: -1- AC_SUBST([tm_p_file_list]) -m4trace:configure.ac:3755: -1- AC_SUBST([tm_p_include_list]) -m4trace:configure.ac:3756: -1- AC_SUBST([xm_file_list]) -m4trace:configure.ac:3757: -1- AC_SUBST([xm_include_list]) -m4trace:configure.ac:3758: -1- AC_SUBST([xm_defines]) -m4trace:configure.ac:3759: -1- AC_SUBST([c_target_objs]) -m4trace:configure.ac:3760: -1- AC_SUBST([cxx_target_objs]) -m4trace:configure.ac:3761: -1- AC_SUBST([target_cpu_default]) -m4trace:configure.ac:3783: -1- AC_SUBST([GMPLIBS]) -m4trace:configure.ac:3784: -1- AC_SUBST([GMPINC]) -m4trace:configure.ac:3791: -1- AC_CONFIG_FILES([$all_outputs]) -m4trace:configure.ac:3826: -1- AC_SUBST([LIB@&t at OBJS], [$ac_libobjs]) -m4trace:configure.ac:3826: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +m4trace:configure.ac:3425: -1- AC_SUBST([GGC]) +m4trace:configure.ac:3436: -1- AC_SUBST([zlibdir]) +m4trace:configure.ac:3437: -1- AC_SUBST([zlibinc]) +m4trace:configure.ac:3457: -1- AC_SUBST([MAINT]) +m4trace:configure.ac:3670: -1- AC_SUBST([gcc_tooldir]) +m4trace:configure.ac:3671: -1- AC_SUBST([dollar]) +m4trace:configure.ac:3690: -1- AC_SUBST([slibdir]) +m4trace:configure.ac:3693: -1- AC_SUBST([objdir]) +m4trace:configure.ac:3699: -1- AC_SUBST([datarootdir]) +m4trace:configure.ac:3705: -1- AC_SUBST([docdir]) +m4trace:configure.ac:3711: -1- AC_SUBST([htmldir]) +m4trace:configure.ac:3714: -1- AC_SUBST([subdirs]) +m4trace:configure.ac:3715: -1- AC_SUBST([srcdir]) +m4trace:configure.ac:3716: -1- AC_SUBST([all_boot_languages]) +m4trace:configure.ac:3717: -1- AC_SUBST([all_compilers]) +m4trace:configure.ac:3718: -1- AC_SUBST([all_gtfiles]) +m4trace:configure.ac:3719: -1- AC_SUBST([all_gtfiles_files_langs]) +m4trace:configure.ac:3720: -1- AC_SUBST([all_gtfiles_files_files]) +m4trace:configure.ac:3721: -1- AC_SUBST([all_lang_makefrags]) +m4trace:configure.ac:3722: -1- AC_SUBST([all_lang_makefiles]) +m4trace:configure.ac:3723: -1- AC_SUBST([all_languages]) +m4trace:configure.ac:3724: -1- AC_SUBST([all_selected_languages]) +m4trace:configure.ac:3725: -1- AC_SUBST([all_stagestuff]) +m4trace:configure.ac:3726: -1- AC_SUBST([build_exeext]) +m4trace:configure.ac:3727: -1- AC_SUBST([build_install_headers_dir]) +m4trace:configure.ac:3728: -1- AC_SUBST([build_xm_file_list]) +m4trace:configure.ac:3729: -1- AC_SUBST([build_xm_include_list]) +m4trace:configure.ac:3730: -1- AC_SUBST([build_xm_defines]) +m4trace:configure.ac:3731: -1- AC_SUBST([check_languages]) +m4trace:configure.ac:3732: -1- AC_SUBST([cc_set_by_configure]) +m4trace:configure.ac:3733: -1- AC_SUBST([quoted_cc_set_by_configure]) +m4trace:configure.ac:3734: -1- AC_SUBST([cpp_install_dir]) +m4trace:configure.ac:3735: -1- AC_SUBST([xmake_file]) +m4trace:configure.ac:3736: -1- AC_SUBST([tmake_file]) +m4trace:configure.ac:3737: -1- AC_SUBST([extra_gcc_objs]) +m4trace:configure.ac:3738: -1- AC_SUBST([extra_headers_list]) +m4trace:configure.ac:3739: -1- AC_SUBST([extra_objs]) +m4trace:configure.ac:3740: -1- AC_SUBST([extra_parts]) +m4trace:configure.ac:3741: -1- AC_SUBST([extra_passes]) +m4trace:configure.ac:3742: -1- AC_SUBST([extra_programs]) +m4trace:configure.ac:3743: -1- AC_SUBST([float_h_file]) +m4trace:configure.ac:3744: -1- AC_SUBST([gcc_config_arguments]) +m4trace:configure.ac:3745: -1- AC_SUBST([gcc_gxx_include_dir]) +m4trace:configure.ac:3746: -1- AC_SUBST([host_exeext]) +m4trace:configure.ac:3747: -1- AC_SUBST([host_xm_file_list]) +m4trace:configure.ac:3748: -1- AC_SUBST([host_xm_include_list]) +m4trace:configure.ac:3749: -1- AC_SUBST([host_xm_defines]) +m4trace:configure.ac:3750: -1- AC_SUBST([out_host_hook_obj]) +m4trace:configure.ac:3751: -1- AC_SUBST([install]) +m4trace:configure.ac:3752: -1- AC_SUBST([lang_opt_files]) +m4trace:configure.ac:3753: -1- AC_SUBST([lang_specs_files]) +m4trace:configure.ac:3754: -1- AC_SUBST([lang_tree_files]) +m4trace:configure.ac:3755: -1- AC_SUBST([local_prefix]) +m4trace:configure.ac:3756: -1- AC_SUBST([md_file]) +m4trace:configure.ac:3757: -1- AC_SUBST([objc_boehm_gc]) +m4trace:configure.ac:3758: -1- AC_SUBST([out_file]) +m4trace:configure.ac:3760: -1- AC_SUBST([out_cxx_file]) +m4trace:configure.ac:3761: -1- AC_SUBST([out_object_file]) +m4trace:configure.ac:3763: -1- AC_SUBST([out_cxx_object_file]) +m4trace:configure.ac:3764: -1- AC_SUBST([stage_prefix_set_by_configure]) +m4trace:configure.ac:3765: -1- AC_SUBST([quoted_stage_prefix_set_by_configure]) +m4trace:configure.ac:3766: -1- AC_SUBST([thread_file]) +m4trace:configure.ac:3767: -1- AC_SUBST([tm_file_list]) +m4trace:configure.ac:3768: -1- AC_SUBST([tm_include_list]) +m4trace:configure.ac:3769: -1- AC_SUBST([tm_defines]) +m4trace:configure.ac:3770: -1- AC_SUBST([tm_p_file_list]) +m4trace:configure.ac:3771: -1- AC_SUBST([tm_p_include_list]) +m4trace:configure.ac:3772: -1- AC_SUBST([xm_file_list]) +m4trace:configure.ac:3773: -1- AC_SUBST([xm_include_list]) +m4trace:configure.ac:3774: -1- AC_SUBST([xm_defines]) +m4trace:configure.ac:3775: -1- AC_SUBST([c_target_objs]) +m4trace:configure.ac:3776: -1- AC_SUBST([cxx_target_objs]) +m4trace:configure.ac:3777: -1- AC_SUBST([target_cpu_default]) +m4trace:configure.ac:3799: -1- AC_SUBST([GMPLIBS]) +m4trace:configure.ac:3800: -1- AC_SUBST([GMPINC]) +m4trace:configure.ac:3807: -1- AC_CONFIG_FILES([$all_outputs]) +m4trace:configure.ac:3842: -1- AC_SUBST([LIB@&t at OBJS], [$ac_libobjs]) +m4trace:configure.ac:3842: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) Modified: llvm-gcc-4.2/trunk/gcc/configure URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/configure?rev=46170&r1=46169&r2=46170&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/configure (original) +++ llvm-gcc-4.2/trunk/gcc/configure Fri Jan 18 13:35:00 2008 @@ -7368,33 +7368,47 @@ ;; esac + LLVMBUILDMODE="" if test -x "$LLVMBASEPATH/Release/bin/llc$EXEEXT"; then + if test x$checkingenabled_flag == x ; then echo Found Release LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Release" - elif test -x "$LLVMBASEPATH/Debug/bin/llc$EXEEXT"; then + fi + fi + if test -x "$LLVMBASEPATH/Debug/bin/llc$EXEEXT"; then + if test x$checkingenabled_flag != x ; then echo Found Debug LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Debug" - elif test -x "$LLVMBASEPATH/Release-Asserts/bin/llc$EXEEXT"; then + fi + fi + if test -x "$LLVMBASEPATH/Release-Asserts/bin/llc$EXEEXT"; then echo Found Release-Asserts LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Release-Asserts" - elif test -x "$LLVMBASEPATH/Debug-Asserts/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/Debug-Asserts/bin/llc$EXEEXT"; then echo Found Debug-Asserts LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Debug-Asserts" - elif test -x "$LLVMBASEPATH/Release+Checks/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/Release+Checks/bin/llc$EXEEXT"; then echo Found Release+Checks LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Release+Checks" - elif test -x "$LLVMBASEPATH/Debug+Checks/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/Debug+Checks/bin/llc$EXEEXT"; then echo Found Debug+Checks LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Debug+Checks" - elif test -x "$LLVMBASEPATH/Release-Asserts+Checks/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/Release-Asserts+Checks/bin/llc$EXEEXT"; then echo Found Release-Asserts+Checks LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Release-Asserts+Checks" - elif test -x "$LLVMBASEPATH/Debug-Asserts+Checks/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/Debug-Asserts+Checks/bin/llc$EXEEXT"; then echo Found Debug-Asserts+Checks LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Debug-Asserts+Checks" - elif test -x "$LLVMBASEPATH/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/bin/llc$EXEEXT"; then echo Found Installed LLVM Tree in $LLVMBASEPATH - else + fi + if test x$LLVMBUILDMODE == x; then { { echo "$as_me:$LINENO: error: You must specify valid path to your LLVM tree with --enable-llvm=DIR" >&5 echo "$as_me: error: You must specify valid path to your LLVM tree with --enable-llvm=DIR" >&2;} { (exit 1); exit 1; }; } @@ -8020,7 +8034,7 @@ else ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'` - echo "configure:8023: version of makeinfo is $ac_prog_version" >&5 + echo "configure:8037: version of makeinfo is $ac_prog_version" >&5 case $ac_prog_version in '') gcc_cv_prog_makeinfo_modern=no;; 4.[4-9]*) Modified: llvm-gcc-4.2/trunk/gcc/configure.ac URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/configure.ac?rev=46170&r1=46169&r2=46170&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/configure.ac (original) +++ llvm-gcc-4.2/trunk/gcc/configure.ac Fri Jan 18 13:35:00 2008 @@ -853,33 +853,47 @@ ;; esac + LLVMBUILDMODE="" if test -x "$LLVMBASEPATH/Release/bin/llc$EXEEXT"; then + if test x$checkingenabled_flag == x ; then echo Found Release LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Release" - elif test -x "$LLVMBASEPATH/Debug/bin/llc$EXEEXT"; then + fi + fi + if test -x "$LLVMBASEPATH/Debug/bin/llc$EXEEXT"; then + if test x$checkingenabled_flag != x ; then echo Found Debug LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Debug" - elif test -x "$LLVMBASEPATH/Release-Asserts/bin/llc$EXEEXT"; then + fi + fi + if test -x "$LLVMBASEPATH/Release-Asserts/bin/llc$EXEEXT"; then echo Found Release-Asserts LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Release-Asserts" - elif test -x "$LLVMBASEPATH/Debug-Asserts/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/Debug-Asserts/bin/llc$EXEEXT"; then echo Found Debug-Asserts LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Debug-Asserts" - elif test -x "$LLVMBASEPATH/Release+Checks/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/Release+Checks/bin/llc$EXEEXT"; then echo Found Release+Checks LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Release+Checks" - elif test -x "$LLVMBASEPATH/Debug+Checks/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/Debug+Checks/bin/llc$EXEEXT"; then echo Found Debug+Checks LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Debug+Checks" - elif test -x "$LLVMBASEPATH/Release-Asserts+Checks/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/Release-Asserts+Checks/bin/llc$EXEEXT"; then echo Found Release-Asserts+Checks LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Release-Asserts+Checks" - elif test -x "$LLVMBASEPATH/Debug-Asserts+Checks/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/Debug-Asserts+Checks/bin/llc$EXEEXT"; then echo Found Debug-Asserts+Checks LLVM Tree in $LLVMBASEPATH LLVMBUILDMODE="Debug-Asserts+Checks" - elif test -x "$LLVMBASEPATH/bin/llc$EXEEXT"; then + fi + if test -x "$LLVMBASEPATH/bin/llc$EXEEXT"; then echo Found Installed LLVM Tree in $LLVMBASEPATH - else + fi + if test x$LLVMBUILDMODE == x; then AC_MSG_ERROR([You must specify valid path to your LLVM tree with --enable-llvm=DIR]) fi ], From sabre at nondot.org Fri Jan 18 13:36:21 2008 From: sabre at nondot.org (Chris Lattner) Date: Fri, 18 Jan 2008 19:36:21 -0000 Subject: [llvm-commits] [llvm] r46171 - /llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp Message-ID: <200801181936.m0IJaLno014561@zion.cs.uiuc.edu> Author: lattner Date: Fri Jan 18 13:36:20 2008 New Revision: 46171 URL: http://llvm.org/viewvc/llvm-project?rev=46171&view=rev Log: remove extraneous &'s. Modified: llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp?rev=46171&r1=46170&r2=46171&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp Fri Jan 18 13:36:20 2008 @@ -159,8 +159,8 @@ memset(OpActions, 0, sizeof(OpActions)); memset(LoadXActions, 0, sizeof(LoadXActions)); memset(TruncStoreActions, 0, sizeof(TruncStoreActions)); - memset(&IndexedModeActions, 0, sizeof(IndexedModeActions)); - memset(&ConvertActions, 0, sizeof(ConvertActions)); + memset(IndexedModeActions, 0, sizeof(IndexedModeActions)); + memset(ConvertActions, 0, sizeof(ConvertActions)); // Set default actions for various operations. for (unsigned VT = 0; VT != (unsigned)MVT::LAST_VALUETYPE; ++VT) { From echristo at apple.com Fri Jan 18 13:40:49 2008 From: echristo at apple.com (Eric Christopher) Date: Fri, 18 Jan 2008 11:40:49 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r46170 - in /llvm-gcc-4.2/trunk/gcc: autom4te.cache/output.0 autom4te.cache/requests autom4te.cache/traces.0 configure configure.ac In-Reply-To: <200801181935.m0IJZ1FT014499@zion.cs.uiuc.edu> References: <200801181935.m0IJZ1FT014499@zion.cs.uiuc.edu> Message-ID: <58CFD0FF-1C83-4C9B-A98E-70A4877FF87D@apple.com> On Jan 18, 2008, at 11:35 AM, Devang Patel wrote: > llvm-gcc-4.2/trunk/gcc/autom4te.cache/output.0 > llvm-gcc-4.2/trunk/gcc/autom4te.cache/requests > llvm-gcc-4.2/trunk/gcc/autom4te.cache/traces.0 Any reason why the auto-cache is checked into svn? -eric From sabre at nondot.org Fri Jan 18 10:54:57 2008 From: sabre at nondot.org (Chris Lattner) Date: Fri, 18 Jan 2008 16:54:57 -0000 Subject: [llvm-commits] [llvm] r46161 - in /llvm/trunk: lib/Target/PowerPC/PPCISelLowering.cpp test/CodeGen/PowerPC/stfiwx-2.ll Message-ID: <200801181654.m0IGsvsK001856@zion.cs.uiuc.edu> Author: lattner Date: Fri Jan 18 10:54:56 2008 New Revision: 46161 URL: http://llvm.org/viewvc/llvm-project?rev=46161&view=rev Log: Fix a latent bug exposed by my truncstore patch. We compiled stfiwx-2.ll to: _test: fctiwz f0, f1 stfiwx f0, 0, r4 blr instead of: _test: fctiwz f0, f1 stfd f0, -8(r1) nop nop lwz r2, -4(r1) stb r2, 0(r4) blr The former is not correct (stores 4 bytes, not 1). Added: llvm/trunk/test/CodeGen/PowerPC/stfiwx-2.ll Modified: llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp Modified: llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp?rev=46161&r1=46160&r2=46161&view=diff ============================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp (original) +++ llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp Fri Jan 18 10:54:56 2008 @@ -3184,6 +3184,7 @@ case ISD::STORE: // Turn STORE (FP_TO_SINT F) -> STFIWX(FCTIWZ(F)). if (TM.getSubtarget().hasSTFIWX() && + !cast(N)->isTruncatingStore() && N->getOperand(1).getOpcode() == ISD::FP_TO_SINT && N->getOperand(1).getValueType() == MVT::i32 && N->getOperand(1).getOperand(0).getValueType() != MVT::ppcf128) { Added: llvm/trunk/test/CodeGen/PowerPC/stfiwx-2.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/PowerPC/stfiwx-2.ll?rev=46161&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/PowerPC/stfiwx-2.ll (added) +++ llvm/trunk/test/CodeGen/PowerPC/stfiwx-2.ll Fri Jan 18 10:54:56 2008 @@ -0,0 +1,11 @@ +; This cannot be a stfiwx +; RUN: llvm-as < %s | llc -march=ppc32 -mcpu=g5 | grep stb +; RUN: llvm-as < %s | llc -march=ppc32 -mcpu=g5 | not grep stfiwx + +define void @test(float %F, i8* %P) { + %I = fptosi float %F to i32 + %X = trunc i32 %I to i8 + store i8 %X, i8* %P + ret void +} + From dalej at apple.com Fri Jan 18 13:53:31 2008 From: dalej at apple.com (Dale Johannesen) Date: Fri, 18 Jan 2008 19:53:31 -0000 Subject: [llvm-commits] [llvm] r46172 - /llvm/trunk/test/CodeGen/X86/aligned-comm.ll Message-ID: <200801181953.m0IJrVSD015469@zion.cs.uiuc.edu> Author: johannes Date: Fri Jan 18 13:53:31 2008 New Revision: 46172 URL: http://llvm.org/viewvc/llvm-project?rev=46172&view=rev Log: Test is correct again for the moment. Modified: llvm/trunk/test/CodeGen/X86/aligned-comm.ll Modified: llvm/trunk/test/CodeGen/X86/aligned-comm.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/aligned-comm.ll?rev=46172&r1=46171&r2=46172&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/X86/aligned-comm.ll (original) +++ llvm/trunk/test/CodeGen/X86/aligned-comm.ll Fri Jan 18 13:53:31 2008 @@ -2,9 +2,6 @@ ; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin10 | grep {array,16512,7} ; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin9 | grep {array,16512,7} ; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin8 | not grep {7} -; XFAIL: * - -; Currently there is no construct which generates .comm, so test is xfail'ed. ; Darwin 9+ should get alignment on common symbols. Darwin8 does ; not support this. From dpatel at apple.com Fri Jan 18 13:53:28 2008 From: dpatel at apple.com (Devang Patel) Date: Fri, 18 Jan 2008 11:53:28 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r46170 - in /llvm-gcc-4.2/trunk/gcc: autom4te.cache/output.0 autom4te.cache/requests autom4te.cache/traces.0 configure configure.ac In-Reply-To: <58CFD0FF-1C83-4C9B-A98E-70A4877FF87D@apple.com> References: <200801181935.m0IJZ1FT014499@zion.cs.uiuc.edu> <58CFD0FF-1C83-4C9B-A98E-70A4877FF87D@apple.com> Message-ID: <1419F055-D4A0-4DE4-9D37-368916BF1822@apple.com> On Jan 18, 2008, at 11:40 AM, Eric Christopher wrote: > > On Jan 18, 2008, at 11:35 AM, Devang Patel wrote: > >> llvm-gcc-4.2/trunk/gcc/autom4te.cache/output.0 >> llvm-gcc-4.2/trunk/gcc/autom4te.cache/requests >> llvm-gcc-4.2/trunk/gcc/autom4te.cache/traces.0 > > Any reason why the auto-cache is checked into svn? No idea. I do not even know how they are used. If you think they are not required please remove it. Thanks, - Devang From sabre at nondot.org Fri Jan 18 13:53:43 2008 From: sabre at nondot.org (Chris Lattner) Date: Fri, 18 Jan 2008 19:53:43 -0000 Subject: [llvm-commits] [llvm] r46173 - in /llvm/trunk/test/CodeGen/CellSPU: call.ll call_indirect.ll ctpop.ll dp_farith.ll eqv.ll extract_elt.ll fdiv.ll fneg-fabs.ll immed32.ll immed64.ll int2fp.ll intrinsics_branch.ll intrinsics_float.ll intrinsics_logical.ll mul_ops.ll sp_farith.ll struct_1.ll struct_2.ll vec_const.ll vecinsert.ll Message-ID: <200801181953.m0IJriZF015512@zion.cs.uiuc.edu> Author: lattner Date: Fri Jan 18 13:53:43 2008 New Revision: 46173 URL: http://llvm.org/viewvc/llvm-project?rev=46173&view=rev Log: remove extraneous &&'s from tests, as Scott is apparently not going to. Modified: llvm/trunk/test/CodeGen/CellSPU/call.ll llvm/trunk/test/CodeGen/CellSPU/call_indirect.ll llvm/trunk/test/CodeGen/CellSPU/ctpop.ll llvm/trunk/test/CodeGen/CellSPU/dp_farith.ll llvm/trunk/test/CodeGen/CellSPU/eqv.ll llvm/trunk/test/CodeGen/CellSPU/extract_elt.ll llvm/trunk/test/CodeGen/CellSPU/fdiv.ll llvm/trunk/test/CodeGen/CellSPU/fneg-fabs.ll llvm/trunk/test/CodeGen/CellSPU/immed32.ll llvm/trunk/test/CodeGen/CellSPU/immed64.ll llvm/trunk/test/CodeGen/CellSPU/int2fp.ll llvm/trunk/test/CodeGen/CellSPU/intrinsics_branch.ll llvm/trunk/test/CodeGen/CellSPU/intrinsics_float.ll llvm/trunk/test/CodeGen/CellSPU/intrinsics_logical.ll llvm/trunk/test/CodeGen/CellSPU/mul_ops.ll llvm/trunk/test/CodeGen/CellSPU/sp_farith.ll llvm/trunk/test/CodeGen/CellSPU/struct_1.ll llvm/trunk/test/CodeGen/CellSPU/struct_2.ll llvm/trunk/test/CodeGen/CellSPU/vec_const.ll llvm/trunk/test/CodeGen/CellSPU/vecinsert.ll Modified: llvm/trunk/test/CodeGen/CellSPU/call.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/call.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/call.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/call.ll Fri Jan 18 13:53:43 2008 @@ -1,5 +1,5 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s -; RUN: grep brsl %t1.s | count 1 && +; RUN: grep brsl %t1.s | count 1 ; RUN: grep brasl %t1.s | count 1 target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128" Modified: llvm/trunk/test/CodeGen/CellSPU/call_indirect.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/call_indirect.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/call_indirect.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/call_indirect.ll Fri Jan 18 13:53:43 2008 @@ -1,19 +1,19 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s ; RUN: llvm-as -o - %s | llc -march=cellspu -mattr=large_mem > %t2.s -; RUN: grep bisl %t1.s | count 7 && -; RUN: grep ila %t1.s | count 1 && -; RUN: grep rotqbyi %t1.s | count 4 && -; RUN: grep lqa %t1.s | count 5 && -; RUN: grep lqd %t1.s | count 6 && +; RUN: grep bisl %t1.s | count 7 +; RUN: grep ila %t1.s | count 1 +; RUN: grep rotqbyi %t1.s | count 4 +; RUN: grep lqa %t1.s | count 5 +; RUN: grep lqd %t1.s | count 6 ; RUN: grep dispatch_tab %t1.s | count 10 -; RUN: grep bisl %t2.s | count 7 && -; RUN: grep ilhu %t2.s | count 2 && -; RUN: grep iohl %t2.s | count 2 && -; RUN: grep rotqby %t2.s | count 6 && -; RUN: grep lqd %t2.s | count 12 && -; RUN: grep lqx %t2.s | count 8 && -; RUN: grep il %t2.s | count 9 && -; RUN: grep ai %t2.s | count 5 && +; RUN: grep bisl %t2.s | count 7 +; RUN: grep ilhu %t2.s | count 2 +; RUN: grep iohl %t2.s | count 2 +; RUN: grep rotqby %t2.s | count 6 +; RUN: grep lqd %t2.s | count 12 +; RUN: grep lqx %t2.s | count 8 +; RUN: grep il %t2.s | count 9 +; RUN: grep ai %t2.s | count 5 ; RUN: grep dispatch_tab %t2.s | count 7 ; ModuleID = 'call_indirect.bc' Modified: llvm/trunk/test/CodeGen/CellSPU/ctpop.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/ctpop.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/ctpop.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/ctpop.ll Fri Jan 18 13:53:43 2008 @@ -1,7 +1,7 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s -; RUN: grep cntb %t1.s | count 3 && -; RUN: grep andi %t1.s | count 3 && -; RUN: grep rotmi %t1.s | count 2 && +; RUN: grep cntb %t1.s | count 3 +; RUN: grep andi %t1.s | count 3 +; RUN: grep rotmi %t1.s | count 2 ; RUN: grep rothmi %t1.s | count 1 target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128" target triple = "spu" Modified: llvm/trunk/test/CodeGen/CellSPU/dp_farith.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/dp_farith.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/dp_farith.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/dp_farith.ll Fri Jan 18 13:53:43 2008 @@ -1,9 +1,9 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s -; RUN: grep dfa %t1.s | count 2 && -; RUN: grep dfs %t1.s | count 2 && -; RUN: grep dfm %t1.s | count 6 && -; RUN: grep dfma %t1.s | count 2 && -; RUN: grep dfms %t1.s | count 2 && +; RUN: grep dfa %t1.s | count 2 +; RUN: grep dfs %t1.s | count 2 +; RUN: grep dfm %t1.s | count 6 +; RUN: grep dfma %t1.s | count 2 +; RUN: grep dfms %t1.s | count 2 ; RUN: grep dfnms %t1.s | count 4 ; ; This file includes double precision floating point arithmetic instructions Modified: llvm/trunk/test/CodeGen/CellSPU/eqv.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/eqv.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/eqv.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/eqv.ll Fri Jan 18 13:53:43 2008 @@ -1,7 +1,7 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s -; RUN: grep eqv %t1.s | count 18 && -; RUN: grep xshw %t1.s | count 6 && -; RUN: grep xsbh %t1.s | count 3 && +; RUN: grep eqv %t1.s | count 18 +; RUN: grep xshw %t1.s | count 6 +; RUN: grep xsbh %t1.s | count 3 ; RUN: grep andi %t1.s | count 3 ; Test the 'eqv' instruction, whose boolean expression is: Modified: llvm/trunk/test/CodeGen/CellSPU/extract_elt.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/extract_elt.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/extract_elt.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/extract_elt.ll Fri Jan 18 13:53:43 2008 @@ -1,9 +1,9 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s ; RUN: llvm-as -o - %s | llc -march=cellspu -mattr=large_mem > %t2.s -; RUN: grep shufb %t1.s | count 27 && -; RUN: grep lqa %t1.s | count 27 && -; RUN: grep lqx %t2.s | count 27 && -; RUN: grep space %t1.s | count 8 && +; RUN: grep shufb %t1.s | count 27 +; RUN: grep lqa %t1.s | count 27 +; RUN: grep lqx %t2.s | count 27 +; RUN: grep space %t1.s | count 8 ; RUN: grep byte %t1.s | count 424 target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128" target triple = "spu" Modified: llvm/trunk/test/CodeGen/CellSPU/fdiv.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/fdiv.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/fdiv.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/fdiv.ll Fri Jan 18 13:53:43 2008 @@ -1,8 +1,8 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s -; RUN: grep frest %t1.s | count 2 && -; RUN: grep fi %t1.s | count 2 && -; RUN: grep fm %t1.s | count 4 && -; RUN: grep fma %t1.s | count 2 && +; RUN: grep frest %t1.s | count 2 +; RUN: grep fi %t1.s | count 2 +; RUN: grep fm %t1.s | count 4 +; RUN: grep fma %t1.s | count 2 ; RUN: grep fnms %t1.s | count 2 ; ; This file includes standard floating point arithmetic instructions Modified: llvm/trunk/test/CodeGen/CellSPU/fneg-fabs.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/fneg-fabs.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/fneg-fabs.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/fneg-fabs.ll Fri Jan 18 13:53:43 2008 @@ -1,8 +1,8 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s -; RUN: grep fsmbi %t1.s | count 3 && -; RUN: grep 32768 %t1.s | count 2 && -; RUN: grep xor %t1.s | count 4 && -; RUN: grep and %t1.s | count 5 && +; RUN: grep fsmbi %t1.s | count 3 +; RUN: grep 32768 %t1.s | count 2 +; RUN: grep xor %t1.s | count 4 +; RUN: grep and %t1.s | count 5 ; RUN: grep andbi %t1.s | count 3 target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128" target triple = "spu" Modified: llvm/trunk/test/CodeGen/CellSPU/immed32.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/immed32.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/immed32.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/immed32.ll Fri Jan 18 13:53:43 2008 @@ -1,16 +1,16 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s -; RUN: grep ilhu %t1.s | count 8 && -; RUN: grep iohl %t1.s | count 6 && -; RUN: grep il %t1.s | count 11 && -; RUN: grep 16429 %t1.s | count 1 && -; RUN: grep 63572 %t1.s | count 1 && -; RUN: grep 128 %t1.s | count 1 && -; RUN: grep 32639 %t1.s | count 1 && -; RUN: grep 65535 %t1.s | count 1 && -; RUN: grep 16457 %t1.s | count 1 && -; RUN: grep 4059 %t1.s | count 1 && -; RUN: grep 49077 %t1.s | count 1 && -; RUN: grep 1267 %t1.s | count 2 && +; RUN: grep ilhu %t1.s | count 8 +; RUN: grep iohl %t1.s | count 6 +; RUN: grep il %t1.s | count 11 +; RUN: grep 16429 %t1.s | count 1 +; RUN: grep 63572 %t1.s | count 1 +; RUN: grep 128 %t1.s | count 1 +; RUN: grep 32639 %t1.s | count 1 +; RUN: grep 65535 %t1.s | count 1 +; RUN: grep 16457 %t1.s | count 1 +; RUN: grep 4059 %t1.s | count 1 +; RUN: grep 49077 %t1.s | count 1 +; RUN: grep 1267 %t1.s | count 2 ; RUN: grep 16309 %t1.s | count 1 target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128" target triple = "spu" Modified: llvm/trunk/test/CodeGen/CellSPU/immed64.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/immed64.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/immed64.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/immed64.ll Fri Jan 18 13:53:43 2008 @@ -1,14 +1,14 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s -; RUN: grep lqa %t1.s | count 13 && -; RUN: grep shufb %t1.s | count 13 && -; RUN: grep 65520 %t1.s | count 1 && -; RUN: grep 43981 %t1.s | count 1 && -; RUN: grep 13702 %t1.s | count 1 && -; RUN: grep 81 %t1.s | count 2 && -; RUN: grep 28225 %t1.s | count 1 && -; RUN: grep 30720 %t1.s | count 1 && -; RUN: grep 192 %t1.s | count 32 && -; RUN: grep 128 %t1.s | count 30 && +; RUN: grep lqa %t1.s | count 13 +; RUN: grep shufb %t1.s | count 13 +; RUN: grep 65520 %t1.s | count 1 +; RUN: grep 43981 %t1.s | count 1 +; RUN: grep 13702 %t1.s | count 1 +; RUN: grep 81 %t1.s | count 2 +; RUN: grep 28225 %t1.s | count 1 +; RUN: grep 30720 %t1.s | count 1 +; RUN: grep 192 %t1.s | count 32 +; RUN: grep 128 %t1.s | count 30 ; RUN: grep 224 %t1.s | count 2 target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128" Modified: llvm/trunk/test/CodeGen/CellSPU/int2fp.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/int2fp.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/int2fp.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/int2fp.ll Fri Jan 18 13:53:43 2008 @@ -1,10 +1,10 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s -; RUN: grep csflt %t1.s | count 5 && -; RUN: grep cuflt %t1.s | count 1 && -; RUN: grep xshw %t1.s | count 2 && -; RUN: grep xsbh %t1.s | count 1 && -; RUN: grep and %t1.s | count 2 && -; RUN: grep andi %t1.s | count 1 && +; RUN: grep csflt %t1.s | count 5 +; RUN: grep cuflt %t1.s | count 1 +; RUN: grep xshw %t1.s | count 2 +; RUN: grep xsbh %t1.s | count 1 +; RUN: grep and %t1.s | count 2 +; RUN: grep andi %t1.s | count 1 ; RUN: grep ila %t1.s | count 1 target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128" Modified: llvm/trunk/test/CodeGen/CellSPU/intrinsics_branch.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/intrinsics_branch.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/intrinsics_branch.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/intrinsics_branch.ll Fri Jan 18 13:53:43 2008 @@ -1,11 +1,11 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s -; RUN: grep ceq %t1.s | count 30 && -; RUN: grep ceqb %t1.s | count 10 && -; RUN: grep ceqhi %t1.s | count 5 && -; RUN: grep ceqi %t1.s | count 5 && -; RUN: grep cgt %t1.s | count 30 && -; RUN: grep cgtb %t1.s | count 10 && -; RUN: grep cgthi %t1.s | count 5 && +; RUN: grep ceq %t1.s | count 30 +; RUN: grep ceqb %t1.s | count 10 +; RUN: grep ceqhi %t1.s | count 5 +; RUN: grep ceqi %t1.s | count 5 +; RUN: grep cgt %t1.s | count 30 +; RUN: grep cgtb %t1.s | count 10 +; RUN: grep cgthi %t1.s | count 5 ; RUN: grep cgti %t1.s | count 5 target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128" target triple = "spu" Modified: llvm/trunk/test/CodeGen/CellSPU/intrinsics_float.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/intrinsics_float.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/intrinsics_float.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/intrinsics_float.ll Fri Jan 18 13:53:43 2008 @@ -1,13 +1,13 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s -; RUN: grep fa %t1.s | count 5 && -; RUN: grep fs %t1.s | count 5 && -; RUN: grep fm %t1.s | count 15 && -; RUN: grep fceq %t1.s | count 5 && -; RUN: grep fcmeq %t1.s | count 5 && -; RUN: grep fcgt %t1.s | count 5 && -; RUN: grep fcmgt %t1.s | count 5 && -; RUN: grep fma %t1.s | count 5 && -; RUN: grep fnms %t1.s | count 5 && +; RUN: grep fa %t1.s | count 5 +; RUN: grep fs %t1.s | count 5 +; RUN: grep fm %t1.s | count 15 +; RUN: grep fceq %t1.s | count 5 +; RUN: grep fcmeq %t1.s | count 5 +; RUN: grep fcgt %t1.s | count 5 +; RUN: grep fcmgt %t1.s | count 5 +; RUN: grep fma %t1.s | count 5 +; RUN: grep fnms %t1.s | count 5 ; RUN: grep fms %t1.s | count 5 target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128" target triple = "spu" @@ -91,4 +91,4 @@ call <4 x float> @llvm.spu.si.fms(<4 x float> %A, <4 x float> %B, <4 x float> %C) %Y = bitcast <4 x float> %1 to <4 x float> ret <4 x float> %Y -} \ No newline at end of file +} Modified: llvm/trunk/test/CodeGen/CellSPU/intrinsics_logical.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/intrinsics_logical.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/intrinsics_logical.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/intrinsics_logical.ll Fri Jan 18 13:53:43 2008 @@ -1,5 +1,5 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s -; RUN: grep and %t1.s | count 20 && +; RUN: grep and %t1.s | count 20 ; RUN: grep andc %t1.s | count 5 target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128" target triple = "spu" Modified: llvm/trunk/test/CodeGen/CellSPU/mul_ops.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/mul_ops.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/mul_ops.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/mul_ops.ll Fri Jan 18 13:53:43 2008 @@ -1,17 +1,17 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s -; RUN: grep mpy %t1.s | count 44 && -; RUN: grep mpyu %t1.s | count 4 && -; RUN: grep mpyh %t1.s | count 10 && -; RUN: grep mpyhh %t1.s | count 2 && -; RUN: grep rotma %t1.s | count 12 && -; RUN: grep rotmahi %t1.s | count 4 && -; RUN: grep and %t1.s | count 2 && -; RUN: grep selb %t1.s | count 6 && -; RUN: grep fsmbi %t1.s | count 4 && -; RUN: grep shli %t1.s | count 4 && -; RUN: grep shlhi %t1.s | count 4 && -; RUN: grep ila %t1.s | count 2 && -; RUN: grep xsbh %t1.s | count 8 && +; RUN: grep mpy %t1.s | count 44 +; RUN: grep mpyu %t1.s | count 4 +; RUN: grep mpyh %t1.s | count 10 +; RUN: grep mpyhh %t1.s | count 2 +; RUN: grep rotma %t1.s | count 12 +; RUN: grep rotmahi %t1.s | count 4 +; RUN: grep and %t1.s | count 2 +; RUN: grep selb %t1.s | count 6 +; RUN: grep fsmbi %t1.s | count 4 +; RUN: grep shli %t1.s | count 4 +; RUN: grep shlhi %t1.s | count 4 +; RUN: grep ila %t1.s | count 2 +; RUN: grep xsbh %t1.s | count 8 ; RUN: grep xshw %t1.s | count 4 target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128" target triple = "spu" Modified: llvm/trunk/test/CodeGen/CellSPU/sp_farith.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/sp_farith.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/sp_farith.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/sp_farith.ll Fri Jan 18 13:53:43 2008 @@ -1,9 +1,9 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s -; RUN: grep fa %t1.s | count 2 && -; RUN: grep fs %t1.s | count 2 && -; RUN: grep fm %t1.s | count 6 && -; RUN: grep fma %t1.s | count 2 && -; RUN: grep fms %t1.s | count 2 && +; RUN: grep fa %t1.s | count 2 +; RUN: grep fs %t1.s | count 2 +; RUN: grep fm %t1.s | count 6 +; RUN: grep fma %t1.s | count 2 +; RUN: grep fms %t1.s | count 2 ; RUN: grep fnms %t1.s | count 3 ; ; This file includes standard floating point arithmetic instructions Modified: llvm/trunk/test/CodeGen/CellSPU/struct_1.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/struct_1.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/struct_1.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/struct_1.ll Fri Jan 18 13:53:43 2008 @@ -1,26 +1,26 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s ; RUN: llvm-as -o - %s | llc -march=cellspu -mattr=large_mem > %t2.s -; RUN: grep lqa %t1.s | count 10 && -; RUN: grep lqd %t1.s | count 4 && -; RUN: grep rotqbyi %t1.s | count 5 && -; RUN: grep xshw %t1.s | count 1 && -; RUN: grep andi %t1.s | count 4 && -; RUN: grep cbd %t1.s | count 3 && -; RUN: grep chd %t1.s | count 1 && -; RUN: grep cwd %t1.s | count 3 && -; RUN: grep shufb %t1.s | count 7 && +; RUN: grep lqa %t1.s | count 10 +; RUN: grep lqd %t1.s | count 4 +; RUN: grep rotqbyi %t1.s | count 5 +; RUN: grep xshw %t1.s | count 1 +; RUN: grep andi %t1.s | count 4 +; RUN: grep cbd %t1.s | count 3 +; RUN: grep chd %t1.s | count 1 +; RUN: grep cwd %t1.s | count 3 +; RUN: grep shufb %t1.s | count 7 ; RUN: grep stqa %t1.s | count 5 -; RUN: grep iohl %t2.s | count 14 && -; RUN: grep ilhu %t2.s | count 14 && -; RUN: grep lqx %t2.s | count 14 && -; RUN: grep rotqbyi %t2.s | count 5 && -; RUN: grep xshw %t2.s | count 1 && -; RUN: grep andi %t2.s | count 4 && -; RUN: grep cbx %t2.s | count 3 && -; RUN: grep chx %t2.s | count 1 && -; RUN: grep cwx %t2.s | count 1 && -; RUN: grep cwd %t2.s | count 2 && -; RUN: grep shufb %t2.s | count 7 && +; RUN: grep iohl %t2.s | count 14 +; RUN: grep ilhu %t2.s | count 14 +; RUN: grep lqx %t2.s | count 14 +; RUN: grep rotqbyi %t2.s | count 5 +; RUN: grep xshw %t2.s | count 1 +; RUN: grep andi %t2.s | count 4 +; RUN: grep cbx %t2.s | count 3 +; RUN: grep chx %t2.s | count 1 +; RUN: grep cwx %t2.s | count 1 +; RUN: grep cwd %t2.s | count 2 +; RUN: grep shufb %t2.s | count 7 ; RUN: grep stqx %t2.s | count 7 ; ModuleID = 'struct_1.bc' Modified: llvm/trunk/test/CodeGen/CellSPU/struct_2.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/struct_2.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/struct_2.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/struct_2.ll Fri Jan 18 13:53:43 2008 @@ -1,13 +1,13 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s -; RUN: grep lqx %t1.s | count 14 && -; RUN: grep rotqby %t1.s | count 7 && -; RUN: grep xshw %t1.s | count 1 && -; RUN: grep andi %t1.s | count 4 && -; RUN: grep cbx %t1.s | count 1 && -; RUN: grep cbd %t1.s | count 2 && -; RUN: grep chd %t1.s | count 1 && -; RUN: grep cwd %t1.s | count 3 && -; RUN: grep shufb %t1.s | count 7 && +; RUN: grep lqx %t1.s | count 14 +; RUN: grep rotqby %t1.s | count 7 +; RUN: grep xshw %t1.s | count 1 +; RUN: grep andi %t1.s | count 4 +; RUN: grep cbx %t1.s | count 1 +; RUN: grep cbd %t1.s | count 2 +; RUN: grep chd %t1.s | count 1 +; RUN: grep cwd %t1.s | count 3 +; RUN: grep shufb %t1.s | count 7 ; RUN: grep stqx %t1.s | count 7 ; ModuleID = 'struct_1.bc' Modified: llvm/trunk/test/CodeGen/CellSPU/vec_const.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/vec_const.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/vec_const.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/vec_const.ll Fri Jan 18 13:53:43 2008 @@ -1,23 +1,23 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s ; RUN: llvm-as -o - %s | llc -march=cellspu -mattr=large_mem > %t2.s -; RUN: grep il %t1.s | count 16 && -; RUN: grep ilhu %t1.s | count 8 && -; RUN: grep ilh %t1.s | count 13 && -; RUN: grep iohl %t1.s | count 7 && -; RUN: grep lqa %t1.s | count 6 && -; RUN: grep 24672 %t1.s | count 2 && -; RUN: grep 16429 %t1.s | count 1 && -; RUN: grep 63572 %t1.s | count 1 && -; RUN: grep 4660 %t1.s | count 1 && -; RUN: grep 22136 %t1.s | count 1 && -; RUN: grep 43981 %t1.s | count 1 && -; RUN: grep 61202 %t1.s | count 1 && -; RUN: grep 16393 %t1.s | count 1 && -; RUN: grep 8699 %t1.s | count 1 && -; RUN: grep 21572 %t1.s | count 1 && -; RUN: grep 11544 %t1.s | count 1 && -; RUN: grep 1311768467750121234 %t1.s | count 1 && -; RUN: grep lqx %t2.s | count 6 && +; RUN: grep il %t1.s | count 16 +; RUN: grep ilhu %t1.s | count 8 +; RUN: grep ilh %t1.s | count 13 +; RUN: grep iohl %t1.s | count 7 +; RUN: grep lqa %t1.s | count 6 +; RUN: grep 24672 %t1.s | count 2 +; RUN: grep 16429 %t1.s | count 1 +; RUN: grep 63572 %t1.s | count 1 +; RUN: grep 4660 %t1.s | count 1 +; RUN: grep 22136 %t1.s | count 1 +; RUN: grep 43981 %t1.s | count 1 +; RUN: grep 61202 %t1.s | count 1 +; RUN: grep 16393 %t1.s | count 1 +; RUN: grep 8699 %t1.s | count 1 +; RUN: grep 21572 %t1.s | count 1 +; RUN: grep 11544 %t1.s | count 1 +; RUN: grep 1311768467750121234 %t1.s | count 1 +; RUN: grep lqx %t2.s | count 6 ; RUN: grep ila %t2.s | count 6 target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128" Modified: llvm/trunk/test/CodeGen/CellSPU/vecinsert.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CellSPU/vecinsert.ll?rev=46173&r1=46172&r2=46173&view=diff ============================================================================== --- llvm/trunk/test/CodeGen/CellSPU/vecinsert.ll (original) +++ llvm/trunk/test/CodeGen/CellSPU/vecinsert.ll Fri Jan 18 13:53:43 2008 @@ -1,16 +1,16 @@ ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s -; RUN: grep cbd %t1.s | count 3 && -; RUN: grep chd %t1.s | count 3 && -; RUN: grep cwd %t1.s | count 6 && -; RUN: grep il %t1.s | count 4 && -; RUN: grep ilh %t1.s | count 3 && -; RUN: grep iohl %t1.s | count 1 && -; RUN: grep ilhu %t1.s | count 1 && -; RUN: grep shufb %t1.s | count 12 && -; RUN: grep 17219 %t1.s | count 1 && -; RUN: grep 22598 %t1.s | count 1 && -; RUN: grep -- -39 %t1.s | count 1 && -; RUN: grep 24 %t1.s | count 1 && +; RUN: grep cbd %t1.s | count 3 +; RUN: grep chd %t1.s | count 3 +; RUN: grep cwd %t1.s | count 6 +; RUN: grep il %t1.s | count 4 +; RUN: grep ilh %t1.s | count 3 +; RUN: grep iohl %t1.s | count 1 +; RUN: grep ilhu %t1.s | count 1 +; RUN: grep shufb %t1.s | count 12 +; RUN: grep 17219 %t1.s | count 1 +; RUN: grep 22598 %t1.s | count 1 +; RUN: grep -- -39 %t1.s | count 1 +; RUN: grep 24 %t1.s | count 1 ; RUN: grep 1159 %t1.s | count 1 ; ModuleID = 'vecinsert.bc' target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128" From dalej at apple.com Fri Jan 18 13:55:37 2008 From: dalej at apple.com (Dale Johannesen) Date: Fri, 18 Jan 2008 19:55:37 -0000 Subject: [llvm-commits] [llvm] r46174 - in /llvm/trunk: lib/Target/PowerPC/PPCISelLowering.cpp test/CodeGen/PowerPC/frounds.ll Message-ID: <200801181955.m0IJtbkB015610@zion.cs.uiuc.edu> Author: johannes Date: Fri Jan 18 13:55:37 2008 New Revision: 46174 URL: http://llvm.org/viewvc/llvm-project?rev=46174&view=rev Log: Implement flt_rounds for PowerPC. Added: llvm/trunk/test/CodeGen/PowerPC/frounds.ll Modified: llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp Modified: llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp?rev=46174&r1=46173&r2=46174&view=diff ============================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp (original) +++ llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp Fri Jan 18 13:55:37 2008 @@ -109,6 +109,8 @@ setOperationAction(ISD::FCOS , MVT::f32, Expand); setOperationAction(ISD::FREM , MVT::f32, Expand); setOperationAction(ISD::FPOW , MVT::f32, Expand); + + setOperationAction(ISD::FLT_ROUNDS, MVT::i32, Custom); // If we're enabling GP optimizations, use hardware square root if (!TM.getSubtarget().hasFSQRT()) { @@ -2207,6 +2209,67 @@ return FP; } +static SDOperand LowerFLT_ROUNDS(SDOperand Op, SelectionDAG &DAG) { + /* + The rounding mode is in bits 30:31 of FPSR, and has the following + settings: + 00 Round to nearest + 01 Round to 0 + 10 Round to +inf + 11 Round to -inf + + FLT_ROUNDS, on the other hand, expects the following: + -1 Undefined + 0 Round to 0 + 1 Round to nearest + 2 Round to +inf + 3 Round to -inf + + To perform the conversion, we do: + ((FPSCR & 0x3) ^ ((~FPSCR & 0x3) >> 1)) + */ + + MachineFunction &MF = DAG.getMachineFunction(); + MVT::ValueType VT = Op.getValueType(); + MVT::ValueType PtrVT = DAG.getTargetLoweringInfo().getPointerTy(); + std::vector NodeTys; + SDOperand MFFSreg, InFlag; + + // Save FP Control Word to register + NodeTys.push_back(MVT::f64); // return register + NodeTys.push_back(MVT::Flag); // unused in this context + SDOperand Chain = DAG.getNode(PPCISD::MFFS, NodeTys, &InFlag, 0); + + // Save FP register to stack slot + int SSFI = MF.getFrameInfo()->CreateStackObject(8, 8); + SDOperand StackSlot = DAG.getFrameIndex(SSFI, PtrVT); + SDOperand Store = DAG.getStore(DAG.getEntryNode(), Chain, + StackSlot, NULL, 0); + + // Load FP Control Word from low 32 bits of stack slot. + SDOperand Four = DAG.getConstant(4, PtrVT); + SDOperand Addr = DAG.getNode(ISD::ADD, PtrVT, StackSlot, Four); + SDOperand CWD = DAG.getLoad(MVT::i32, Store, Addr, NULL, 0); + + // Transform as necessary + SDOperand CWD1 = + DAG.getNode(ISD::AND, MVT::i32, + CWD, DAG.getConstant(3, MVT::i32)); + SDOperand CWD2 = + DAG.getNode(ISD::SRL, MVT::i32, + DAG.getNode(ISD::AND, MVT::i32, + DAG.getNode(ISD::XOR, MVT::i32, + CWD, DAG.getConstant(3, MVT::i32)), + DAG.getConstant(3, MVT::i32)), + DAG.getConstant(1, MVT::i8)); + + SDOperand RetVal = + DAG.getNode(ISD::XOR, MVT::i32, CWD1, CWD2); + + return DAG.getNode((MVT::getSizeInBits(VT) < 16 ? + ISD::TRUNCATE : ISD::ZERO_EXTEND), VT, RetVal); +} + static SDOperand LowerSHL_PARTS(SDOperand Op, SelectionDAG &DAG) { assert(Op.getNumOperands() == 3 && Op.getValueType() == MVT::i32 && Op.getOperand(1).getValueType() == MVT::i32 && "Unexpected SHL!"); @@ -3027,6 +3090,7 @@ case ISD::FP_TO_SINT: return LowerFP_TO_SINT(Op, DAG); case ISD::SINT_TO_FP: return LowerSINT_TO_FP(Op, DAG); case ISD::FP_ROUND_INREG: return LowerFP_ROUND_INREG(Op, DAG); + case ISD::FLT_ROUNDS: return LowerFLT_ROUNDS(Op, DAG); // Lower 64-bit shifts. case ISD::SHL_PARTS: return LowerSHL_PARTS(Op, DAG); Added: llvm/trunk/test/CodeGen/PowerPC/frounds.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/PowerPC/frounds.ll?rev=46174&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/PowerPC/frounds.ll (added) +++ llvm/trunk/test/CodeGen/PowerPC/frounds.ll Fri Jan 18 13:55:37 2008 @@ -0,0 +1,19 @@ +; RUN: llvm-as | llc -march=ppc32 + +define i32 @foo() { +entry: + %retval = alloca i32 ; [#uses=2] + %tmp = alloca i32 ; [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] + %tmp1 = call i32 @llvm.flt.rounds( ) ; [#uses=1] + store i32 %tmp1, i32* %tmp, align 4 + %tmp2 = load i32* %tmp, align 4 ; [#uses=1] + store i32 %tmp2, i32* %retval, align 4 + br label %return + +return: ; preds = %entry + %retval3 = load i32* %retval ; [#uses=1] + ret i32 %retval3 +} + +declare i32 @llvm.flt.rounds() nounwind From dpatel at apple.com Fri Jan 18 14:02:19 2008 From: dpatel at apple.com (Devang Patel) Date: Fri, 18 Jan 2008 20:02:19 -0000 Subject: [llvm-commits] [llvm] r46175 - /llvm/branches/Apple/ Message-ID: <200801182002.m0IK2Jrf016094@zion.cs.uiuc.edu> Author: dpatel Date: Fri Jan 18 14:02:18 2008 New Revision: 46175 URL: http://llvm.org/viewvc/llvm-project?rev=46175&view=rev Log: Place for Apple specific branches. Added: llvm/branches/Apple/ From dpatel at apple.com Fri Jan 18 14:03:19 2008 From: dpatel at apple.com (Devang Patel) Date: Fri, 18 Jan 2008 20:03:19 -0000 Subject: [llvm-commits] [llvm] r46176 - /llvm/branches/Apple/llvmCore-2010/ Message-ID: <200801182003.m0IK3KJO016185@zion.cs.uiuc.edu> Author: dpatel Date: Fri Jan 18 14:03:19 2008 New Revision: 46176 URL: http://llvm.org/viewvc/llvm-project?rev=46176&view=rev Log: Create llvmCore-2010 branch based on llvmCore-2009 tag. Added: llvm/branches/Apple/llvmCore-2010/ - copied from r46175, llvm/tags/Apple/llvmCore-2009/ From dpatel at apple.com Fri Jan 18 14:09:10 2008 From: dpatel at apple.com (Devang Patel) Date: Fri, 18 Jan 2008 20:09:10 -0000 Subject: [llvm-commits] [llvm] r46177 - in /llvm/branches/Apple/llvmCore-2010: include/llvm/CodeGen/ include/llvm/Target/ lib/CodeGen/SelectionDAG/ lib/Target/ lib/Target/ARM/ lib/Target/Alpha/ lib/Target/CellSPU/ lib/Target/IA64/ lib/Target/Mips/ lib/Target/PowerPC/ lib/Target/Sparc/ lib/Target/X86/ test/CodeGen/X86/ Message-ID: <200801182009.m0IK9DxS016589@zion.cs.uiuc.edu> Author: dpatel Date: Fri Jan 18 14:09:08 2008 New Revision: 46177 URL: http://llvm.org/viewvc/llvm-project?rev=46177&view=rev Log: Revert r46140 and r46125 Modified: llvm/branches/Apple/llvmCore-2010/include/llvm/CodeGen/SelectionDAG.h llvm/branches/Apple/llvmCore-2010/include/llvm/CodeGen/SelectionDAGNodes.h llvm/branches/Apple/llvmCore-2010/include/llvm/Target/TargetLowering.h llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/DAGCombiner.cpp llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypes.h llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypesExpand.cpp llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypesPromote.cpp llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypesSplit.cpp llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/SelectionDAG.cpp llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/TargetLowering.cpp llvm/branches/Apple/llvmCore-2010/lib/Target/ARM/ARMISelLowering.cpp llvm/branches/Apple/llvmCore-2010/lib/Target/ARM/ARMInstrInfo.td llvm/branches/Apple/llvmCore-2010/lib/Target/ARM/ARMInstrThumb.td llvm/branches/Apple/llvmCore-2010/lib/Target/Alpha/AlphaISelLowering.cpp llvm/branches/Apple/llvmCore-2010/lib/Target/CellSPU/SPUISelLowering.cpp llvm/branches/Apple/llvmCore-2010/lib/Target/IA64/IA64ISelLowering.cpp llvm/branches/Apple/llvmCore-2010/lib/Target/Mips/MipsISelLowering.cpp llvm/branches/Apple/llvmCore-2010/lib/Target/Mips/MipsInstrInfo.td llvm/branches/Apple/llvmCore-2010/lib/Target/PowerPC/PPCISelLowering.cpp llvm/branches/Apple/llvmCore-2010/lib/Target/Sparc/SparcInstrInfo.td llvm/branches/Apple/llvmCore-2010/lib/Target/TargetSelectionDAG.td llvm/branches/Apple/llvmCore-2010/lib/Target/X86/X86ISelLowering.cpp llvm/branches/Apple/llvmCore-2010/lib/Target/X86/X86InstrInfo.td llvm/branches/Apple/llvmCore-2010/test/CodeGen/X86/storetrunc-fp.ll Modified: llvm/branches/Apple/llvmCore-2010/include/llvm/CodeGen/SelectionDAG.h URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/include/llvm/CodeGen/SelectionDAG.h?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/include/llvm/CodeGen/SelectionDAG.h (original) +++ llvm/branches/Apple/llvmCore-2010/include/llvm/CodeGen/SelectionDAG.h Fri Jan 18 14:09:08 2008 @@ -177,7 +177,6 @@ // SDOperand getString(const std::string &Val); SDOperand getConstant(uint64_t Val, MVT::ValueType VT, bool isTarget = false); - SDOperand getIntPtrConstant(uint64_t Val, bool isTarget = false); SDOperand getTargetConstant(uint64_t Val, MVT::ValueType VT) { return getConstant(Val, VT, true); } Modified: llvm/branches/Apple/llvmCore-2010/include/llvm/CodeGen/SelectionDAGNodes.h URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/include/llvm/CodeGen/SelectionDAGNodes.h?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/include/llvm/CodeGen/SelectionDAGNodes.h (original) +++ llvm/branches/Apple/llvmCore-2010/include/llvm/CodeGen/SelectionDAGNodes.h Fri Jan 18 14:09:08 2008 @@ -385,24 +385,15 @@ // operand, a ValueType node. SIGN_EXTEND_INREG, - /// FP_TO_[US]INT - Convert a floating point value to a signed or unsigned - /// integer. + // FP_TO_[US]INT - Convert a floating point value to a signed or unsigned + // integer. FP_TO_SINT, FP_TO_UINT, - /// X = FP_ROUND(Y, TRUNC) - Rounding 'Y' from a larger floating point type - /// down to the precision of the destination VT. TRUNC is a flag, which is - /// always an integer that is zero or one. If TRUNC is 0, this is a - /// normal rounding, if it is 1, this FP_ROUND is known to not change the - /// value of Y. - /// - /// The TRUNC = 1 case is used in cases where we know that the value will - /// not be modified by the node, because Y is not using any of the extra - /// precision of source type. This allows certain transformations like - /// FP_EXTEND(FP_ROUND(X,1)) -> X which are not safe for - /// FP_EXTEND(FP_ROUND(X,0)) because the extra bits aren't removed. + // FP_ROUND - Perform a rounding operation from the current + // precision down to the specified precision (currently always 64->32). FP_ROUND, - + // FLT_ROUNDS - Returns current rounding mode: // -1 Undefined // 0 Round to 0 @@ -411,14 +402,14 @@ // 3 Round to -inf FLT_ROUNDS, - /// X = FP_ROUND_INREG(Y, VT) - This operator takes an FP register, and - /// rounds it to a floating point value. It then promotes it and returns it - /// in a register of the same size. This operation effectively just - /// discards excess precision. The type to round down to is specified by - /// the VT operand, a VTSDNode. + // FP_ROUND_INREG - This operator takes a floating point register, and + // rounds it to a floating point value. It then promotes it and returns it + // in a register of the same size. This operation effectively just discards + // excess precision. The type to round down to is specified by the 1th + // operation, a VTSDNode (currently always 64->32->64). FP_ROUND_INREG, - /// X = FP_EXTEND(Y) - Extend a smaller FP type into a larger FP type. + // FP_EXTEND - Extend a smaller FP type into a larger FP type. FP_EXTEND, // BIT_CONVERT - Theis operator converts between integer and FP values, as Modified: llvm/branches/Apple/llvmCore-2010/include/llvm/Target/TargetLowering.h URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/include/llvm/Target/TargetLowering.h?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/include/llvm/Target/TargetLowering.h (original) +++ llvm/branches/Apple/llvmCore-2010/include/llvm/Target/TargetLowering.h Fri Jan 18 14:09:08 2008 @@ -301,22 +301,19 @@ getLoadXAction(LType, VT) == Custom; } - /// getTruncStoreAction - Return how this store with truncation should be - /// treated: either it is legal, needs to be promoted to a larger size, needs - /// to be expanded to some other code sequence, or the target has a custom - /// expander for it. - LegalizeAction getTruncStoreAction(MVT::ValueType ValVT, - MVT::ValueType MemVT) const { - assert(ValVT < MVT::LAST_VALUETYPE && MemVT < 32 && - "Table isn't big enough!"); - return (LegalizeAction)((TruncStoreActions[ValVT] >> (2*MemVT)) & 3); + /// getStoreXAction - Return how this store with truncation should be treated: + /// either it is legal, needs to be promoted to a larger size, needs to be + /// expanded to some other code sequence, or the target has a custom expander + /// for it. + LegalizeAction getStoreXAction(MVT::ValueType VT) const { + if (MVT::isExtendedVT(VT)) return getTypeAction(VT); + return (LegalizeAction)((StoreXActions >> (2*VT)) & 3); } - /// isTruncStoreLegal - Return true if the specified store with truncation is + /// isStoreXLegal - Return true if the specified store with truncation is /// legal on this target. - bool isTruncStoreLegal(MVT::ValueType ValVT, MVT::ValueType MemVT) const { - return getTruncStoreAction(ValVT, MemVT) == Legal || - getTruncStoreAction(ValVT, MemVT) == Custom; + bool isStoreXLegal(MVT::ValueType VT) const { + return getStoreXAction(VT) == Legal || getStoreXAction(VT) == Custom; } /// getIndexedLoadAction - Return how the indexed load should be treated: @@ -763,14 +760,12 @@ LoadXActions[ExtType] |= (uint64_t)Action << VT*2; } - /// setTruncStoreAction - Indicate that the specified truncating store does + /// setStoreXAction - Indicate that the specified store with truncation does /// not work with the with specified type and indicate what to do about it. - void setTruncStoreAction(MVT::ValueType ValVT, MVT::ValueType MemVT, - LegalizeAction Action) { - assert(ValVT < MVT::LAST_VALUETYPE && MemVT < 32 && - "Table isn't big enough!"); - TruncStoreActions[ValVT] &= ~(uint64_t(3UL) << MemVT*2); - TruncStoreActions[ValVT] |= (uint64_t)Action << MemVT*2; + void setStoreXAction(MVT::ValueType VT, LegalizeAction Action) { + assert(VT < 32 && "Table isn't big enough!"); + StoreXActions &= ~(uint64_t(3UL) << VT*2); + StoreXActions |= (uint64_t)Action << VT*2; } /// setIndexedLoadAction - Indicate that the specified indexed load does or @@ -1188,9 +1183,10 @@ /// with the load. uint64_t LoadXActions[ISD::LAST_LOADX_TYPE]; - /// TruncStoreActions - For each truncating store, keep a LegalizeAction that - /// indicates how instruction selection should deal with the store. - uint64_t TruncStoreActions[MVT::LAST_VALUETYPE]; + /// StoreXActions - For each store with truncation of each value type, keep a + /// LegalizeAction that indicates how instruction selection should deal with + /// the store. + uint64_t StoreXActions; /// IndexedModeActions - For each indexed mode and each value type, keep a /// pair of LegalizeAction that indicates how instruction selection should Modified: llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/DAGCombiner.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original) +++ llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Fri Jan 18 14:09:08 2008 @@ -135,7 +135,6 @@ SDOperand To[] = { Res0, Res1 }; return CombineTo(N, To, 2, AddTo); } - private: /// SimplifyDemandedBits - Check the specified integer node value to see if @@ -461,13 +460,10 @@ GetNegatedExpression(Op.getOperand(1), DAG, Depth+1)); case ISD::FP_EXTEND: + case ISD::FP_ROUND: case ISD::FSIN: return DAG.getNode(Op.getOpcode(), Op.getValueType(), GetNegatedExpression(Op.getOperand(0), DAG, Depth+1)); - case ISD::FP_ROUND: - return DAG.getNode(ISD::FP_ROUND, Op.getValueType(), - GetNegatedExpression(Op.getOperand(0), DAG, Depth+1), - Op.getOperand(1)); } } @@ -1690,7 +1686,8 @@ if (N1C && N0.getOpcode() == ISD::LOAD) { LoadSDNode *LN0 = cast(N0); if (LN0->getExtensionType() != ISD::SEXTLOAD && - LN0->isUnindexed() && N0.hasOneUse()) { + LN0->getAddressingMode() == ISD::UNINDEXED && + N0.hasOneUse()) { MVT::ValueType EVT, LoadedVT; if (N1C->getValue() == 255) EVT = MVT::i8; @@ -3636,13 +3633,12 @@ SDOperand DAGCombiner::visitFP_ROUND(SDNode *N) { SDOperand N0 = N->getOperand(0); - SDOperand N1 = N->getOperand(1); ConstantFPSDNode *N0CFP = dyn_cast(N0); MVT::ValueType VT = N->getValueType(0); // fold (fp_round c1fp) -> c1fp if (N0CFP && N0.getValueType() != MVT::ppcf128) - return DAG.getNode(ISD::FP_ROUND, VT, N0, N1); + return DAG.getNode(ISD::FP_ROUND, VT, N0); // fold (fp_round (fp_extend x)) -> x if (N0.getOpcode() == ISD::FP_EXTEND && VT == N0.getOperand(0).getValueType()) @@ -3650,7 +3646,7 @@ // fold (fp_round (copysign X, Y)) -> (copysign (fp_round X), Y) if (N0.getOpcode() == ISD::FCOPYSIGN && N0.Val->hasOneUse()) { - SDOperand Tmp = DAG.getNode(ISD::FP_ROUND, VT, N0.getOperand(0), N1); + SDOperand Tmp = DAG.getNode(ISD::FP_ROUND, VT, N0.getOperand(0)); AddToWorkList(Tmp.Val); return DAG.getNode(ISD::FCOPYSIGN, VT, Tmp, N0.getOperand(1)); } @@ -3680,22 +3676,12 @@ // If this is fp_round(fpextend), don't fold it, allow ourselves to be folded. if (N->hasOneUse() && (*N->use_begin())->getOpcode() == ISD::FP_ROUND) return SDOperand(); - + // fold (fp_extend c1fp) -> c1fp if (N0CFP && VT != MVT::ppcf128) return DAG.getNode(ISD::FP_EXTEND, VT, N0); - - // Turn fp_extend(fp_round(X, 1)) -> x since the fp_round doesn't affect the - // value of X. - if (N0.getOpcode() == ISD::FP_ROUND && N0.Val->getConstantOperandVal(1) == 1){ - SDOperand In = N0.getOperand(0); - if (In.getValueType() == VT) return In; - if (VT < In.getValueType()) - return DAG.getNode(ISD::FP_ROUND, VT, In, N0.getOperand(1)); - return DAG.getNode(ISD::FP_EXTEND, VT, In); - } - - // fold (fpext (load x)) -> (fpext (fptrunc (extload x))) + + // fold (fpext (load x)) -> (fpext (fpround (extload x))) if (ISD::isNON_EXTLoad(N0.Val) && N0.hasOneUse() && (!AfterLegalize||TLI.isLoadXLegal(ISD::EXTLOAD, N0.getValueType()))) { LoadSDNode *LN0 = cast(N0); @@ -3706,8 +3692,7 @@ LN0->isVolatile(), LN0->getAlignment()); CombineTo(N, ExtLoad); - CombineTo(N0.Val, DAG.getNode(ISD::FP_ROUND, N0.getValueType(), ExtLoad, - DAG.getIntPtrConstant(1)), + CombineTo(N0.Val, DAG.getNode(ISD::FP_ROUND, N0.getValueType(), ExtLoad), ExtLoad.getValue(1)); return SDOperand(N, 0); // Return N so it doesn't get rechecked! } @@ -3809,7 +3794,7 @@ SDOperand Ptr; MVT::ValueType VT; if (LoadSDNode *LD = dyn_cast(N)) { - if (LD->isIndexed()) + if (LD->getAddressingMode() != ISD::UNINDEXED) return false; VT = LD->getLoadedVT(); if (!TLI.isIndexedLoadLegal(ISD::PRE_INC, VT) && @@ -3817,7 +3802,7 @@ return false; Ptr = LD->getBasePtr(); } else if (StoreSDNode *ST = dyn_cast(N)) { - if (ST->isIndexed()) + if (ST->getAddressingMode() != ISD::UNINDEXED) return false; VT = ST->getStoredVT(); if (!TLI.isIndexedStoreLegal(ISD::PRE_INC, VT) && @@ -3936,7 +3921,7 @@ SDOperand Ptr; MVT::ValueType VT; if (LoadSDNode *LD = dyn_cast(N)) { - if (LD->isIndexed()) + if (LD->getAddressingMode() != ISD::UNINDEXED) return false; VT = LD->getLoadedVT(); if (!TLI.isIndexedLoadLegal(ISD::POST_INC, VT) && @@ -3944,7 +3929,7 @@ return false; Ptr = LD->getBasePtr(); } else if (StoreSDNode *ST = dyn_cast(N)) { - if (ST->isIndexed()) + if (ST->getAddressingMode() != ISD::UNINDEXED) return false; VT = ST->getStoredVT(); if (!TLI.isIndexedStoreLegal(ISD::POST_INC, VT) && @@ -4186,7 +4171,7 @@ // If this is a store of a bit convert, store the input value if the // resultant store does not need a higher alignment than the original. if (Value.getOpcode() == ISD::BIT_CONVERT && !ST->isTruncatingStore() && - ST->isUnindexed()) { + ST->getAddressingMode() == ISD::UNINDEXED) { unsigned Align = ST->getAlignment(); MVT::ValueType SVT = Value.getOperand(0).getValueType(); unsigned OrigAlign = TLI.getTargetMachine().getTargetData()-> @@ -4284,7 +4269,7 @@ return SDOperand(N, 0); // FIXME: is there such a thing as a truncating indexed store? - if (ST->isTruncatingStore() && ST->isUnindexed() && + if (ST->isTruncatingStore() && ST->getAddressingMode() == ISD::UNINDEXED && MVT::isInteger(Value.getValueType())) { // See if we can simplify the input to this truncstore with knowledge that // only the low bits are being used. For example: @@ -4307,7 +4292,8 @@ // is dead/noop. if (LoadSDNode *Ld = dyn_cast(Value)) { if (Ld->getBasePtr() == Ptr && ST->getStoredVT() == Ld->getLoadedVT() && - ST->isUnindexed() && !ST->isVolatile() && + ST->getAddressingMode() == ISD::UNINDEXED && + !ST->isVolatile() && // There can't be any side effects between the load and store, such as // a call or store. Chain.reachesChainWithoutSideEffects(SDOperand(Ld, 1))) { @@ -4316,18 +4302,6 @@ } } - // If this is an FP_ROUND or TRUNC followed by a store, fold this into a - // truncating store. We can do this even if this is already a truncstore. - if ((Value.getOpcode() == ISD::FP_ROUND || Value.getOpcode() == ISD::TRUNCATE) - && TLI.isTypeLegal(Value.getOperand(0).getValueType()) && - Value.Val->hasOneUse() && ST->isUnindexed() && - TLI.isTruncStoreLegal(Value.getOperand(0).getValueType(), - ST->getStoredVT())) { - return DAG.getTruncStore(Chain, Value.getOperand(0), Ptr, ST->getSrcValue(), - ST->getSrcValueOffset(), ST->getStoredVT(), - ST->isVolatile(), ST->getAlignment()); - } - return SDOperand(); } @@ -4463,11 +4437,13 @@ // Otherwise, use InIdx + VecSize unsigned Idx = cast(Extract.getOperand(1))->getValue(); - BuildVecIndices.push_back(DAG.getIntPtrConstant(Idx+NumInScalars)); + BuildVecIndices.push_back(DAG.getConstant(Idx+NumInScalars, + TLI.getPointerTy())); } // Add count and size info. - MVT::ValueType BuildVecVT = MVT::getVectorType(TLI.getPointerTy(), NumElts); + MVT::ValueType BuildVecVT = + MVT::getVectorType(TLI.getPointerTy(), NumElts); // Return the new VECTOR_SHUFFLE node. SDOperand Ops[5]; Modified: llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original) +++ llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Fri Jan 18 14:09:08 2008 @@ -220,6 +220,10 @@ SDOperand ExpandEXTRACT_SUBVECTOR(SDOperand Op); SDOperand ExpandEXTRACT_VECTOR_ELT(SDOperand Op); + + SDOperand getIntPtrConstant(uint64_t Val) { + return DAG.getConstant(Val, TLI.getPointerTy()); + } }; } @@ -2119,7 +2123,7 @@ Lo = DAG.getStore(Tmp1, Lo, Tmp2, ST->getSrcValue(), SVOffset, isVolatile, Alignment); Tmp2 = DAG.getNode(ISD::ADD, Tmp2.getValueType(), Tmp2, - DAG.getIntPtrConstant(4)); + getIntPtrConstant(4)); Hi = DAG.getStore(Tmp1, Hi, Tmp2, ST->getSrcValue(), SVOffset+4, isVolatile, MinAlign(Alignment, 4U)); @@ -2182,9 +2186,8 @@ if (MVT::isVector(ST->getValue().getValueType())) { SDNode *InVal = ST->getValue().Val; int InIx = ST->getValue().ResNo; - MVT::ValueType InVT = InVal->getValueType(InIx); - unsigned NumElems = MVT::getVectorNumElements(InVT); - MVT::ValueType EVT = MVT::getVectorElementType(InVT); + unsigned NumElems = MVT::getVectorNumElements(InVal->getValueType(InIx)); + MVT::ValueType EVT = MVT::getVectorElementType(InVal->getValueType(InIx)); // Figure out if there is a simple type corresponding to this Vector // type. If so, convert to the vector type. @@ -2228,7 +2231,7 @@ } Tmp2 = DAG.getNode(ISD::ADD, Tmp2.getValueType(), Tmp2, - DAG.getIntPtrConstant(IncrementSize)); + getIntPtrConstant(IncrementSize)); assert(isTypeLegal(Tmp2.getValueType()) && "Pointers must be legal!"); SVOffset += IncrementSize; @@ -2239,24 +2242,15 @@ break; } } else { - switch (getTypeAction(ST->getValue().getValueType())) { - case Legal: - Tmp3 = LegalizeOp(ST->getValue()); - break; - case Promote: - // We can promote the value, the truncstore will still take care of it. - Tmp3 = PromoteOp(ST->getValue()); - break; - case Expand: - // Just store the low part. This may become a non-trunc store, so make - // sure to use getTruncStore, not UpdateNodeOperands below. - ExpandOp(ST->getValue(), Tmp3, Tmp4); - return DAG.getTruncStore(Tmp1, Tmp3, Tmp2, ST->getSrcValue(), - SVOffset, MVT::i8, isVolatile, Alignment); - } - - // Unconditionally promote TRUNCSTORE:i1 X -> TRUNCSTORE:i8 (and X, 1) - if (ST->getStoredVT() == MVT::i1) { + // Truncating store + assert(isTypeLegal(ST->getValue().getValueType()) && + "Cannot handle illegal TRUNCSTORE yet!"); + Tmp3 = LegalizeOp(ST->getValue()); + + // The only promote case we handle is TRUNCSTORE:i1 X into + // -> TRUNCSTORE:i8 (and X, 1) + if (ST->getStoredVT() == MVT::i1 && + TLI.getStoreXAction(MVT::i1) == TargetLowering::Promote) { // Promote the bool to a mask then store. Tmp3 = DAG.getNode(ISD::AND, Tmp3.getValueType(), Tmp3, DAG.getConstant(1, Tmp3.getValueType())); @@ -2270,7 +2264,7 @@ } MVT::ValueType StVT = cast(Result.Val)->getStoredVT(); - switch (TLI.getTruncStoreAction(ST->getValue().getValueType(), StVT)) { + switch (TLI.getStoreXAction(StVT)) { default: assert(0 && "This action is not supported yet!"); case TargetLowering::Legal: // If this is an unaligned store and the target doesn't support it, @@ -2284,7 +2278,8 @@ } break; case TargetLowering::Custom: - Result = TLI.LowerOperation(Result, DAG); + Tmp1 = TLI.LowerOperation(Result, DAG); + if (Tmp1.Val) Result = Tmp1; break; } } @@ -2434,11 +2429,7 @@ Tmp3 = DAG.getNode(ExtOp, NVT, Tmp3); // Perform the larger operation, then round down. Result = DAG.getNode(ISD::SELECT, NVT, Tmp1, Tmp2,Tmp3); - if (TruncOp != ISD::FP_ROUND) - Result = DAG.getNode(TruncOp, Node->getValueType(0), Result); - else - Result = DAG.getNode(TruncOp, Node->getValueType(0), Result, - DAG.getIntPtrConstant(0)); + Result = DAG.getNode(TruncOp, Node->getValueType(0), Result); break; } } @@ -3505,13 +3496,13 @@ MVT::ValueType OVT = Node->getOperand(0).getValueType(); // Convert ppcf128 to i32 if (OVT == MVT::ppcf128 && VT == MVT::i32) { - if (Node->getOpcode() == ISD::FP_TO_SINT) { - Result = DAG.getNode(ISD::FP_ROUND_INREG, MVT::ppcf128, - Node->getOperand(0), DAG.getValueType(MVT::f64)); - Result = DAG.getNode(ISD::FP_ROUND, MVT::f64, Result, - DAG.getIntPtrConstant(1)); - Result = DAG.getNode(ISD::FP_TO_SINT, VT, Result); - } else { + if (Node->getOpcode()==ISD::FP_TO_SINT) + Result = DAG.getNode(ISD::FP_TO_SINT, VT, + DAG.getNode(ISD::FP_ROUND, MVT::f64, + (DAG.getNode(ISD::FP_ROUND_INREG, + MVT::ppcf128, Node->getOperand(0), + DAG.getValueType(MVT::f64))))); + else { const uint64_t TwoE31[] = {0x41e0000000000000LL, 0}; APFloat apf = APFloat(APInt(128, 2, TwoE31)); Tmp2 = DAG.getConstantFP(apf, OVT); @@ -3582,13 +3573,14 @@ break; case ISD::FP_EXTEND: { - MVT::ValueType DstVT = Op.getValueType(); - MVT::ValueType SrcVT = Op.getOperand(0).getValueType(); - if (TLI.getConvertAction(SrcVT, DstVT) == TargetLowering::Expand) { - // The only other way we can lower this is to turn it into a STORE, - // LOAD pair, targetting a temporary location (a stack slot). - Result = EmitStackConvert(Node->getOperand(0), SrcVT, DstVT); - break; + MVT::ValueType DstVT = Op.getValueType(); + MVT::ValueType SrcVT = Op.getOperand(0).getValueType(); + if (TLI.getConvertAction(SrcVT, DstVT) == TargetLowering::Expand) { + // The only other way we can lower this is to turn it into a STORE, + // LOAD pair, targetting a temporary location (a stack slot). + Result = EmitStackConvert(Node->getOperand(0), SrcVT, DstVT); + break; + } } switch (getTypeAction(Node->getOperand(0).getValueType())) { case Expand: assert(0 && "Shouldn't need to expand other operators here!"); @@ -3602,37 +3594,35 @@ break; } break; - } case ISD::FP_ROUND: { - MVT::ValueType DstVT = Op.getValueType(); - MVT::ValueType SrcVT = Op.getOperand(0).getValueType(); - if (TLI.getConvertAction(SrcVT, DstVT) == TargetLowering::Expand) { - if (SrcVT == MVT::ppcf128) { - SDOperand Lo, Hi; - ExpandOp(Node->getOperand(0), Lo, Hi); - // Round it the rest of the way (e.g. to f32) if needed. - Result = DAG.getNode(ISD::FP_ROUND, DstVT, Hi, Op.getOperand(1)); - break; + MVT::ValueType DstVT = Op.getValueType(); + MVT::ValueType SrcVT = Op.getOperand(0).getValueType(); + if (TLI.getConvertAction(SrcVT, DstVT) == TargetLowering::Expand) { + if (SrcVT == MVT::ppcf128) { + SDOperand Lo, Hi; + ExpandOp(Node->getOperand(0), Lo, Hi); + Result = DAG.getNode(ISD::FP_ROUND, DstVT, Hi); + break; + } else { + // The only other way we can lower this is to turn it into a STORE, + // LOAD pair, targetting a temporary location (a stack slot). + Result = EmitStackConvert(Node->getOperand(0), DstVT, DstVT); + break; + } } - // The only other way we can lower this is to turn it into a STORE, - // LOAD pair, targetting a temporary location (a stack slot). - Result = EmitStackConvert(Node->getOperand(0), DstVT, DstVT); - break; } switch (getTypeAction(Node->getOperand(0).getValueType())) { case Expand: assert(0 && "Shouldn't need to expand other operators here!"); case Legal: Tmp1 = LegalizeOp(Node->getOperand(0)); - Result = DAG.UpdateNodeOperands(Result, Tmp1, Node->getOperand(1)); + Result = DAG.UpdateNodeOperands(Result, Tmp1); break; case Promote: Tmp1 = PromoteOp(Node->getOperand(0)); - Result = DAG.getNode(ISD::FP_ROUND, Op.getValueType(), Tmp1, - Node->getOperand(1)); + Result = DAG.getNode(ISD::FP_ROUND, Op.getValueType(), Tmp1); break; } break; - } case ISD::ANY_EXTEND: case ISD::ZERO_EXTEND: case ISD::SIGN_EXTEND: @@ -3879,18 +3869,13 @@ case Expand: assert(0 && "BUG: Cannot expand FP regs!"); case Promote: assert(0 && "Unreachable with 2 FP types!"); case Legal: - if (Node->getConstantOperandVal(1) == 0) { - // Input is legal? Do an FP_ROUND_INREG. - Result = DAG.getNode(ISD::FP_ROUND_INREG, NVT, Node->getOperand(0), - DAG.getValueType(VT)); - } else { - // Just remove the truncate, it isn't affecting the value. - Result = DAG.getNode(ISD::FP_ROUND, NVT, Node->getOperand(0), - Node->getOperand(1)); - } + // Input is legal? Do an FP_ROUND_INREG. + Result = DAG.getNode(ISD::FP_ROUND_INREG, NVT, Node->getOperand(0), + DAG.getValueType(VT)); break; } break; + case ISD::SINT_TO_FP: case ISD::UINT_TO_FP: switch (getTypeAction(Node->getOperand(0).getValueType())) { @@ -4043,14 +4028,24 @@ case ISD::FCOPYSIGN: // These operators require that their input be fp extended. switch (getTypeAction(Node->getOperand(0).getValueType())) { - case Expand: assert(0 && "not implemented"); - case Legal: Tmp1 = LegalizeOp(Node->getOperand(0)); break; - case Promote: Tmp1 = PromoteOp(Node->getOperand(0)); break; + case Legal: + Tmp1 = LegalizeOp(Node->getOperand(0)); + break; + case Promote: + Tmp1 = PromoteOp(Node->getOperand(0)); + break; + case Expand: + assert(0 && "not implemented"); } switch (getTypeAction(Node->getOperand(1).getValueType())) { - case Expand: assert(0 && "not implemented"); - case Legal: Tmp2 = LegalizeOp(Node->getOperand(1)); break; - case Promote: Tmp2 = PromoteOp(Node->getOperand(1)); break; + case Legal: + Tmp2 = LegalizeOp(Node->getOperand(1)); + break; + case Promote: + Tmp2 = PromoteOp(Node->getOperand(1)); + break; + case Expand: + assert(0 && "not implemented"); } Result = DAG.getNode(Node->getOpcode(), NVT, Tmp1, Tmp2); @@ -4983,7 +4978,7 @@ SDOperand SignSet = DAG.getSetCC(TLI.getSetCCResultTy(), Hi, DAG.getConstant(0, Hi.getValueType()), ISD::SETLT); - SDOperand Zero = DAG.getIntPtrConstant(0), Four = DAG.getIntPtrConstant(4); + SDOperand Zero = getIntPtrConstant(0), Four = getIntPtrConstant(4); SDOperand CstOffset = DAG.getNode(ISD::SELECT, Zero.getValueType(), SignSet, Four, Zero); uint64_t FF = 0x5f800000ULL; @@ -5105,8 +5100,7 @@ // do nothing Result = Sub; } else if (MVT::getSizeInBits(DestVT) < MVT::getSizeInBits(MVT::f64)) { - Result = DAG.getNode(ISD::FP_ROUND, DestVT, Sub, - DAG.getIntPtrConstant(0)); + Result = DAG.getNode(ISD::FP_ROUND, DestVT, Sub); } else if (MVT::getSizeInBits(DestVT) > MVT::getSizeInBits(MVT::f64)) { Result = DAG.getNode(ISD::FP_EXTEND, DestVT, Sub); } @@ -5118,7 +5112,7 @@ SDOperand SignSet = DAG.getSetCC(TLI.getSetCCResultTy(), Op0, DAG.getConstant(0, Op0.getValueType()), ISD::SETLT); - SDOperand Zero = DAG.getIntPtrConstant(0), Four = DAG.getIntPtrConstant(4); + SDOperand Zero = getIntPtrConstant(0), Four = getIntPtrConstant(4); SDOperand CstOffset = DAG.getNode(ISD::SELECT, Zero.getValueType(), SignSet, Four, Zero); @@ -5576,7 +5570,7 @@ // Increment the pointer to the other half. unsigned IncrementSize = MVT::getSizeInBits(Lo.getValueType())/8; Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - DAG.getIntPtrConstant(IncrementSize)); + getIntPtrConstant(IncrementSize)); SVOffset += IncrementSize; Alignment = MinAlign(Alignment, IncrementSize); Hi = DAG.getLoad(NVT, Ch, Ptr, LD->getSrcValue(), SVOffset, @@ -6529,7 +6523,7 @@ Lo = DAG.getLoad(NewVT_Lo, Ch, Ptr, SV, SVOffset, isVolatile, Alignment); unsigned IncrementSize = NewNumElts_Lo * MVT::getSizeInBits(NewEltVT)/8; Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - DAG.getIntPtrConstant(IncrementSize)); + getIntPtrConstant(IncrementSize)); SVOffset += IncrementSize; Alignment = MinAlign(Alignment, IncrementSize); Hi = DAG.getLoad(NewVT_Hi, Ch, Ptr, SV, SVOffset, isVolatile, Alignment); Modified: llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypes.h URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypes.h?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypes.h (original) +++ llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypes.h Fri Jan 18 14:09:08 2008 @@ -82,6 +82,10 @@ return getTypeAction(VT) == Legal; } + SDOperand getIntPtrConstant(uint64_t Val) { + return DAG.getConstant(Val, TLI.getPointerTy()); + } + /// PromotedNodes - For nodes that are below legal width, this map indicates /// what promoted value to use. DenseMap PromotedNodes; Modified: llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypesExpand.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypesExpand.cpp?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypesExpand.cpp (original) +++ llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypesExpand.cpp Fri Jan 18 14:09:08 2008 @@ -253,7 +253,7 @@ // Increment the pointer to the other half. unsigned IncrementSize = MVT::getSizeInBits(NVT)/8; Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - DAG.getIntPtrConstant(IncrementSize)); + getIntPtrConstant(IncrementSize)); Hi = DAG.getLoad(NVT, Ch, Ptr, N->getSrcValue(), SVOffset+IncrementSize, isVolatile, MinAlign(Alignment, IncrementSize)); @@ -300,7 +300,7 @@ // Increment the pointer to the other half. unsigned IncrementSize = MVT::getSizeInBits(NVT)/8; Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - DAG.getIntPtrConstant(IncrementSize)); + getIntPtrConstant(IncrementSize)); Hi = DAG.getExtLoad(ExtType, NVT, Ch, Ptr, N->getSrcValue(), SVOffset+IncrementSize, NEVT, isVolatile, MinAlign(Alignment, IncrementSize)); @@ -324,7 +324,7 @@ // Increment the pointer to the other half. Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - DAG.getIntPtrConstant(IncrementSize)); + getIntPtrConstant(IncrementSize)); // Load the rest of the low bits. Lo = DAG.getExtLoad(ISD::ZEXTLOAD, NVT, Ch, Ptr, N->getSrcValue(), SVOffset+IncrementSize, MVT::getIntegerType(ExcessBits), @@ -869,7 +869,7 @@ SDOperand SignSet = DAG.getSetCC(TLI.getSetCCResultTy(), Hi, DAG.getConstant(0, Hi.getValueType()), ISD::SETLT); - SDOperand Zero = DAG.getIntPtrConstant(0), Four = DAG.getIntPtrConstant(4); + SDOperand Zero = getIntPtrConstant(0), Four = getIntPtrConstant(4); SDOperand CstOffset = DAG.getNode(ISD::SELECT, Zero.getValueType(), SignSet, Four, Zero); uint64_t FF = 0x5f800000ULL; @@ -1053,7 +1053,7 @@ SVOffset, isVolatile, Alignment); Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - DAG.getIntPtrConstant(IncrementSize)); + getIntPtrConstant(IncrementSize)); assert(isTypeLegal(Ptr.getValueType()) && "Pointers must be legal!"); Hi = DAG.getStore(Ch, Hi, Ptr, N->getSrcValue(), SVOffset+IncrementSize, isVolatile, MinAlign(Alignment, IncrementSize)); @@ -1076,7 +1076,7 @@ // Increment the pointer to the other half. unsigned IncrementSize = MVT::getSizeInBits(NVT)/8; Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - DAG.getIntPtrConstant(IncrementSize)); + getIntPtrConstant(IncrementSize)); Hi = DAG.getTruncStore(Ch, Hi, Ptr, N->getSrcValue(), SVOffset+IncrementSize, NEVT, isVolatile, MinAlign(Alignment, IncrementSize)); @@ -1110,7 +1110,7 @@ // Increment the pointer to the other half. Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - DAG.getIntPtrConstant(IncrementSize)); + getIntPtrConstant(IncrementSize)); // Store the lowest ExcessBits bits in the second half. Lo = DAG.getTruncStore(Ch, Lo, Ptr, N->getSrcValue(), SVOffset+IncrementSize, Modified: llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypesPromote.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypesPromote.cpp?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypesPromote.cpp (original) +++ llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypesPromote.cpp Fri Jan 18 14:09:08 2008 @@ -144,11 +144,8 @@ SDOperand DAGTypeLegalizer::PromoteResult_FP_ROUND(SDNode *N) { // NOTE: Assumes input is legal. - if (N->getConstantOperandVal(1) == 0) - return DAG.getNode(ISD::FP_ROUND_INREG, N->getOperand(0).getValueType(), - N->getOperand(0), DAG.getValueType(N->getValueType(0))); - // If the precision discard isn't needed, just return the operand unrounded. - return N->getOperand(0); + return DAG.getNode(ISD::FP_ROUND_INREG, N->getOperand(0).getValueType(), + N->getOperand(0), DAG.getValueType(N->getValueType(0))); } SDOperand DAGTypeLegalizer::PromoteResult_FP_TO_XINT(SDNode *N) { @@ -356,8 +353,7 @@ SDOperand DAGTypeLegalizer::PromoteOperand_FP_ROUND(SDNode *N) { SDOperand Op = GetPromotedOp(N->getOperand(0)); - return DAG.getNode(ISD::FP_ROUND, N->getValueType(0), Op, - DAG.getIntPtrConstant(0)); + return DAG.getNode(ISD::FP_ROUND, N->getValueType(0), Op); } SDOperand DAGTypeLegalizer::PromoteOperand_INT_TO_FP(SDNode *N) { Modified: llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypesSplit.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypesSplit.cpp?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypesSplit.cpp (original) +++ llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/LegalizeTypesSplit.cpp Fri Jan 18 14:09:08 2008 @@ -139,7 +139,7 @@ Lo = DAG.getLoad(LoVT, Ch, Ptr, SV, SVOffset, isVolatile, Alignment); unsigned IncrementSize = MVT::getSizeInBits(LoVT)/8; Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - DAG.getIntPtrConstant(IncrementSize)); + getIntPtrConstant(IncrementSize)); SVOffset += IncrementSize; Alignment = MinAlign(Alignment, IncrementSize); Hi = DAG.getLoad(HiVT, Ch, Ptr, SV, SVOffset, isVolatile, Alignment); @@ -380,7 +380,7 @@ // Increment the pointer to the other half. Ptr = DAG.getNode(ISD::ADD, Ptr.getValueType(), Ptr, - DAG.getIntPtrConstant(IncrementSize)); + getIntPtrConstant(IncrementSize)); Hi = DAG.getStore(Ch, Hi, Ptr, N->getSrcValue(), SVOffset+IncrementSize, isVol, MinAlign(Alignment, IncrementSize)); Modified: llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/SelectionDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/SelectionDAG.cpp?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/SelectionDAG.cpp (original) +++ llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Fri Jan 18 14:09:08 2008 @@ -710,11 +710,6 @@ return Result; } -SDOperand SelectionDAG::getIntPtrConstant(uint64_t Val, bool isTarget) { - return getConstant(Val, TLI.getPointerTy(), isTarget); -} - - SDOperand SelectionDAG::getConstantFP(const APFloat& V, MVT::ValueType VT, bool isTarget) { assert(MVT::isFloatingPoint(VT) && "Cannot create integer FP constant!"); @@ -1709,7 +1704,7 @@ // Constant fold unary operations with a floating point constant operand. if (ConstantFPSDNode *C = dyn_cast(Operand.Val)) { APFloat V = C->getValueAPF(); // make copy - if (VT != MVT::ppcf128 && Operand.getValueType() != MVT::ppcf128) { + if (VT!=MVT::ppcf128 && Operand.getValueType()!=MVT::ppcf128) { switch (Opcode) { case ISD::FNEG: V.changeSign(); @@ -1754,13 +1749,13 @@ switch (Opcode) { case ISD::TokenFactor: return Operand; // Factor of one node? No factor. - case ISD::FP_ROUND: assert(0 && "Invalid method to make FP_ROUND node"); + case ISD::FP_ROUND: case ISD::FP_EXTEND: assert(MVT::isFloatingPoint(VT) && MVT::isFloatingPoint(Operand.getValueType()) && "Invalid FP cast!"); if (Operand.getValueType() == VT) return Operand; // noop conversion. break; - case ISD::SIGN_EXTEND: + case ISD::SIGN_EXTEND: assert(MVT::isInteger(VT) && MVT::isInteger(Operand.getValueType()) && "Invalid SIGN_EXTEND!"); if (Operand.getValueType() == VT) return Operand; // noop extension @@ -1914,13 +1909,6 @@ "Not rounding down!"); break; } - case ISD::FP_ROUND: - assert(MVT::isFloatingPoint(VT) && - MVT::isFloatingPoint(N1.getValueType()) && - MVT::getSizeInBits(VT) <= MVT::getSizeInBits(N1.getValueType()) && - isa(N2) && "Invalid FP_ROUND!"); - if (N1.getValueType() == VT) return N1; // noop conversion. - break; case ISD::AssertSext: case ISD::AssertZext: case ISD::SIGN_EXTEND_INREG: { Modified: llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp (original) +++ llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Fri Jan 18 14:09:08 2008 @@ -483,6 +483,10 @@ const Value *SV, SDOperand Root, bool isVolatile, unsigned Alignment); + SDOperand getIntPtrConstant(uint64_t Val) { + return DAG.getConstant(Val, TLI.getPointerTy()); + } + SDOperand getValue(const Value *V); void setValue(const Value *V, SDOperand NewN) { @@ -673,10 +677,12 @@ } } - if (MVT::isFloatingPoint(PartVT) && MVT::isFloatingPoint(ValueVT)) - return DAG.getNode(ISD::FP_ROUND, ValueVT, Val, DAG.getIntPtrConstant(0)); + if (MVT::isFloatingPoint(PartVT) && + MVT::isFloatingPoint(ValueVT)) + return DAG.getNode(ISD::FP_ROUND, ValueVT, Val); - if (MVT::getSizeInBits(PartVT) == MVT::getSizeInBits(ValueVT)) + if (MVT::getSizeInBits(PartVT) == + MVT::getSizeInBits(ValueVT)) return DAG.getNode(ISD::BIT_CONVERT, ValueVT, Val); assert(0 && "Unknown mismatch!"); @@ -2157,7 +2163,7 @@ // FPTrunc is never a no-op cast, no need to check SDOperand N = getValue(I.getOperand(0)); MVT::ValueType DestVT = TLI.getValueType(I.getType()); - setValue(&I, DAG.getNode(ISD::FP_ROUND, DestVT, N, DAG.getIntPtrConstant(0))); + setValue(&I, DAG.getNode(ISD::FP_ROUND, DestVT, N)); } void SelectionDAGLowering::visitFPExt(User &I){ @@ -2278,7 +2284,7 @@ // N = N + Offset uint64_t Offset = TD->getStructLayout(StTy)->getElementOffset(Field); N = DAG.getNode(ISD::ADD, N.getValueType(), N, - DAG.getIntPtrConstant(Offset)); + getIntPtrConstant(Offset)); } Ty = StTy->getElementType(Field); } else { @@ -2289,8 +2295,7 @@ if (CI->getZExtValue() == 0) continue; uint64_t Offs = TD->getABITypeSize(Ty)*cast(CI)->getSExtValue(); - N = DAG.getNode(ISD::ADD, N.getValueType(), N, - DAG.getIntPtrConstant(Offs)); + N = DAG.getNode(ISD::ADD, N.getValueType(), N, getIntPtrConstant(Offs)); continue; } @@ -2315,7 +2320,7 @@ continue; } - SDOperand Scale = DAG.getIntPtrConstant(ElementSize); + SDOperand Scale = getIntPtrConstant(ElementSize); IdxN = DAG.getNode(ISD::MUL, N.getValueType(), IdxN, Scale); N = DAG.getNode(ISD::ADD, N.getValueType(), N, IdxN); } @@ -2343,7 +2348,7 @@ AllocSize = DAG.getNode(ISD::ZERO_EXTEND, IntPtr, AllocSize); AllocSize = DAG.getNode(ISD::MUL, IntPtr, AllocSize, - DAG.getIntPtrConstant(TySize)); + getIntPtrConstant(TySize)); // Handle alignment. If the requested alignment is less than or equal to // the stack alignment, ignore it. If the size is greater than or equal to @@ -2356,12 +2361,12 @@ // Round the size of the allocation up to the stack alignment size // by add SA-1 to the size. AllocSize = DAG.getNode(ISD::ADD, AllocSize.getValueType(), AllocSize, - DAG.getIntPtrConstant(StackAlign-1)); + getIntPtrConstant(StackAlign-1)); // Mask out the low bits for alignment purposes. AllocSize = DAG.getNode(ISD::AND, AllocSize.getValueType(), AllocSize, - DAG.getIntPtrConstant(~(uint64_t)(StackAlign-1))); + getIntPtrConstant(~(uint64_t)(StackAlign-1))); - SDOperand Ops[] = { getRoot(), AllocSize, DAG.getIntPtrConstant(Align) }; + SDOperand Ops[] = { getRoot(), AllocSize, getIntPtrConstant(Align) }; const MVT::ValueType *VTs = DAG.getNodeValueTypes(AllocSize.getValueType(), MVT::Other); SDOperand DSA = DAG.getNode(ISD::DYNAMIC_STACKALLOC, VTs, 2, Ops, 3); @@ -3810,7 +3815,7 @@ // Scale the source by the type size. uint64_t ElementSize = TD->getABITypeSize(I.getType()->getElementType()); Src = DAG.getNode(ISD::MUL, Src.getValueType(), - Src, DAG.getIntPtrConstant(ElementSize)); + Src, getIntPtrConstant(ElementSize)); TargetLowering::ArgListTy Args; TargetLowering::ArgListEntry Entry; @@ -3989,7 +3994,7 @@ Op = DAG.getNode(ISD::TRUNCATE, VT, Op); } else { assert(MVT::isFloatingPoint(VT) && "Not int or FP?"); - Op = DAG.getNode(ISD::FP_ROUND, VT, Op, DAG.getIntPtrConstant(1)); + Op = DAG.getNode(ISD::FP_ROUND, VT, Op); } Ops.push_back(Op); break; Modified: llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/TargetLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/TargetLowering.cpp?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/TargetLowering.cpp (original) +++ llvm/branches/Apple/llvmCore-2010/lib/CodeGen/SelectionDAG/TargetLowering.cpp Fri Jan 18 14:09:08 2008 @@ -158,7 +158,7 @@ // All operations default to being supported. memset(OpActions, 0, sizeof(OpActions)); memset(LoadXActions, 0, sizeof(LoadXActions)); - memset(TruncStoreActions, 0, sizeof(TruncStoreActions)); + memset(&StoreXActions, 0, sizeof(StoreXActions)); memset(&IndexedModeActions, 0, sizeof(IndexedModeActions)); memset(&ConvertActions, 0, sizeof(ConvertActions)); Modified: llvm/branches/Apple/llvmCore-2010/lib/Target/ARM/ARMISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/Target/ARM/ARMISelLowering.cpp?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/Target/ARM/ARMISelLowering.cpp (original) +++ llvm/branches/Apple/llvmCore-2010/lib/Target/ARM/ARMISelLowering.cpp Fri Jan 18 14:09:08 2008 @@ -125,8 +125,6 @@ if (!UseSoftFloat && Subtarget->hasVFP2() && !Subtarget->isThumb()) { addRegisterClass(MVT::f32, ARM::SPRRegisterClass); addRegisterClass(MVT::f64, ARM::DPRRegisterClass); - - setTruncStoreAction(MVT::f64, MVT::f32, Expand); } computeRegisterProperties(); Modified: llvm/branches/Apple/llvmCore-2010/lib/Target/ARM/ARMInstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/Target/ARM/ARMInstrInfo.td?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/Target/ARM/ARMInstrInfo.td (original) +++ llvm/branches/Apple/llvmCore-2010/lib/Target/ARM/ARMInstrInfo.td Fri Jan 18 14:09:08 2008 @@ -1404,6 +1404,14 @@ def : ARMPat<(extloadi8 addrmode2:$addr), (LDRB addrmode2:$addr)>; def : ARMPat<(extloadi16 addrmode3:$addr), (LDRH addrmode3:$addr)>; +// truncstore i1 -> truncstore i8 +def : ARMPat<(truncstorei1 GPR:$src, addrmode2:$dst), + (STRB GPR:$src, addrmode2:$dst)>; +def : ARMPat<(pre_truncsti1 GPR:$src, GPR:$base, am2offset:$offset), + (STRB_PRE GPR:$src, GPR:$base, am2offset:$offset)>; +def : ARMPat<(post_truncsti1 GPR:$src, GPR:$base, am2offset:$offset), + (STRB_POST GPR:$src, GPR:$base, am2offset:$offset)>; + // smul* and smla* def : ARMV5TEPat<(mul (sra (shl GPR:$a, 16), 16), (sra (shl GPR:$b, 16), 16)), (SMULBB GPR:$a, GPR:$b)>; Modified: llvm/branches/Apple/llvmCore-2010/lib/Target/ARM/ARMInstrThumb.td URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/Target/ARM/ARMInstrThumb.td?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/Target/ARM/ARMInstrThumb.td (original) +++ llvm/branches/Apple/llvmCore-2010/lib/Target/ARM/ARMInstrThumb.td Fri Jan 18 14:09:08 2008 @@ -588,6 +588,10 @@ def : ThumbPat<(extloadi8 t_addrmode_s1:$addr), (tLDRB t_addrmode_s1:$addr)>; def : ThumbPat<(extloadi16 t_addrmode_s2:$addr), (tLDRH t_addrmode_s2:$addr)>; +// truncstore i1 -> truncstore i8 +def : ThumbPat<(truncstorei1 GPR:$src, t_addrmode_s1:$dst), + (tSTRB GPR:$src, t_addrmode_s1:$dst)>; + // Large immediate handling. // Two piece imms. Modified: llvm/branches/Apple/llvmCore-2010/lib/Target/Alpha/AlphaISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/Target/Alpha/AlphaISelLowering.cpp?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/Target/Alpha/AlphaISelLowering.cpp (original) +++ llvm/branches/Apple/llvmCore-2010/lib/Target/Alpha/AlphaISelLowering.cpp Fri Jan 18 14:09:08 2008 @@ -59,6 +59,8 @@ setLoadXAction(ISD::SEXTLOAD, MVT::i8, Expand); setLoadXAction(ISD::SEXTLOAD, MVT::i16, Expand); + setStoreXAction(MVT::i1, Promote); + // setOperationAction(ISD::BRIND, MVT::Other, Expand); setOperationAction(ISD::BR_JT, MVT::Other, Expand); setOperationAction(ISD::BR_CC, MVT::Other, Expand); Modified: llvm/branches/Apple/llvmCore-2010/lib/Target/CellSPU/SPUISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/Target/CellSPU/SPUISelLowering.cpp?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/Target/CellSPU/SPUISelLowering.cpp (original) +++ llvm/branches/Apple/llvmCore-2010/lib/Target/CellSPU/SPUISelLowering.cpp Fri Jan 18 14:09:08 2008 @@ -137,21 +137,13 @@ setLoadXAction(ISD::EXTLOAD, MVT::i1, Promote); setLoadXAction(ISD::SEXTLOAD, MVT::i1, Promote); setLoadXAction(ISD::ZEXTLOAD, MVT::i1, Promote); - setTruncStoreAction(MVT::i8, MVT::i1, Custom); - setTruncStoreAction(MVT::i16, MVT::i1, Custom); - setTruncStoreAction(MVT::i32, MVT::i1, Custom); - setTruncStoreAction(MVT::i64, MVT::i1, Custom); - setTruncStoreAction(MVT::i128, MVT::i1, Custom); + setStoreXAction(MVT::i1, Custom); setLoadXAction(ISD::EXTLOAD, MVT::i8, Custom); setLoadXAction(ISD::SEXTLOAD, MVT::i8, Custom); setLoadXAction(ISD::ZEXTLOAD, MVT::i8, Custom); - setTruncStoreAction(MVT::i8 , MVT::i8, Custom); - setTruncStoreAction(MVT::i16 , MVT::i8, Custom); - setTruncStoreAction(MVT::i32 , MVT::i8, Custom); - setTruncStoreAction(MVT::i64 , MVT::i8, Custom); - setTruncStoreAction(MVT::i128, MVT::i8, Custom); - + setStoreXAction(MVT::i8, Custom); + setLoadXAction(ISD::EXTLOAD, MVT::i16, Custom); setLoadXAction(ISD::SEXTLOAD, MVT::i16, Custom); setLoadXAction(ISD::ZEXTLOAD, MVT::i16, Custom); Modified: llvm/branches/Apple/llvmCore-2010/lib/Target/IA64/IA64ISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/Target/IA64/IA64ISelLowering.cpp?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/Target/IA64/IA64ISelLowering.cpp (original) +++ llvm/branches/Apple/llvmCore-2010/lib/Target/IA64/IA64ISelLowering.cpp Fri Jan 18 14:09:08 2008 @@ -193,8 +193,7 @@ argt = newroot = DAG.getCopyFromReg(DAG.getRoot(), argVreg[count], MVT::f64); if (I->getType() == Type::FloatTy) - argt = DAG.getNode(ISD::FP_ROUND, MVT::f32, argt, - DAG.getIntPtrConstant(0)); + argt = DAG.getNode(ISD::FP_ROUND, MVT::f32, argt); break; case MVT::i1: // NOTE: as far as C abi stuff goes, // bools are just boring old ints Modified: llvm/branches/Apple/llvmCore-2010/lib/Target/Mips/MipsISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/Target/Mips/MipsISelLowering.cpp?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/Target/Mips/MipsISelLowering.cpp (original) +++ llvm/branches/Apple/llvmCore-2010/lib/Target/Mips/MipsISelLowering.cpp Fri Jan 18 14:09:08 2008 @@ -72,6 +72,9 @@ setLoadXAction(ISD::ZEXTLOAD, MVT::i1, Promote); setLoadXAction(ISD::SEXTLOAD, MVT::i1, Promote); + // Store operations for i1 types must be promoted + setStoreXAction(MVT::i1, Promote); + // Mips does not have these NodeTypes below. setOperationAction(ISD::BR_JT, MVT::Other, Expand); setOperationAction(ISD::BR_CC, MVT::Other, Expand); Modified: llvm/branches/Apple/llvmCore-2010/lib/Target/Mips/MipsInstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/Target/Mips/MipsInstrInfo.td?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/Target/Mips/MipsInstrInfo.td (original) +++ llvm/branches/Apple/llvmCore-2010/lib/Target/Mips/MipsInstrInfo.td Fri Jan 18 14:09:08 2008 @@ -534,6 +534,8 @@ def : Pat<(i32 (extloadi1 addr:$src)), (LBu addr:$src)>; def : Pat<(i32 (extloadi8 addr:$src)), (LBu addr:$src)>; def : Pat<(i32 (extloadi16 addr:$src)), (LHu addr:$src)>; +def : Pat<(truncstorei1 CPURegs:$src, addr:$addr), + (SB CPURegs:$src, addr:$addr)>; // some peepholes def : Pat<(store (i32 0), addr:$dst), (SW ZERO, addr:$dst)>; Modified: llvm/branches/Apple/llvmCore-2010/lib/Target/PowerPC/PPCISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/Target/PowerPC/PPCISelLowering.cpp?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/Target/PowerPC/PPCISelLowering.cpp (original) +++ llvm/branches/Apple/llvmCore-2010/lib/Target/PowerPC/PPCISelLowering.cpp Fri Jan 18 14:09:08 2008 @@ -54,9 +54,10 @@ // PowerPC has an i16 but no i8 (or i1) SEXTLOAD setLoadXAction(ISD::SEXTLOAD, MVT::i1, Expand); setLoadXAction(ISD::SEXTLOAD, MVT::i8, Expand); - - setTruncStoreAction(MVT::f64, MVT::f32, Expand); - + + // PowerPC does not have truncstore for i1. + setStoreXAction(MVT::i1, Promote); + // PowerPC has pre-inc load and store's. setIndexedLoadAction(ISD::PRE_INC, MVT::i1, Legal); setIndexedLoadAction(ISD::PRE_INC, MVT::i8, Legal); @@ -2170,7 +2171,7 @@ SDOperand Bits = DAG.getNode(ISD::BIT_CONVERT, MVT::f64, Op.getOperand(0)); SDOperand FP = DAG.getNode(PPCISD::FCFID, MVT::f64, Bits); if (Op.getValueType() == MVT::f32) - FP = DAG.getNode(ISD::FP_ROUND, MVT::f32, FP, DAG.getIntPtrConstant(0)); + FP = DAG.getNode(ISD::FP_ROUND, MVT::f32, FP); return FP; } @@ -2198,7 +2199,7 @@ // FCFID it and return it. SDOperand FP = DAG.getNode(PPCISD::FCFID, MVT::f64, Ld); if (Op.getValueType() == MVT::f32) - FP = DAG.getNode(ISD::FP_ROUND, MVT::f32, FP, DAG.getIntPtrConstant(0)); + FP = DAG.getNode(ISD::FP_ROUND, MVT::f32, FP); return FP; } @@ -3169,8 +3170,7 @@ Val = DAG.getNode(PPCISD::FCFID, MVT::f64, Val); DCI.AddToWorklist(Val.Val); if (N->getValueType(0) == MVT::f32) { - Val = DAG.getNode(ISD::FP_ROUND, MVT::f32, Val, - DAG.getIntPtrConstant(0)); + Val = DAG.getNode(ISD::FP_ROUND, MVT::f32, Val); DCI.AddToWorklist(Val.Val); } return Val; Modified: llvm/branches/Apple/llvmCore-2010/lib/Target/Sparc/SparcInstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/Target/Sparc/SparcInstrInfo.td?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/Target/Sparc/SparcInstrInfo.td (original) +++ llvm/branches/Apple/llvmCore-2010/lib/Target/Sparc/SparcInstrInfo.td Fri Jan 18 14:09:08 2008 @@ -774,3 +774,9 @@ // zextload bool -> zextload byte def : Pat<(i32 (zextloadi1 ADDRrr:$src)), (LDUBrr ADDRrr:$src)>; def : Pat<(i32 (zextloadi1 ADDRri:$src)), (LDUBri ADDRri:$src)>; + +// truncstore bool -> truncstore byte. +def : Pat<(truncstorei1 IntRegs:$src, ADDRrr:$addr), + (STBrr ADDRrr:$addr, IntRegs:$src)>; +def : Pat<(truncstorei1 IntRegs:$src, ADDRri:$addr), + (STBri ADDRri:$addr, IntRegs:$src)>; Modified: llvm/branches/Apple/llvmCore-2010/lib/Target/TargetSelectionDAG.td URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/Target/TargetSelectionDAG.td?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/Target/TargetSelectionDAG.td (original) +++ llvm/branches/Apple/llvmCore-2010/lib/Target/TargetSelectionDAG.td Fri Jan 18 14:09:08 2008 @@ -551,6 +551,13 @@ }]>; // truncstore fragments. +def truncstorei1 : PatFrag<(ops node:$val, node:$ptr), + (st node:$val, node:$ptr), [{ + if (StoreSDNode *ST = dyn_cast(N)) + return ST->isTruncatingStore() && ST->getStoredVT() == MVT::i1 && + ST->getAddressingMode() == ISD::UNINDEXED; + return false; +}]>; def truncstorei8 : PatFrag<(ops node:$val, node:$ptr), (st node:$val, node:$ptr), [{ if (StoreSDNode *ST = dyn_cast(N)) Modified: llvm/branches/Apple/llvmCore-2010/lib/Target/X86/X86ISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/Target/X86/X86ISelLowering.cpp?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/Target/X86/X86ISelLowering.cpp (original) +++ llvm/branches/Apple/llvmCore-2010/lib/Target/X86/X86ISelLowering.cpp Fri Jan 18 14:09:08 2008 @@ -82,14 +82,6 @@ setLoadXAction(ISD::SEXTLOAD, MVT::i1, Expand); - // We don't accept any truncstore of integer registers. - setTruncStoreAction(MVT::i64, MVT::i32, Expand); - setTruncStoreAction(MVT::i64, MVT::i16, Expand); - setTruncStoreAction(MVT::i64, MVT::i8 , Expand); - setTruncStoreAction(MVT::i32, MVT::i16, Expand); - setTruncStoreAction(MVT::i32, MVT::i8 , Expand); - setTruncStoreAction(MVT::i16, MVT::i8, Expand); - // Promote all UINT_TO_FP to larger SINT_TO_FP's, as X86 doesn't have this // operation. setOperationAction(ISD::UINT_TO_FP , MVT::i1 , Promote); @@ -646,8 +638,6 @@ AddPromotedToType (ISD::SELECT, (MVT::ValueType)VT, MVT::v2i64); } - setTruncStoreAction(MVT::f64, MVT::f32, Expand); - // Custom lower v2i64 and v2f64 selects. setOperationAction(ISD::LOAD, MVT::v2f64, Legal); setOperationAction(ISD::LOAD, MVT::v2i64, Legal); @@ -1192,7 +1182,8 @@ SmallVector MemOps; SDOperand RSFIN = DAG.getFrameIndex(RegSaveFrameIndex, getPointerTy()); SDOperand FIN = DAG.getNode(ISD::ADD, getPointerTy(), RSFIN, - DAG.getIntPtrConstant(VarArgsGPOffset)); + DAG.getConstant(VarArgsGPOffset, + getPointerTy())); for (; NumIntRegs != 6; ++NumIntRegs) { unsigned VReg = AddLiveIn(MF, GPR64ArgRegs[NumIntRegs], X86::GR64RegisterClass); @@ -1200,12 +1191,12 @@ SDOperand Store = DAG.getStore(Val.getValue(1), Val, FIN, NULL, 0); MemOps.push_back(Store); FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, - DAG.getIntPtrConstant(8)); + DAG.getConstant(8, getPointerTy())); } // Now store the XMM (fp + vector) parameter registers. FIN = DAG.getNode(ISD::ADD, getPointerTy(), RSFIN, - DAG.getIntPtrConstant(VarArgsFPOffset)); + DAG.getConstant(VarArgsFPOffset, getPointerTy())); for (; NumXMMRegs != 8; ++NumXMMRegs) { unsigned VReg = AddLiveIn(MF, XMMArgRegs[NumXMMRegs], X86::VR128RegisterClass); @@ -1213,7 +1204,7 @@ SDOperand Store = DAG.getStore(Val.getValue(1), Val, FIN, NULL, 0); MemOps.push_back(Store); FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, - DAG.getIntPtrConstant(16)); + DAG.getConstant(16, getPointerTy())); } if (!MemOps.empty()) Root = DAG.getNode(ISD::TokenFactor, MVT::Other, @@ -1262,7 +1253,7 @@ const CCValAssign &VA, SDOperand Chain, SDOperand Arg) { - SDOperand PtrOff = DAG.getIntPtrConstant(VA.getLocMemOffset()); + SDOperand PtrOff = DAG.getConstant(VA.getLocMemOffset(), getPointerTy()); PtrOff = DAG.getNode(ISD::ADD, getPointerTy(), StackPtr, PtrOff); SDOperand FlagsOp = Op.getOperand(6+2*VA.getValNo()); unsigned Flags = cast(FlagsOp)->getValue(); @@ -1315,7 +1306,7 @@ MF.getInfo()->setTCReturnAddrDelta(FPDiff); } - Chain = DAG.getCALLSEQ_START(Chain, DAG.getIntPtrConstant(NumBytes)); + Chain = DAG.getCALLSEQ_START(Chain,DAG.getConstant(NumBytes, getPointerTy())); SDOperand RetAddrFrIdx, NewRetAddrFrIdx; if (IsTailCall) { @@ -1449,7 +1440,7 @@ // needs to be done because if we would lower the arguments directly // to their real stack slot we might end up overwriting each other. // Get source stack slot. - Source = DAG.getIntPtrConstant(VA.getLocMemOffset()); + Source = DAG.getConstant(VA.getLocMemOffset(), getPointerTy()); if (StackPtr.Val == 0) StackPtr = DAG.getCopyFromReg(Chain, X86StackPtr, getPointerTy()); Source = DAG.getNode(ISD::ADD, getPointerTy(), StackPtr, Source); @@ -1510,8 +1501,8 @@ if (IsTailCall) { Ops.push_back(Chain); - Ops.push_back(DAG.getIntPtrConstant(NumBytes)); - Ops.push_back(DAG.getIntPtrConstant(0)); + Ops.push_back(DAG.getConstant(NumBytes, getPointerTy())); + Ops.push_back(DAG.getConstant(0, getPointerTy())); if (InFlag.Val) Ops.push_back(InFlag); Chain = DAG.getNode(ISD::CALLSEQ_END, NodeTys, &Ops[0], Ops.size()); @@ -1569,8 +1560,9 @@ // Returns a flag for retval copy to use. Chain = DAG.getCALLSEQ_END(Chain, - DAG.getIntPtrConstant(NumBytes), - DAG.getIntPtrConstant(NumBytesForCalleeToPush), + DAG.getConstant(NumBytes, getPointerTy()), + DAG.getConstant(NumBytesForCalleeToPush, + getPointerTy()), InFlag); InFlag = Chain.getValue(1); @@ -2740,7 +2732,7 @@ if (ThisElt.Val) V = DAG.getNode(ISD::INSERT_VECTOR_ELT, MVT::v8i16, V, ThisElt, - DAG.getIntPtrConstant(i/2)); + DAG.getConstant(i/2, TLI.getPointerTy())); } } @@ -2768,7 +2760,7 @@ First = false; } V = DAG.getNode(ISD::INSERT_VECTOR_ELT, MVT::v8i16, V, Op.getOperand(i), - DAG.getIntPtrConstant(i)); + DAG.getConstant(i, TLI.getPointerTy())); } } @@ -3577,7 +3569,7 @@ Vec = DAG.getNode(ISD::VECTOR_SHUFFLE, Vec.getValueType(), Vec, DAG.getNode(ISD::UNDEF, Vec.getValueType()), Mask); return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, VT, Vec, - DAG.getIntPtrConstant(0)); + DAG.getConstant(0, getPointerTy())); } else if (MVT::getSizeInBits(VT) == 64) { unsigned Idx = cast(Op.getOperand(1))->getValue(); if (Idx == 0) @@ -3597,7 +3589,7 @@ Vec = DAG.getNode(ISD::VECTOR_SHUFFLE, Vec.getValueType(), Vec, DAG.getNode(ISD::UNDEF, Vec.getValueType()), Mask); return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, VT, Vec, - DAG.getIntPtrConstant(0)); + DAG.getConstant(0, getPointerTy())); } return SDOperand(); @@ -3620,7 +3612,7 @@ if (N1.getValueType() != MVT::i32) N1 = DAG.getNode(ISD::ANY_EXTEND, MVT::i32, N1); if (N2.getValueType() != MVT::i32) - N2 = DAG.getIntPtrConstant(cast(N2)->getValue()); + N2 = DAG.getConstant(cast(N2)->getValue(),getPointerTy()); return DAG.getNode(X86ISD::PINSRW, VT, N0, N1, N2); } return SDOperand(); @@ -4058,7 +4050,7 @@ } // And if it is bigger, shrink it first. if (MVT::getSizeInBits(SrcVT) > MVT::getSizeInBits(VT)) { - Op1 = DAG.getNode(ISD::FP_ROUND, VT, Op1, DAG.getIntPtrConstant(1)); + Op1 = DAG.getNode(ISD::FP_ROUND, VT, Op1); SrcVT = VT; SrcTy = MVT::getTypeForValueType(SrcVT); } @@ -4091,7 +4083,7 @@ DAG.getConstant(32, MVT::i32)); SignBit = DAG.getNode(ISD::BIT_CONVERT, MVT::v4f32, SignBit); SignBit = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, MVT::f32, SignBit, - DAG.getIntPtrConstant(0)); + DAG.getConstant(0, getPointerTy())); } // Clear first operand sign bit. @@ -4255,7 +4247,7 @@ SDOperand Flag; MVT::ValueType IntPtr = getPointerTy(); - MVT::ValueType SPTy = Subtarget->is64Bit() ? MVT::i64 : MVT::i32; + MVT::ValueType SPTy = (Subtarget->is64Bit() ? MVT::i64 : MVT::i32); Chain = DAG.getCopyToReg(Chain, X86::EAX, Size, Flag); Flag = Chain.getValue(1); @@ -4346,7 +4338,7 @@ if (AVT > MVT::i8) { if (I) { unsigned UBytes = MVT::getSizeInBits(AVT) / 8; - Count = DAG.getIntPtrConstant(I->getValue() / UBytes); + Count = DAG.getConstant(I->getValue() / UBytes, getPointerTy()); BytesLeft = I->getValue() % UBytes; } else { assert(AVT >= MVT::i32 && @@ -4458,7 +4450,7 @@ } unsigned UBytes = MVT::getSizeInBits(AVT) / 8; - SDOperand Count = DAG.getIntPtrConstant(Size / UBytes); + SDOperand Count = DAG.getConstant(Size / UBytes, getPointerTy()); BytesLeft = Size % UBytes; SDOperand InFlag(0, 0); @@ -4587,21 +4579,24 @@ MemOps.push_back(Store); // Store fp_offset - FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, DAG.getIntPtrConstant(4)); + FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, + DAG.getConstant(4, getPointerTy())); Store = DAG.getStore(Op.getOperand(0), DAG.getConstant(VarArgsFPOffset, MVT::i32), FIN, SV->getValue(), SV->getOffset()); MemOps.push_back(Store); // Store ptr to overflow_arg_area - FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, DAG.getIntPtrConstant(4)); + FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, + DAG.getConstant(4, getPointerTy())); SDOperand OVFIN = DAG.getFrameIndex(VarArgsFrameIndex, getPointerTy()); Store = DAG.getStore(Op.getOperand(0), OVFIN, FIN, SV->getValue(), SV->getOffset()); MemOps.push_back(Store); // Store ptr to reg_save_area. - FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, DAG.getIntPtrConstant(8)); + FIN = DAG.getNode(ISD::ADD, getPointerTy(), FIN, + DAG.getConstant(8, getPointerTy())); SDOperand RSFIN = DAG.getFrameIndex(RegSaveFrameIndex, getPointerTy()); Store = DAG.getStore(Op.getOperand(0), RSFIN, FIN, SV->getValue(), SV->getOffset()); @@ -4629,9 +4624,9 @@ if (i == 2) break; SrcPtr = DAG.getNode(ISD::ADD, getPointerTy(), SrcPtr, - DAG.getIntPtrConstant(8)); + DAG.getConstant(8, getPointerTy())); DstPtr = DAG.getNode(ISD::ADD, getPointerTy(), DstPtr, - DAG.getIntPtrConstant(8)); + DAG.getConstant(8, getPointerTy())); } return Chain; } @@ -4762,7 +4757,7 @@ SDOperand RetAddrFI = getReturnAddressFrameIndex(DAG); return DAG.getNode(ISD::SUB, getPointerTy(), RetAddrFI, - DAG.getIntPtrConstant(4)); + DAG.getConstant(4, getPointerTy())); } SDOperand X86TargetLowering::LowerFRAME_TO_ARGS_OFFSET(SDOperand Op, @@ -4771,7 +4766,7 @@ if (Subtarget->is64Bit()) return SDOperand(); - return DAG.getIntPtrConstant(8); + return DAG.getConstant(8, getPointerTy()); } SDOperand X86TargetLowering::LowerEH_RETURN(SDOperand Op, SelectionDAG &DAG) @@ -4788,7 +4783,7 @@ getPointerTy()); SDOperand StoreAddr = DAG.getNode(ISD::SUB, getPointerTy(), Frame, - DAG.getIntPtrConstant(-4UL)); + DAG.getConstant(-4UL, getPointerTy())); StoreAddr = DAG.getNode(ISD::ADD, getPointerTy(), StoreAddr, Offset); Chain = DAG.getStore(Chain, Handler, StoreAddr, NULL, 0); Chain = DAG.getCopyToReg(Chain, X86::ECX, StoreAddr); Modified: llvm/branches/Apple/llvmCore-2010/lib/Target/X86/X86InstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/lib/Target/X86/X86InstrInfo.td?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/lib/Target/X86/X86InstrInfo.td (original) +++ llvm/branches/Apple/llvmCore-2010/lib/Target/X86/X86InstrInfo.td Fri Jan 18 14:09:08 2008 @@ -2598,6 +2598,11 @@ def : Pat<(subc GR32:$src1, i32immSExt8:$src2), (SUB32ri8 GR32:$src1, i32immSExt8:$src2)>; +def : Pat<(truncstorei1 (i8 imm:$src), addr:$dst), + (MOV8mi addr:$dst, imm:$src)>; +def : Pat<(truncstorei1 GR8:$src, addr:$dst), + (MOV8mr addr:$dst, GR8:$src)>; + // Comparisons. // TEST R,R is smaller than CMP R,0 Modified: llvm/branches/Apple/llvmCore-2010/test/CodeGen/X86/storetrunc-fp.ll URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/llvmCore-2010/test/CodeGen/X86/storetrunc-fp.ll?rev=46177&r1=46176&r2=46177&view=diff ============================================================================== --- llvm/branches/Apple/llvmCore-2010/test/CodeGen/X86/storetrunc-fp.ll (original) +++ llvm/branches/Apple/llvmCore-2010/test/CodeGen/X86/storetrunc-fp.ll Fri Jan 18 14:09:08 2008 @@ -1,8 +0,0 @@ -; RUN: llvm-as < %s | llc -march=x86 | not grep flds - -define void @foo(x86_fp80 %a, x86_fp80 %b, float* %fp) { - %c = add x86_fp80 %a, %b - %d = fptrunc x86_fp80 %c to float - store float %d, float* %fp - ret void -} From dpatel at apple.com Fri Jan 18 14:10:27 2008 From: dpatel at apple.com (Devang Patel) Date: Fri, 18 Jan 2008 20:10:27 -0000 Subject: [llvm-commits] [llvm] r46178 - /llvm/tags/Apple/llvmCore-2010/ Message-ID: <200801182010.m0IKARmY016692@zion.cs.uiuc.edu> Author: dpatel Date: Fri Jan 18 14:10:27 2008 New Revision: 46178 URL: http://llvm.org/viewvc/llvm-project?rev=46178&view=rev Log: Tag llvmCore-2010 Added: llvm/tags/Apple/llvmCore-2010/ - copied from r46177, llvm/branches/Apple/llvmCore-2010/ From evan.cheng at apple.com Fri Jan 18 15:01:00 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Fri, 18 Jan 2008 21:01:00 -0000 Subject: [llvm-commits] [llvm] r46180 - in /llvm/trunk/utils/buildit: GNUmakefile build_llvm Message-ID: <200801182101.m0IL10XG019929@zion.cs.uiuc.edu> Author: evancheng Date: Fri Jan 18 15:01:00 2008 New Revision: 46180 URL: http://llvm.org/viewvc/llvm-project?rev=46180&view=rev Log: Fix makefiles to enable Apply style debug build. Modified: llvm/trunk/utils/buildit/GNUmakefile llvm/trunk/utils/buildit/build_llvm Modified: llvm/trunk/utils/buildit/GNUmakefile URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/buildit/GNUmakefile?rev=46180&r1=46179&r2=46180&view=diff ============================================================================== --- llvm/trunk/utils/buildit/GNUmakefile (original) +++ llvm/trunk/utils/buildit/GNUmakefile Fri Jan 18 15:01:00 2008 @@ -41,6 +41,13 @@ LLVM_ASSERTIONS := no endif +# Default is optimized build. +ifeq ($(LLVM_DEBUG),1) +LLVM_OPTIMIZED := no +else +LLVM_OPTIMIZED := yes +endif + ifndef RC_ProjectSourceVersion RC_ProjectSourceVersion = 9999 endif @@ -54,7 +61,7 @@ $(SRC)/build_llvm "$(RC_ARCHS)" "$(TARGETS)" \ $(SRC) $(PREFIX) $(DSTROOT) $(SYMROOT) \ $(RC_ProjectSourceVersion) $(RC_ProjectSourceSubversion) \ - $(LLVM_ASSERTIONS) + $(LLVM_ASSERTIONS) $(LLVM_OPTIMIZED) # installhdrs does nothing, because the headers aren't useful until # the compiler is installed. Modified: llvm/trunk/utils/buildit/build_llvm URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/buildit/build_llvm?rev=46180&r1=46179&r2=46180&view=diff ============================================================================== --- llvm/trunk/utils/buildit/build_llvm (original) +++ llvm/trunk/utils/buildit/build_llvm Fri Jan 18 15:01:00 2008 @@ -44,6 +44,10 @@ # enabled in the LLVM libs/tools. LLVM_ASSERTIONS="$9" +# The tenth parameter is a yes/no that indicates whether this is an optimized +# build. +LLVM_OPTIMIZED="${10}" + # The current working directory is where the build will happen. It may already # contain a partial result of an interrupted build, in which case this script # will continue where it left off. @@ -55,19 +59,6 @@ # If the user has CC set in their environment unset it now unset CC -# The B&I build srcript (~rc/bin/buildit) accepts an '-othercflags' command-line -# flag, and captures the argument to that flag in $RC_NONARCH_CFLAGS (and -# mysteriously prepends '-pipe' thereto). We will allow this to override the -# default $CFLAGS and $CXXFLAGS. - -if [ "x$LLVM_DEBUG" == "x" ]; then - CFLAGS="-g -O2 ${RC_NONARCH_CFLAGS/-pipe/}" - OPTIMIZE_OPTS="ENABLE_OPTIMIZED=1" -else - CFLAGS="-g" - OPTIMIZE_OPTS= -fi - ################################################################################ # Run the build. @@ -85,7 +76,9 @@ if [ \! -f Makefile.config ]; then $SRC_DIR/llvm/configure --prefix=$DEST_DIR$DEST_ROOT \ - --enable-targets=x86,powerpc,cbe --enable-assertions=$LLVM_ASSERTIONS \ + --enable-targets=x86,powerpc,cbe \ + --enable-assertions=$LLVM_ASSERTIONS \ + --enable-optimized=$LLVM_OPTIMIZED \ || exit 1 fi From dpatel at apple.com Fri Jan 18 16:41:08 2008 From: dpatel at apple.com (Devang Patel) Date: Fri, 18 Jan 2008 22:41:08 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46181 - in /llvm-gcc-4.2/trunk/gcc: configure configure.ac Message-ID: <200801182241.m0IMf8e3027635@zion.cs.uiuc.edu> Author: dpatel Date: Fri Jan 18 16:41:06 2008 New Revision: 46181 URL: http://llvm.org/viewvc/llvm-project?rev=46181&view=rev Log: Do not raise error if system llvm (e.g. --enable-llvm=/usr/local) is used. Modified: llvm-gcc-4.2/trunk/gcc/configure llvm-gcc-4.2/trunk/gcc/configure.ac Modified: llvm-gcc-4.2/trunk/gcc/configure URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/configure?rev=46181&r1=46180&r2=46181&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/configure (original) +++ llvm-gcc-4.2/trunk/gcc/configure Fri Jan 18 16:41:06 2008 @@ -7407,8 +7407,7 @@ fi if test -x "$LLVMBASEPATH/bin/llc$EXEEXT"; then echo Found Installed LLVM Tree in $LLVMBASEPATH - fi - if test x$LLVMBUILDMODE == x; then + elif test x$LLVMBUILDMODE == x; then { { echo "$as_me:$LINENO: error: You must specify valid path to your LLVM tree with --enable-llvm=DIR" >&5 echo "$as_me: error: You must specify valid path to your LLVM tree with --enable-llvm=DIR" >&2;} { (exit 1); exit 1; }; } @@ -8034,7 +8033,7 @@ else ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'` - echo "configure:8037: version of makeinfo is $ac_prog_version" >&5 + echo "configure:8036: version of makeinfo is $ac_prog_version" >&5 case $ac_prog_version in '') gcc_cv_prog_makeinfo_modern=no;; 4.[4-9]*) Modified: llvm-gcc-4.2/trunk/gcc/configure.ac URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/configure.ac?rev=46181&r1=46180&r2=46181&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/configure.ac (original) +++ llvm-gcc-4.2/trunk/gcc/configure.ac Fri Jan 18 16:41:06 2008 @@ -892,8 +892,7 @@ fi if test -x "$LLVMBASEPATH/bin/llc$EXEEXT"; then echo Found Installed LLVM Tree in $LLVMBASEPATH - fi - if test x$LLVMBUILDMODE == x; then + elif test x$LLVMBUILDMODE == x; then AC_MSG_ERROR([You must specify valid path to your LLVM tree with --enable-llvm=DIR]) fi ], From dalej at apple.com Fri Jan 18 20:12:32 2008 From: dalej at apple.com (Dale Johannesen) Date: Fri, 18 Jan 2008 18:12:32 -0800 Subject: [llvm-commits] [llvm] r46088 - in /llvm/trunk: include/llvm/CodeGen/MachineModuleInfo.h lib/CodeGen/DwarfWriter.cpp lib/CodeGen/MachineModuleInfo.cpp In-Reply-To: <200801171031.35790.duncan.sands@math.u-psud.fr> References: <200801161959.m0GJxSPX014013@zion.cs.uiuc.edu> <200801171031.35790.duncan.sands@math.u-psud.fr> Message-ID: <91476297-FF33-4726-94CF-0E91E25FA1F0@apple.com> On Jan 17, 2008, at 1:31 AM, Duncan Sands wrote: > Hi Dale, > >> Do not mark EH tables no-dead-strip unless the >> associated function is so marked. > > can you please explain what this means? Dead stripping is a linktime optimization, where code not reachable from main is removed. Functions can be marked no-dead-strip (__attribute__((used)) in gcc) to prevent the linker from removing them, even though they aren't obviously reachable. On Darwin the EH tables do not have a magic association with the corresponding function; they're treated as separate symbols by the linker (and there are subtle differences between the Tiger and Leopard linkers, just to make things more interesting). Generally, storage class and visibility have to match between function and table so the linker does not pick a function/table combination from different files (which doesn't work). So, if a function is marked no-dead-strip, its table must be also. The bug here was that tables were being marked no- dead-strip when the function was not; since the tables have references to the functions, this resulted in the function being kept as well; and if the functions have references to undefined externals that don't exist anywhere, you get a linktime (or, in some circumstances, dynamic linktime) crash. (If I ran the universe, people with dead code that calls undefined externals would have to clean up their code. I don't.) > And is > there a testcase? Not now. This only affects Darwin (and now SPU, but I'm pretty sure this is the right thing there too), fwiw. > Thanks! > > D. From kremenek at apple.com Fri Jan 18 21:58:05 2008 From: kremenek at apple.com (Ted Kremenek) Date: Sat, 19 Jan 2008 03:58:05 -0000 Subject: [llvm-commits] [llvm] r46186 - /llvm/trunk/include/llvm/ADT/FoldingSet.h Message-ID: <200801190358.m0J3w5hP021080@zion.cs.uiuc.edu> Author: kremenek Date: Fri Jan 18 21:58:00 2008 New Revision: 46186 URL: http://llvm.org/viewvc/llvm-project?rev=46186&view=rev Log: Made 'profiling' of objects in a FoldingSet trait-based using FoldingSetTrait instead of always assuming that the stored objects had a method called 'Profile'. The default behavior is to dispatch to a 'Profile' method (as before), but via template specialization this behavior can now be overridden by clients. Added templated class 'FoldingSetNodeWrapper', a generic wrapper class that allows one to insert objects into a FoldingSet that do not directly inherit from FoldingSetNode. This is useful for inserting objects that do not always need to pay the overhead of inheriting from FoldingSetNode, or were designed with that behavior in mind. Modified: llvm/trunk/include/llvm/ADT/FoldingSet.h Modified: llvm/trunk/include/llvm/ADT/FoldingSet.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/FoldingSet.h?rev=46186&r1=46185&r2=46186&view=diff ============================================================================== --- llvm/trunk/include/llvm/ADT/FoldingSet.h (original) +++ llvm/trunk/include/llvm/ADT/FoldingSet.h Fri Jan 18 21:58:00 2008 @@ -226,6 +226,19 @@ template class FoldingSetIterator; //===----------------------------------------------------------------------===// +/// FoldingSetTrait - This trait class is used to define behavior of how +/// to "profile" (in the FoldingSet parlance) an object of a given type. +/// The default behavior is to invoke a 'Profile' method on an object, but +/// through template specialization the behavior can be tailored for specific +/// types. Combined with the FoldingSetNodeWrapper classs, one can add objects +/// to FoldingSets that were not originally designed to have that behavior. +/// +template struct FoldingSetTrait { + static inline void Profile(const T& X, FoldingSetNodeID& ID) { X.Profile(ID);} + static inline void Profile(T& X, FoldingSetNodeID& ID) { X.Profile(ID); } +}; + +//===----------------------------------------------------------------------===// /// FoldingSet - This template class is used to instantiate a specialized /// implementation of the folding set to the node class T. T must be a /// subclass of FoldingSetNode and implement a Profile function. @@ -236,7 +249,7 @@ /// way to convert nodes into a unique specifier. virtual void GetNodeProfile(NodeID &ID, Node *N) const { T *TN = static_cast(N); - TN->Profile(ID); + FoldingSetTrait::Profile(*TN,ID); } public: @@ -307,6 +320,45 @@ FoldingSetIterator tmp = *this; ++*this; return tmp; } }; + +//===----------------------------------------------------------------------===// +/// FoldingSetNodeWrapper - This template class is used to "wrap" arbitrary +/// types in an enclosing object so that they can be inserted into FoldingSets. +template +class FoldingSetNodeWrapper : public FoldingSetNode { + T data; +public: + FoldingSetNodeWrapper(const T& x) : data(x) {} + virtual ~FoldingSetNodeWrapper(); + + template + explicit FoldingSetNodeWrapper(const A1& a1) + : data(a1) {} + + template + explicit FoldingSetNodeWrapper(const A1& a1, const A2& a2) + : data(a1,a2) {} + + template + explicit FoldingSetNodeWrapper(const A1& a1, const A2& a2, const A3& a3) + : data(a1,a2,a3) {} + + template + explicit FoldingSetNodeWrapper(const A1& a1, const A2& a2, const A3& a3, + const A4& a4) + : data(a1,a2,a3,a4) {} + + template + explicit FoldingSetNodeWrapper(const A1& a1, const A2& a2, const A3& a3, + const A4& a4, const A5& a5) + : data(a1,a2,a3,a4,a5) {} + + + void Profile(FoldingSetNodeID& ID) { FoldingSetTrait::Profile(data, ID); } + + operator T&() { return data; } + operator const T&() const { return data; } +}; } // End of namespace llvm. From kremenek at apple.com Fri Jan 18 22:22:51 2008 From: kremenek at apple.com (Ted Kremenek) Date: Sat, 19 Jan 2008 04:22:51 -0000 Subject: [llvm-commits] [llvm] r46187 - in /llvm/trunk: include/llvm/ADT/FoldingSet.h lib/Support/FoldingSet.cpp Message-ID: <200801190422.m0J4Mrpp008667@zion.cs.uiuc.edu> Author: kremenek Date: Fri Jan 18 22:22:50 2008 New Revision: 46187 URL: http://llvm.org/viewvc/llvm-project?rev=46187&view=rev Log: Made 'FoldingSetNodeID' a proper class instead of a nested class in 'FoldingSetNodeImpl' (previously 'FoldingSetNodeID' was a typedef of 'FoldingSetNodeImpl::NodeID'). Why? Clients can now easily forward declare 'FoldingSetNodeID' without having to include FoldingSet.h. Modified: llvm/trunk/include/llvm/ADT/FoldingSet.h llvm/trunk/lib/Support/FoldingSet.cpp Modified: llvm/trunk/include/llvm/ADT/FoldingSet.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/FoldingSet.h?rev=46187&r1=46186&r2=46187&view=diff ============================================================================== --- llvm/trunk/include/llvm/ADT/FoldingSet.h (original) +++ llvm/trunk/include/llvm/ADT/FoldingSet.h Fri Jan 18 22:22:50 2008 @@ -96,8 +96,9 @@ /// bool WasRemoved = RemoveNode(N); /// /// The result indicates whether the node existed in the folding set. - - + +class FoldingSetNodeID; + //===----------------------------------------------------------------------===// /// FoldingSetImpl - Implements the folding set functionality. The main /// structure is an array of buckets. Each bucket is indexed by the hash of @@ -123,49 +124,6 @@ explicit FoldingSetImpl(unsigned Log2InitSize = 6); virtual ~FoldingSetImpl(); - // Forward declaration. - class Node; - - //===--------------------------------------------------------------------===// - /// NodeID - This class is used to gather all the unique data bits of a - /// node. When all the bits are gathered this class is used to produce a - /// hash value for the node. - /// - class NodeID { - /// Bits - Vector of all the data bits that make the node unique. - /// Use a SmallVector to avoid a heap allocation in the common case. - SmallVector Bits; - - public: - NodeID() {} - - /// getRawData - Return the ith entry in the Bits data. - /// - unsigned getRawData(unsigned i) const { - return Bits[i]; - } - - /// Add* - Add various data types to Bit data. - /// - void AddPointer(const void *Ptr); - void AddInteger(signed I); - void AddInteger(unsigned I); - void AddInteger(int64_t I); - void AddInteger(uint64_t I); - void AddFloat(float F); - void AddDouble(double D); - void AddAPFloat(const APFloat& apf); - void AddString(const std::string &String); - - /// ComputeHash - Compute a strong hash value for this NodeID, used to - /// lookup the node in the FoldingSetImpl. - unsigned ComputeHash() const; - - /// operator== - Used to compare two nodes to each other. - /// - bool operator==(const NodeID &RHS) const; - }; - //===--------------------------------------------------------------------===// /// Node - This class is used to maintain the singly linked bucket list in /// a folding set. @@ -196,7 +154,7 @@ /// FindNodeOrInsertPos - Look up the node specified by ID. If it exists, /// return it. If not, return the insertion token that will make insertion /// faster. - Node *FindNodeOrInsertPos(const NodeID &ID, void *&InsertPos); + Node *FindNodeOrInsertPos(const FoldingSetNodeID &ID, void *&InsertPos); /// InsertNode - Insert the specified node into the folding set, knowing that /// it is not already in the folding set. InsertPos must be obtained from @@ -216,13 +174,51 @@ /// GetNodeProfile - Instantiations of the FoldingSet template implement /// this function to gather data bits for the given node. - virtual void GetNodeProfile(NodeID &ID, Node *N) const = 0; + virtual void GetNodeProfile(FoldingSetNodeID &ID, Node *N) const = 0; }; -// Convenience types to hide the implementation of the folding set. -typedef FoldingSetImpl::Node FoldingSetNode; -typedef FoldingSetImpl::NodeID FoldingSetNodeID; +//===--------------------------------------------------------------------===// +/// FoldingSetNodeID - This class is used to gather all the unique data bits of +/// a node. When all the bits are gathered this class is used to produce a +/// hash value for the node. +/// +class FoldingSetNodeID { + /// Bits - Vector of all the data bits that make the node unique. + /// Use a SmallVector to avoid a heap allocation in the common case. + SmallVector Bits; + +public: + FoldingSetNodeID() {} + + /// getRawData - Return the ith entry in the Bits data. + /// + unsigned getRawData(unsigned i) const { + return Bits[i]; + } + + /// Add* - Add various data types to Bit data. + /// + void AddPointer(const void *Ptr); + void AddInteger(signed I); + void AddInteger(unsigned I); + void AddInteger(int64_t I); + void AddInteger(uint64_t I); + void AddFloat(float F); + void AddDouble(double D); + void AddAPFloat(const APFloat& apf); + void AddString(const std::string &String); + + /// ComputeHash - Compute a strong hash value for this FoldingSetNodeID, used + /// to lookup the node in the FoldingSetImpl. + unsigned ComputeHash() const; + + /// operator== - Used to compare two nodes to each other. + /// + bool operator==(const FoldingSetNodeID &RHS) const; +}; +// Convenience type to hide the implementation of the folding set. +typedef FoldingSetImpl::Node FoldingSetNode; template class FoldingSetIterator; //===----------------------------------------------------------------------===// @@ -247,7 +243,7 @@ private: /// GetNodeProfile - Each instantiatation of the FoldingSet needs to provide a /// way to convert nodes into a unique specifier. - virtual void GetNodeProfile(NodeID &ID, Node *N) const { + virtual void GetNodeProfile(FoldingSetNodeID &ID, Node *N) const { T *TN = static_cast(N); FoldingSetTrait::Profile(*TN,ID); } Modified: llvm/trunk/lib/Support/FoldingSet.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/FoldingSet.cpp?rev=46187&r1=46186&r2=46187&view=diff ============================================================================== --- llvm/trunk/lib/Support/FoldingSet.cpp (original) +++ llvm/trunk/lib/Support/FoldingSet.cpp Fri Jan 18 22:22:50 2008 @@ -21,11 +21,11 @@ using namespace llvm; //===----------------------------------------------------------------------===// -// FoldingSetImpl::NodeID Implementation +// FoldingSetNodeID Implementation /// Add* - Add various data types to Bit data. /// -void FoldingSetImpl::NodeID::AddPointer(const void *Ptr) { +void FoldingSetNodeID::AddPointer(const void *Ptr) { // Note: this adds pointers to the hash using sizes and endianness that // depend on the host. It doesn't matter however, because hashing on // pointer values in inherently unstable. Nothing should depend on the @@ -35,35 +35,35 @@ if (sizeof(intptr_t) > sizeof(unsigned)) Bits.push_back(unsigned(uint64_t(PtrI) >> 32)); } -void FoldingSetImpl::NodeID::AddInteger(signed I) { +void FoldingSetNodeID::AddInteger(signed I) { Bits.push_back(I); } -void FoldingSetImpl::NodeID::AddInteger(unsigned I) { +void FoldingSetNodeID::AddInteger(unsigned I) { Bits.push_back(I); } -void FoldingSetImpl::NodeID::AddInteger(int64_t I) { +void FoldingSetNodeID::AddInteger(int64_t I) { AddInteger((uint64_t)I); } -void FoldingSetImpl::NodeID::AddInteger(uint64_t I) { +void FoldingSetNodeID::AddInteger(uint64_t I) { Bits.push_back(unsigned(I)); // If the integer is small, encode it just as 32-bits. if ((uint64_t)(int)I != I) Bits.push_back(unsigned(I >> 32)); } -void FoldingSetImpl::NodeID::AddFloat(float F) { +void FoldingSetNodeID::AddFloat(float F) { Bits.push_back(FloatToBits(F)); } -void FoldingSetImpl::NodeID::AddDouble(double D) { +void FoldingSetNodeID::AddDouble(double D) { AddInteger(DoubleToBits(D)); } -void FoldingSetImpl::NodeID::AddAPFloat(const APFloat& apf) { +void FoldingSetNodeID::AddAPFloat(const APFloat& apf) { APInt api = apf.convertToAPInt(); const uint64_t *p = api.getRawData(); for (unsigned i=0; iSetNextInBucket(0); // Insert the node into the new bucket, after recomputing the hash. - NodeID ID; + FoldingSetNodeID ID; GetNodeProfile(ID, NodeInBucket); InsertNode(NodeInBucket, GetBucketFor(ID, Buckets, NumBuckets)); } @@ -221,7 +221,7 @@ /// FindNodeOrInsertPos - Look up the node specified by ID. If it exists, /// return it. If not, return the insertion token that will make insertion /// faster. -FoldingSetImpl::Node *FoldingSetImpl::FindNodeOrInsertPos(const NodeID &ID, +FoldingSetImpl::Node *FoldingSetImpl::FindNodeOrInsertPos(const FoldingSetNodeID &ID, void *&InsertPos) { void **Bucket = GetBucketFor(ID, Buckets, NumBuckets); void *Probe = *Bucket; @@ -229,7 +229,7 @@ InsertPos = 0; while (Node *NodeInBucket = GetNextPtr(Probe)) { - NodeID OtherID; + FoldingSetNodeID OtherID; GetNodeProfile(OtherID, NodeInBucket); if (OtherID == ID) return NodeInBucket; @@ -250,7 +250,7 @@ // Do we need to grow the hashtable? if (NumNodes+1 > NumBuckets*2) { GrowHashTable(); - NodeID ID; + FoldingSetNodeID ID; GetNodeProfile(ID, N); InsertPos = GetBucketFor(ID, Buckets, NumBuckets); } @@ -317,7 +317,7 @@ /// equal to the specified node, return it. Otherwise, insert 'N' and it /// instead. FoldingSetImpl::Node *FoldingSetImpl::GetOrInsertNode(FoldingSetImpl::Node *N) { - NodeID ID; + FoldingSetNodeID ID; GetNodeProfile(ID, N); void *IP; if (Node *E = FindNodeOrInsertPos(ID, IP)) From kremenek at apple.com Fri Jan 18 22:23:34 2008 From: kremenek at apple.com (Ted Kremenek) Date: Sat, 19 Jan 2008 04:23:34 -0000 Subject: [llvm-commits] [llvm] r46188 - in /llvm/trunk: include/llvm/ADT/APInt.h lib/Support/APInt.cpp Message-ID: <200801190423.m0J4NYlN008759@zion.cs.uiuc.edu> Author: kremenek Date: Fri Jan 18 22:23:33 2008 New Revision: 46188 URL: http://llvm.org/viewvc/llvm-project?rev=46188&view=rev Log: Added FoldingSet style 'profiling' support for APInt. Modified: llvm/trunk/include/llvm/ADT/APInt.h llvm/trunk/lib/Support/APInt.cpp Modified: llvm/trunk/include/llvm/ADT/APInt.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/APInt.h?rev=46188&r1=46187&r2=46188&view=diff ============================================================================== --- llvm/trunk/include/llvm/ADT/APInt.h (original) +++ llvm/trunk/include/llvm/ADT/APInt.h Fri Jan 18 22:23:33 2008 @@ -24,6 +24,7 @@ namespace llvm { class Serializer; class Deserializer; + class FoldingSetNodeID; /* An unsigned host type used as a single part of a multi-part bignum. */ @@ -210,6 +211,10 @@ /// for object deserialization (pair this with the static method Read). explicit APInt() : BitWidth(1) {} + /// Profile - Used to insert APInt objects, or objects that contain APInt + /// objects, into FoldingSets. + void Profile(FoldingSetNodeID& ID) const; + /// @brief Used by the Bitcode serializer to emit APInts to Bitcode. void Emit(Serializer& S) const; Modified: llvm/trunk/lib/Support/APInt.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/APInt.cpp?rev=46188&r1=46187&r2=46188&view=diff ============================================================================== --- llvm/trunk/lib/Support/APInt.cpp (original) +++ llvm/trunk/lib/Support/APInt.cpp Fri Jan 18 22:23:33 2008 @@ -14,6 +14,7 @@ #define DEBUG_TYPE "apint" #include "llvm/ADT/APInt.h" +#include "llvm/ADT/FoldingSet.h" #include "llvm/Support/Debug.h" #include "llvm/Support/MathExtras.h" #include @@ -24,7 +25,6 @@ using namespace llvm; - /// This enumeration just provides for internal constants used in this /// translation unit. enum { @@ -165,6 +165,18 @@ return clearUnusedBits(); } +/// Profile - This method 'profiles' an APInt for use with FoldingSet. +void APInt::Profile(FoldingSetNodeID& ID) const { + if (isSingleWord()) { + ID.AddInteger(VAL); + return; + } + + uint32_t NumWords = getNumWords(); + for (unsigned i = 0; i < NumWords; ++i) + ID.AddInteger(pVal[i]); +} + /// add_1 - This function adds a single "digit" integer, y, to the multiple /// "digit" integer array, x[]. x[] is modified to reflect the addition and /// 1 is returned if there is a carry out, otherwise 0 is returned. From kremenek at apple.com Fri Jan 18 22:31:13 2008 From: kremenek at apple.com (Ted Kremenek) Date: Sat, 19 Jan 2008 04:31:13 -0000 Subject: [llvm-commits] [llvm] r46189 - in /llvm/trunk: include/llvm/ADT/APSInt.h lib/Support/APSInt.cpp Message-ID: <200801190431.m0J4VDQP010030@zion.cs.uiuc.edu> Author: kremenek Date: Fri Jan 18 22:31:12 2008 New Revision: 46189 URL: http://llvm.org/viewvc/llvm-project?rev=46189&view=rev Log: Added FoldingSet style 'profiling' support for APSInt. Added: llvm/trunk/lib/Support/APSInt.cpp Modified: llvm/trunk/include/llvm/ADT/APSInt.h Modified: llvm/trunk/include/llvm/ADT/APSInt.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/APSInt.h?rev=46189&r1=46188&r2=46189&view=diff ============================================================================== --- llvm/trunk/include/llvm/ADT/APSInt.h (original) +++ llvm/trunk/include/llvm/ADT/APSInt.h Fri Jan 18 22:31:12 2008 @@ -125,6 +125,10 @@ assert(IsUnsigned == RHS.IsUnsigned && "Signedness mismatch!"); return IsUnsigned ? uge(RHS) : sge(RHS); } + + /// Profile - Used to insert APSInt objects, or objects that contain APSInt + /// objects, into FoldingSets. + void Profile(FoldingSetNodeID& ID) const; }; } // end namespace llvm Added: llvm/trunk/lib/Support/APSInt.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/APSInt.cpp?rev=46189&view=auto ============================================================================== --- llvm/trunk/lib/Support/APSInt.cpp (added) +++ llvm/trunk/lib/Support/APSInt.cpp Fri Jan 18 22:31:12 2008 @@ -0,0 +1,23 @@ +//===-- llvm/ADT/APSInt.cpp - Arbitrary Precision Signed Int ---*- C++ -*--===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file implements the APSInt class, which is a simple class that +// represents an arbitrary sized integer that knows its signedness. +// +//===----------------------------------------------------------------------===// + +#include "llvm/ADT/APSInt.h" +#include "llvm/ADT/FoldingSet.h" + +using namespace llvm; + +void APSInt::Profile(FoldingSetNodeID& ID) const { + ID.AddInteger((unsigned) (IsUnsigned ? 1 : 0)); + APInt::Profile(ID); +} From kremenek at apple.com Fri Jan 18 22:51:55 2008 From: kremenek at apple.com (Ted Kremenek) Date: Sat, 19 Jan 2008 04:51:55 -0000 Subject: [llvm-commits] [llvm] r46190 - /llvm/trunk/include/llvm/ADT/ImmutableSet.h Message-ID: <200801190451.m0J4ptip018754@zion.cs.uiuc.edu> Author: kremenek Date: Fri Jan 18 22:51:55 2008 New Revision: 46190 URL: http://llvm.org/viewvc/llvm-project?rev=46190&view=rev Log: Modified ImmutableSet/ImmutableMap to use FoldingSet profiling using FoldingSetTrait instead of directly calling a 'Profile' method. Modified: llvm/trunk/include/llvm/ADT/ImmutableSet.h Modified: llvm/trunk/include/llvm/ADT/ImmutableSet.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/ImmutableSet.h?rev=46190&r1=46189&r2=46190&view=diff ============================================================================== --- llvm/trunk/include/llvm/ADT/ImmutableSet.h (original) +++ llvm/trunk/include/llvm/ADT/ImmutableSet.h Fri Jan 18 22:51:55 2008 @@ -717,8 +717,8 @@ typedef const T& value_type_ref; static inline void Profile(FoldingSetNodeID& ID, value_type_ref X) { - X.Profile(ID); - } + FoldingSetTrait::Profile(X,ID); + } }; /// Profile traits for integers. From evan.cheng at apple.com Sat Jan 19 00:03:45 2008 From: evan.cheng at apple.com (Evan Cheng) Date: Sat, 19 Jan 2008 06:03:45 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46191 - in /llvm-gcc-4.2/trunk/gcc: config/i386/i386-protos.h config/i386/i386.c config/i386/i386.h config/i386/llvm-i386-target.h config/i386/llvm-i386.cpp llvm-abi.h Message-ID: <200801190603.m0J63mbf014637@zion.cs.uiuc.edu> Author: evancheng Date: Sat Jan 19 00:03:38 2008 New Revision: 46191 URL: http://llvm.org/viewvc/llvm-project?rev=46191&view=rev Log: Much improved x86-64 ABI compliance. Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386-protos.h llvm-gcc-4.2/trunk/gcc/config/i386/i386.c llvm-gcc-4.2/trunk/gcc/config/i386/i386.h llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp llvm-gcc-4.2/trunk/gcc/llvm-abi.h Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386-protos.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/i386-protos.h?rev=46191&r1=46190&r2=46191&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/i386-protos.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/i386-protos.h Sat Jan 19 00:03:38 2008 @@ -257,7 +257,13 @@ extern int asm_preferred_eh_data_format (int, int); /* LLVM LOCAL begin */ +#ifdef ENABLE_LLVM +#define MAX_CLASSES 4 enum machine_mode ix86_getNaturalModeForType(tree type); int ix86_HowToPassArgument(enum machine_mode mode, tree type, int in_return, int *int_nregs, int *sse_nregs); +int ix86_ClassifyArgument(enum machine_mode mode, tree type, + enum x86_64_reg_class classes[MAX_CLASSES], + int bit_offset); +#endif /* LLVM LOCAL end */ Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/i386.c?rev=46191&r1=46190&r2=46191&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/i386.c (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/i386.c Sat Jan 19 00:03:38 2008 @@ -1246,6 +1246,9 @@ static void i386_solaris_elf_named_section (const char *, unsigned int, tree) ATTRIBUTE_UNUSED; +/* LLVM LOCAL begin */ + +#ifndef ENABLE_LLVM /* Register class used for passing given 64bit part of the argument. These represent classes as documented by the PS ABI, with the exception of SSESF, SSEDF classes, that are basically SSE class, just gcc will @@ -1268,6 +1271,10 @@ X86_64_COMPLEX_X87_CLASS, X86_64_MEMORY_CLASS }; +#endif /* !ENABLE_LLVM */ + +/* LLVM LOCAL end */ + static const char * const x86_64_reg_class_name[] = { "no", "integer", "integerSI", "sse", "sseSF", "sseDF", "sseup", "x87", "x87up", "cplx87", "no" @@ -3263,9 +3270,16 @@ int offset = tree_low_cst (BINFO_OFFSET (base_binfo), 0) * 8; tree type = BINFO_TYPE (base_binfo); +/* LLVM local */ +#ifdef ENABLE_LLVM + num = classify_argument (type_natural_mode (type), + type, subclasses, + (offset + bit_offset) % 256); +#else num = classify_argument (TYPE_MODE (type), type, subclasses, (offset + bit_offset) % 256); +#endif if (!num) return 0; for (i = 0; i < num; i++) @@ -3301,10 +3315,18 @@ } else { +/* LLVM local */ +#ifdef ENABLE_LLVM + num = classify_argument (type_natural_mode (TREE_TYPE (field)), + TREE_TYPE (field), subclasses, + (int_bit_position (field) + + bit_offset) % 256); +#else num = classify_argument (TYPE_MODE (TREE_TYPE (field)), TREE_TYPE (field), subclasses, (int_bit_position (field) + bit_offset) % 256); +#endif if (!num) return 0; for (i = 0; i < num; i++) @@ -3323,8 +3345,14 @@ /* Arrays are handled as small records. */ { int num; +/* LLVM local */ +#ifdef ENABLE_LLVM + num = classify_argument (type_natural_mode (TREE_TYPE (type)), + TREE_TYPE (type), subclasses, bit_offset); +#else num = classify_argument (TYPE_MODE (TREE_TYPE (type)), TREE_TYPE (type), subclasses, bit_offset); +#endif if (!num) return 0; @@ -3356,9 +3384,16 @@ if (TREE_TYPE (field) == error_mark_node) continue; +/* LLVM local */ +#ifdef ENABLE_LLVM + num = classify_argument (type_natural_mode (TREE_TYPE (field)), + TREE_TYPE (field), subclasses, + bit_offset); +#else num = classify_argument (TYPE_MODE (TREE_TYPE (field)), TREE_TYPE (field), subclasses, bit_offset); +#endif if (!num) return 0; for (i = 0; i < num; i++) @@ -21554,10 +21589,16 @@ } int ix86_HowToPassArgument(enum machine_mode mode, tree type, int in_return, - int *int_nregs, int *sse_nregs) { + int *int_nregs, int *sse_nregs) { return examine_argument(mode, type, in_return, int_nregs, sse_nregs); } +int ix86_ClassifyArgument(enum machine_mode mode, tree type, + enum x86_64_reg_class classes[MAX_CLASSES], + int bit_offset) { + return classify_argument(mode, type, classes, bit_offset); +} + /* APPLE LOCAL end LLVM */ Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/i386.h?rev=46191&r1=46190&r2=46191&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/i386.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/i386.h Sat Jan 19 00:03:38 2008 @@ -34,6 +34,36 @@ ADDR_BEG, ADDR_END, PRINT_IREG, PRINT_SCALE, PRINT_B_I_S, and many that start with ASM_ or end in ASM_OP. */ +/* LLVM LOCAL begin */ + +#ifdef ENABLE_LLVM +/* Register class used for passing given 64bit part of the argument. + These represent classes as documented by the PS ABI, with the exception + of SSESF, SSEDF classes, that are basically SSE class, just gcc will + use SF or DFmode move instead of DImode to avoid reformatting penalties. + + Similarly we play games with INTEGERSI_CLASS to use cheaper SImode moves + whenever possible (upper half does contain padding). + */ +enum x86_64_reg_class + { + X86_64_NO_CLASS, + X86_64_INTEGER_CLASS, + X86_64_INTEGERSI_CLASS, + X86_64_SSE_CLASS, + X86_64_SSESF_CLASS, + X86_64_SSEDF_CLASS, + X86_64_SSEUP_CLASS, + X86_64_X87_CLASS, + X86_64_X87UP_CLASS, + X86_64_COMPLEX_X87_CLASS, + X86_64_MEMORY_CLASS + }; + +#endif /* ENABLE_LLVM */ + +/* LLVM LOCAL end */ + /* Define the specific costs for a given cpu */ struct processor_costs { Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h?rev=46191&r1=46190&r2=46191&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h Sat Jan 19 00:03:38 2008 @@ -67,5 +67,16 @@ #define LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) \ llvm_x86_should_pass_aggregate_in_memory(X) + +#ifdef LLVM_ABI_H +extern bool +llvm_x86_64_should_pass_aggregate_in_mixed_regs(tree, + std::vector&); + +#define LLVM_SHOULD_PASS_AGGREGATE_IN_MIXED_REGS(T, E) \ + (TARGET_64BIT && \ + llvm_x86_64_should_pass_aggregate_in_mixed_regs((T), (E))) +#endif /* LLVM_ABI_H */ + /* LLVM LOCAL end (ENTIRE FILE!) */ Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp?rev=46191&r1=46190&r2=46191&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Sat Jan 19 00:03:38 2008 @@ -26,6 +26,7 @@ #include "llvm-abi.h" #include "llvm-internal.h" +#include "llvm/DerivedTypes.h" #include "llvm/Instructions.h" #include "llvm/Intrinsics.h" #include "llvm/Module.h" @@ -661,25 +662,37 @@ } /* These are defined in i386.c */ +#define MAX_CLASSES 4 extern "C" enum machine_mode ix86_getNaturalModeForType(tree); extern "C" int ix86_HowToPassArgument(enum machine_mode, tree, int, int*, int*); +extern "C" int ix86_ClassifyArgument(enum machine_mode, tree, + enum x86_64_reg_class classes[MAX_CLASSES], int); /* Target hook for llvm-abi.h. It returns true if an aggregate of the specified type should be passed in memory. This is only called for x86-64. */ -static bool llvm_x86_64_should_pass_aggregate_in_memory(tree type, +static bool llvm_x86_64_should_pass_aggregate_in_memory(tree TreeType, enum machine_mode Mode){ int IntRegs, SSERegs; /* If ix86_HowToPassArgument return 0, then it's passed byval in memory.*/ - return !ix86_HowToPassArgument(Mode, type, 0, &IntRegs, &SSERegs); + return !ix86_HowToPassArgument(Mode, TreeType, 0, &IntRegs, &SSERegs); +} + +/* Returns true if all elements of the type are integer types. */ +static bool llvm_x86_is_all_integer_types(const Type *Ty) { + for (Type::subtype_iterator I = Ty->subtype_begin(), E = Ty->subtype_end(); + I != E; ++I) + if (!I->get()->isIntOrIntVector()) + return false; + return true; } /* Target hook for llvm-abi.h. It returns true if an aggregate of the specified type should be passed in memory. */ -bool llvm_x86_should_pass_aggregate_in_memory(tree type) { - enum machine_mode Mode = ix86_getNaturalModeForType(type); +bool llvm_x86_should_pass_aggregate_in_memory(tree TreeType) { + enum machine_mode Mode = ix86_getNaturalModeForType(TreeType); HOST_WIDE_INT Bytes = - (Mode == BLKmode) ? int_size_in_bytes(type) : (int) GET_MODE_SIZE(Mode); + (Mode == BLKmode) ? int_size_in_bytes(TreeType) : (int) GET_MODE_SIZE(Mode); // Zero sized array, struct, or class, not passed in memory. if (Bytes == 0) @@ -687,20 +700,101 @@ if (Bytes == GET_MODE_SIZE(SImode) || Bytes == GET_MODE_SIZE(DImode)) { // 32-bit or 64-bit and all elements are integers, not passed in memory. - bool AllIntegers = true; - const Type *Ty = ConvertType(type); - for (Type::subtype_iterator I = Ty->subtype_begin(), E = Ty->subtype_end(); - I != E; ++I) - if (!I->get()->isIntOrIntVector()) { - AllIntegers = false; - break; - } - if (AllIntegers) + const Type *Ty = ConvertType(TreeType); + if (llvm_x86_is_all_integer_types(Ty)) return false; } if (!TARGET_64BIT) return true; - return llvm_x86_64_should_pass_aggregate_in_memory(type, Mode); + return llvm_x86_64_should_pass_aggregate_in_memory(TreeType, Mode); +} + +/* Target hook for llvm-abi.h. It returns true if an aggregate of the + specified type should be passed in a number of registers of mixed types. + It also returns a vector of types that correspond to the registers used + for parameter passing. This is only called for x86-64. */ +bool +llvm_x86_64_should_pass_aggregate_in_mixed_regs(tree TreeType, + std::vector &Elts){ + enum x86_64_reg_class Class[MAX_CLASSES]; + enum machine_mode Mode = ix86_getNaturalModeForType(TreeType); + HOST_WIDE_INT Bytes = + (Mode == BLKmode) ? int_size_in_bytes(TreeType) : (int) GET_MODE_SIZE(Mode); + int NumClasses = ix86_ClassifyArgument(Mode, TreeType, Class, 0); + if (!NumClasses) + return false; + + for (int i = 0; i < NumClasses; ++i) { + switch (Class[i]) { + case X86_64_INTEGER_CLASS: + case X86_64_INTEGERSI_CLASS: + Elts.push_back(Type::Int64Ty); + break; + case X86_64_SSE_CLASS: + // If it's a SSE class argument, then one of the followings are possible: + // 1. 1 x SSE, size is 8: 1 x Double. + // 2. 1 x SSE + 1 x SSEUP, size is 16: 1 x <4 x i32>, <4 x f32>, + // <2 x i64>, or <2 x f64>. + // 3. 1 x SSE + 1 x SSESF, size is 12: 1 x Double, 1 x Float. + // 4. 2 x SSE, size is 16: 2 x Double. + if (NumClasses == 1) { + if (Bytes == 8) + Elts.push_back(Type::DoubleTy); + else + assert(0 && "Not yet handled!"); + } else if (NumClasses == 2) { + if (Class[i+1] == X86_64_SSEUP_CLASS) { + const Type *Ty = ConvertType(TreeType); + if (const StructType *STy = dyn_cast(Ty)) + // Look pass the struct wrapper. + if (STy->getNumElements() == 1) + Ty = STy->getElementType(0); + if (const VectorType *VTy = dyn_cast(Ty)) { + if (VTy->getNumElements() == 2) { + if (VTy->getElementType()->isInteger()) + Elts.push_back(VectorType::get(Type::Int64Ty, 2)); + else + Elts.push_back(VectorType::get(Type::DoubleTy, 2)); + } else { + assert(VTy->getNumElements() == 4); + if (VTy->getElementType()->isInteger()) + Elts.push_back(VectorType::get(Type::Int32Ty, 4)); + else + Elts.push_back(VectorType::get(Type::FloatTy, 4)); + } + } else if (llvm_x86_is_all_integer_types(Ty)) + Elts.push_back(VectorType::get(Type::Int32Ty, 4)); + else + Elts.push_back(VectorType::get(Type::FloatTy, 4)); + } else if (Class[i+1] == X86_64_SSESF_CLASS) { + assert(Bytes == 12 && "Not yet handled!"); + Elts.push_back(Type::DoubleTy); + Elts.push_back(Type::FloatTy); + } else if (Class[i+1] == X86_64_SSE_CLASS) { + Elts.push_back(Type::DoubleTy); + Elts.push_back(Type::DoubleTy); + } else + assert(0 && "Not yet handled!"); + ++i; // Already handled the next one. + } else + assert(0 && "Not yet handled!"); + break; + case X86_64_SSESF_CLASS: + Elts.push_back(Type::FloatTy); + break; + case X86_64_SSEDF_CLASS: + Elts.push_back(Type::DoubleTy); + break; + case X86_64_X87_CLASS: + case X86_64_X87UP_CLASS: + case X86_64_COMPLEX_X87_CLASS: + return false; + case X86_64_NO_CLASS: + return false; + default: assert(0 && "Unexpected register class!"); + } + } + return true; } /* LLVM LOCAL end (ENTIRE FILE!) */ Modified: llvm-gcc-4.2/trunk/gcc/llvm-abi.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-abi.h?rev=46191&r1=46190&r2=46191&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-abi.h (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-abi.h Sat Jan 19 00:03:38 2008 @@ -120,6 +120,23 @@ } } +// LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR - Return true if this aggregate +// value should be passed by value, i.e. passing its address with the byval +// attribute bit set. The default is false. +#ifndef LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) +#define LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) \ + false +#endif + +// LLVM_SHOULD_PASS_AGGREGATE_IN_MIXED_REGS - Return true if this aggregate +// value should be passed in a mixture of integer, floating point, and vector +// registers. The routine should also return by reference a vector of the +// types of the registers being used. The default is false. +#ifndef LLVM_SHOULD_PASS_AGGREGATE_IN_MIXED_REGS(T, E) +#define LLVM_SHOULD_PASS_AGGREGATE_IN_MIXED_REGS(T, E) \ + false +#endif + // LLVM_SHOULD_PASS_AGGREGATE_IN_INTEGER_REGS - Return true if this aggregate // value should be passed in integer registers. By default, we do this for all // values that are not single-element structs. This ensures that things like @@ -130,14 +147,6 @@ !isSingleElementStructOrArray(X) #endif -// LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR - Return true if this aggregate -// value should be passed by value, i.e. passing its address with the byval -// attribute bit set. The default is false. -#ifndef LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR -#define LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) \ - false -#endif - /// DefaultABI - This class implements the default LLVM ABI where structures are /// passed by decimating them into individual components and unions are passed /// by passing the largest member of the union. @@ -212,38 +221,43 @@ C.HandleByValArgument(Ty, type); if (Attributes) *Attributes |= ParamAttr::ByVal; - } else if (LLVM_SHOULD_PASS_AGGREGATE_IN_INTEGER_REGS(type)) { - PassInIntegerRegisters(type, Ty); - } else if (TREE_CODE(type) == RECORD_TYPE) { - for (tree Field = TYPE_FIELDS(type); Field; Field = TREE_CHAIN(Field)) - if (TREE_CODE(Field) == FIELD_DECL) { - unsigned FNo = GetFieldIndex(Field); - assert(FNo != ~0U && "Case not handled yet!"); - - C.EnterField(FNo, Ty); - HandleArgument(getDeclaredType(Field)); - C.ExitField(); - } - } else if (TREE_CODE(type) == COMPLEX_TYPE) { - C.EnterField(0, Ty); - HandleArgument(TREE_TYPE(type)); - C.ExitField(); - C.EnterField(1, Ty); - HandleArgument(TREE_TYPE(type)); - C.ExitField(); - } else if ((TREE_CODE(type) == UNION_TYPE) || - (TREE_CODE(type) == QUAL_UNION_TYPE)) { - HandleUnion(type); - } else if (TREE_CODE(type) == ARRAY_TYPE) { - const ArrayType *ATy = cast(Ty); - for (unsigned i = 0, e = ATy->getNumElements(); i != e; ++i) { - C.EnterField(i, Ty); + } else { + std::vector Elts; + if (LLVM_SHOULD_PASS_AGGREGATE_IN_MIXED_REGS(type, Elts)) { + PassInMixedRegisters(type, Ty, Elts); + } else if (LLVM_SHOULD_PASS_AGGREGATE_IN_INTEGER_REGS(type)) { + PassInIntegerRegisters(type, Ty); + } else if (TREE_CODE(type) == RECORD_TYPE) { + for (tree Field = TYPE_FIELDS(type); Field; Field = TREE_CHAIN(Field)) + if (TREE_CODE(Field) == FIELD_DECL) { + unsigned FNo = GetFieldIndex(Field); + assert(FNo != ~0U && "Case not handled yet!"); + + C.EnterField(FNo, Ty); + HandleArgument(getDeclaredType(Field)); + C.ExitField(); + } + } else if (TREE_CODE(type) == COMPLEX_TYPE) { + C.EnterField(0, Ty); + HandleArgument(TREE_TYPE(type)); + C.ExitField(); + C.EnterField(1, Ty); HandleArgument(TREE_TYPE(type)); C.ExitField(); + } else if ((TREE_CODE(type) == UNION_TYPE) || + (TREE_CODE(type) == QUAL_UNION_TYPE)) { + HandleUnion(type); + } else if (TREE_CODE(type) == ARRAY_TYPE) { + const ArrayType *ATy = cast(Ty); + for (unsigned i = 0, e = ATy->getNumElements(); i != e; ++i) { + C.EnterField(i, Ty); + HandleArgument(TREE_TYPE(type)); + C.ExitField(); + } + } else { + assert(0 && "unknown aggregate type!"); + abort(); } - } else { - assert(0 && "unknown aggregate type!"); - abort(); } } @@ -352,6 +366,19 @@ C.ExitField(); } } + + /// PassInMixedRegisters - Given an aggregate value that should be passed in + /// mixed integer, floating point, and vector registers, convert it to a + /// structure containing the specified struct elements in. + void PassInMixedRegisters(tree type, const Type *Ty, + std::vector &Elts) { + const StructType *STy = StructType::get(Elts, false); + for (unsigned i = 0, e = Elts.size(); i != e; ++i) { + C.EnterField(i, STy); + C.HandleScalarArgument(Elts[i], 0); + C.ExitField(); + } + } }; /// TheLLVMABI - This can be defined by targets if they want total control over From baldrick at free.fr Sat Jan 19 02:47:09 2008 From: baldrick at free.fr (Duncan Sands) Date: Sat, 19 Jan 2008 09:47:09 +0100 Subject: [llvm-commits] [llvm-gcc-4.2] r46164 - in /llvm-gcc-4.2/trunk/gcc/config/i386: llvm-i386-target.h llvm-i386.cpp In-Reply-To: <200801181835.m0IIZJMU009764@zion.cs.uiuc.edu> References: <200801181835.m0IIZJMU009764@zion.cs.uiuc.edu> Message-ID: <200801190947.09887.baldrick@free.fr> > i32 / i64 all integer structs are not passed byval. What about integer arrays? Best wishes, Duncan. From baldrick at free.fr Sat Jan 19 02:52:38 2008 From: baldrick at free.fr (Duncan Sands) Date: Sat, 19 Jan 2008 09:52:38 +0100 Subject: [llvm-commits] [llvm-gcc-4.2] r46191 - in /llvm-gcc-4.2/trunk/gcc: config/i386/i386-protos.h config/i386/i386.c config/i386/i386.h config/i386/llvm-i386-target.h config/i386/llvm-i386.cpp llvm-abi.h In-Reply-To: <200801190603.m0J63mbf014637@zion.cs.uiuc.edu> References: <200801190603.m0J63mbf014637@zion.cs.uiuc.edu> Message-ID: <200801190952.41140.baldrick@free.fr> Hi Evan, > +#ifndef LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) the (X) should not be on the end of an ifdef/ifndef line. Otherwise you get compiler warnings. > +#ifndef LLVM_SHOULD_PASS_AGGREGATE_IN_MIXED_REGS(T, E) Likewise. Best wishes, Duncan. From baldrick at free.fr Sat Jan 19 10:42:16 2008 From: baldrick at free.fr (Duncan Sands) Date: Sat, 19 Jan 2008 16:42:16 -0000 Subject: [llvm-commits] [llvm] r46192 - /llvm/trunk/lib/Target/X86/X86CallingConv.td Message-ID: <200801191642.m0JGgGaB024597@zion.cs.uiuc.edu> Author: baldrick Date: Sat Jan 19 10:42:10 2008 New Revision: 46192 URL: http://llvm.org/viewvc/llvm-project?rev=46192&view=rev Log: Need to handle any 'nest' parameter before integer parameters, since otherwise it won't be passed in the right register. With this change trampolines work on x86-64 (thanks to Luke Guest for providing access to an x86-64 box). Modified: llvm/trunk/lib/Target/X86/X86CallingConv.td Modified: llvm/trunk/lib/Target/X86/X86CallingConv.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86CallingConv.td?rev=46192&r1=46191&r2=46192&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86CallingConv.td (original) +++ llvm/trunk/lib/Target/X86/X86CallingConv.td Sat Jan 19 10:42:10 2008 @@ -101,7 +101,10 @@ // Promote i8/i16 arguments to i32. CCIfType<[i8, i16], CCPromoteToType>, - + + // The 'nest' parameter, if any, is passed in R10. + CCIfNest>, + // The first 6 integer arguments are passed in integer registers. CCIfType<[i32], CCAssignToReg<[EDI, ESI, EDX, ECX, R8D, R9D]>>, CCIfType<[i64], CCAssignToReg<[RDI, RSI, RDX, RCX, R8 , R9 ]>>, @@ -114,9 +117,6 @@ CCIfType<[v8i8, v4i16, v2i32, v1i64], CCAssignToReg<[RDI, RSI, RDX, RCX, R8 , R9 ]>>, - // The 'nest' parameter, if any, is passed in R10. - CCIfNest>, - // Integer/FP values get stored in stack slots that are 8 bytes in size and // 8-byte aligned if there are no more registers to hold them. CCIfType<[i32, i64, f32, f64], CCAssignToStack<8, 8>>, @@ -140,7 +140,10 @@ // Promote i8/i16 arguments to i32. CCIfType<[i8, i16], CCPromoteToType>, - + + // The 'nest' parameter, if any, is passed in R10. + CCIfNest>, + // The first 6 integer arguments are passed in integer registers. CCIfType<[i32], CCAssignToReg<[EDI, ESI, EDX, ECX, R8D]>>, CCIfType<[i64], CCAssignToReg<[RDI, RSI, RDX, RCX, R8]>>, @@ -153,9 +156,6 @@ CCIfType<[v8i8, v4i16, v2i32, v1i64], CCAssignToReg<[RDI, RSI, RDX, RCX, R8]>>, - // The 'nest' parameter, if any, is passed in R10. - CCIfNest>, - // Integer/FP values get stored in stack slots that are 8 bytes in size and // 8-byte aligned if there are no more registers to hold them. CCIfType<[i32, i64, f32, f64], CCAssignToStack<8, 8>>, From kremenek at apple.com Sat Jan 19 11:21:44 2008 From: kremenek at apple.com (Ted Kremenek) Date: Sat, 19 Jan 2008 17:21:44 -0000 Subject: [llvm-commits] [llvm] r46193 - /llvm/trunk/include/llvm/ADT/APInt.h Message-ID: <200801191721.m0JHLiuS028445@zion.cs.uiuc.edu> Author: kremenek Date: Sat Jan 19 11:21:43 2008 New Revision: 46193 URL: http://llvm.org/viewvc/llvm-project?rev=46193&view=rev Log: Changed argument name for 'Profile' method to potentially fix a name conflict reported in pr1929 (http://llvm.org/PR1929). Modified: llvm/trunk/include/llvm/ADT/APInt.h Modified: llvm/trunk/include/llvm/ADT/APInt.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/APInt.h?rev=46193&r1=46192&r2=46193&view=diff ============================================================================== --- llvm/trunk/include/llvm/ADT/APInt.h (original) +++ llvm/trunk/include/llvm/ADT/APInt.h Sat Jan 19 11:21:43 2008 @@ -213,7 +213,7 @@ /// Profile - Used to insert APInt objects, or objects that contain APInt /// objects, into FoldingSets. - void Profile(FoldingSetNodeID& ID) const; + void Profile(FoldingSetNodeID& id) const; /// @brief Used by the Bitcode serializer to emit APInts to Bitcode. void Emit(Serializer& S) const; From asl at math.spbu.ru Sat Jan 19 18:22:07 2008 From: asl at math.spbu.ru (Anton Korobeynikov) Date: Sun, 20 Jan 2008 00:22:07 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r46194 - /llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Message-ID: <200801200022.m0K0M7hY020056@zion.cs.uiuc.edu> Author: asl Date: Sat Jan 19 18:22:06 2008 New Revision: 46194 URL: http://llvm.org/viewvc/llvm-project?rev=46194&view=rev Log: Propagate r40011 from 4.2 to 4.0. This also fixes PR1852 Modified: llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Modified: llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp?rev=46194&r1=46193&r2=46194&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Sat Jan 19 18:22:06 2008 @@ -4991,6 +4991,7 @@ } bool TreeToLLVM::EmitBuiltinEHReturnDataRegno(tree exp, Value *&Result) { +#ifdef EH_RETURN_DATA_REGNO tree arglist = TREE_OPERAND(exp, 1); if (!validate_arglist(arglist, INTEGER_TYPE, VOID_TYPE)) @@ -5012,6 +5013,7 @@ iwhich = DWARF_FRAME_REGNUM (iwhich); Result = ConstantInt::get(ConvertType(TREE_TYPE(exp)), iwhich); +#endif return true; } @@ -5041,6 +5043,7 @@ } bool TreeToLLVM::EmitBuiltinInitDwarfRegSizes(tree exp, Value *&Result) { +#ifdef DWARF2_UNWIND_INFO unsigned int i; bool wrote_return_column = false; static bool reg_modes_initialized = false; @@ -5094,6 +5097,8 @@ Builder.CreateStore(Size, Builder.CreateGEP(Addr, Idx, "tmp"), false); #endif +#endif /* DWARF2_UNWIND_INFO */ + // TODO: the RS6000 target needs extra initialization [gcc changeset 122468]. return true; From dalej at apple.com Sat Jan 19 19:18:38 2008 From: dalej at apple.com (Dale Johannesen) Date: Sun, 20 Jan 2008 01:18:38 -0000 Subject: [llvm-commits] [llvm] r46195 - /llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Message-ID: <200801200118.m0K1IdUM023573@zion.cs.uiuc.edu> Author: johannes Date: Sat Jan 19 19:18:38 2008 New Revision: 46195 URL: http://llvm.org/viewvc/llvm-project?rev=46195&view=rev Log: Do not generate a FP_ROUND of f64 to f64. Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=46195&r1=46194&r2=46195&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Sat Jan 19 19:18:38 2008 @@ -3608,10 +3608,11 @@ MVT::ValueType SrcVT = Op.getOperand(0).getValueType(); if (TLI.getConvertAction(SrcVT, DstVT) == TargetLowering::Expand) { if (SrcVT == MVT::ppcf128) { - SDOperand Lo, Hi; - ExpandOp(Node->getOperand(0), Lo, Hi); + SDOperand Lo; + ExpandOp(Node->getOperand(0), Lo, Result); // Round it the rest of the way (e.g. to f32) if needed. - Result = DAG.getNode(ISD::FP_ROUND, DstVT, Hi, Op.getOperand(1)); + if (DstVT!=MVT::f64) + Result = DAG.getNode(ISD::FP_ROUND, DstVT, Result, Op.getOperand(1)); break; } // The only other way we can lower this is to turn it into a STORE, From baldrick at free.fr Sun Jan 20 04:49:28 2008 From: baldrick at free.fr (Duncan Sands) Date: Sun, 20 Jan 2008 10:49:28 -0000 Subject: [llvm-commits] [llvm] r46197 - /llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp Message-ID: <200801201049.m0KAnUSs031159@zion.cs.uiuc.edu> Author: baldrick Date: Sun Jan 20 04:49:23 2008 New Revision: 46197 URL: http://llvm.org/viewvc/llvm-project?rev=46197&view=rev Log: Initializing an unsigned with ~0UL causes the compiler to complain on x86-64 (gcc 4.1). Use ~0U instead. Modified: llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp Modified: llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp?rev=46197&r1=46196&r2=46197&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp Sun Jan 20 04:49:23 2008 @@ -211,11 +211,11 @@ Value* depPointer = dependency->getPointerOperand(); const Type* depType = dependency->getOperand(0)->getType(); unsigned depPointerSize = TD.getTypeStoreSize(depType); - + // Check for aliasing - AliasAnalysis::AliasResult A = AA.alias(F->getPointerOperand(), ~0UL, + AliasAnalysis::AliasResult A = AA.alias(F->getPointerOperand(), ~0U, depPointer, depPointerSize); - + if (A == AliasAnalysis::MustAlias) { // Remove it! MD.removeInstruction(dependency); @@ -324,13 +324,13 @@ deadPointers.clear(); return MadeChange; } - + // Get size information for the alloca - unsigned pointerSize = ~0UL; + unsigned pointerSize = ~0U; if (ConstantInt* C = dyn_cast((*I)->getArraySize())) pointerSize = C->getZExtValue() * \ TD.getABITypeSize((*I)->getAllocatedType()); - + // See if the call site touches it AliasAnalysis::ModRefResult A = AA.getModRefInfo(CS, *I, pointerSize); @@ -392,14 +392,14 @@ for (SmallPtrSet::iterator I = deadPointers.begin(), E = deadPointers.end(); I != E; ++I) { // Get size information for the alloca - unsigned pointerSize = ~0UL; + unsigned pointerSize = ~0U; if (ConstantInt* C = dyn_cast((*I)->getArraySize())) pointerSize = C->getZExtValue() * \ TD.getABITypeSize((*I)->getAllocatedType()); - + // See if this pointer could alias it AliasAnalysis::AliasResult A = AA.alias(*I, pointerSize, - killPointer, ~0UL); + killPointer, ~0U); // If it must-alias and a store, we can delete it if (isa(BBI) && A == AliasAnalysis::MustAlias) { From asl at math.spbu.ru Sun Jan 20 07:58:17 2008 From: asl at math.spbu.ru (Anton Korobeynikov) Date: Sun, 20 Jan 2008 13:58:17 -0000 Subject: [llvm-commits] [llvm] r46198 - /llvm/trunk/lib/Target/X86/X86Subtarget.cpp Message-ID: <200801201358.m0KDwHGo009827@zion.cs.uiuc.edu> Author: asl Date: Sun Jan 20 07:58:16 2008 New Revision: 46198 URL: http://llvm.org/viewvc/llvm-project?rev=46198&view=rev Log: Enable PIC codegen on x86-64/linux Modified: llvm/trunk/lib/Target/X86/X86Subtarget.cpp Modified: llvm/trunk/lib/Target/X86/X86Subtarget.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86Subtarget.cpp?rev=46198&r1=46197&r2=46198&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86Subtarget.cpp (original) +++ llvm/trunk/lib/Target/X86/X86Subtarget.cpp Sun Jan 20 07:58:16 2008 @@ -41,7 +41,7 @@ return (!isDirectCall && (GV->hasWeakLinkage() || GV->hasLinkOnceLinkage() || (GV->isDeclaration() && !GV->hasNotBeenReadFromBitcode()))); - } else if (TM.getRelocationModel() == Reloc::PIC_ && isPICStyleGOT()) { + } else if (isTargetELF()) { // Extra load is needed for all non-statics. return (!isDirectCall && (GV->isDeclaration() || !GV->hasInternalLinkage())); From asl at math.spbu.ru Sun Jan 20 07:59:37 2008 From: asl at math.spbu.ru (Anton Korobeynikov) Date: Sun, 20 Jan 2008 13:59:37 -0000 Subject: [llvm-commits] [llvm] r46199 - /llvm/trunk/lib/Target/X86/X86ATTAsmPrinter.cpp Message-ID: <200801201359.m0KDxbSn009911@zion.cs.uiuc.edu> Author: asl Date: Sun Jan 20 07:59:37 2008 New Revision: 46199 URL: http://llvm.org/viewvc/llvm-project?rev=46199&view=rev Log: Remove Darwin'ism Modified: llvm/trunk/lib/Target/X86/X86ATTAsmPrinter.cpp Modified: llvm/trunk/lib/Target/X86/X86ATTAsmPrinter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ATTAsmPrinter.cpp?rev=46199&r1=46198&r2=46199&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ATTAsmPrinter.cpp (original) +++ llvm/trunk/lib/Target/X86/X86ATTAsmPrinter.cpp Sun Jan 20 07:59:37 2008 @@ -363,10 +363,7 @@ O << "@GOTOFF"; } else if (Subtarget->isPICStyleRIPRel() && !NotRIPRel && TM.getRelocationModel() != Reloc::Static) { - if ((GV->isDeclaration() || - GV->hasWeakLinkage() || - GV->hasLinkOnceLinkage()) && - TM.getRelocationModel() != Reloc::Static) + if (Subtarget->GVRequiresExtraLoad(GV, TM, false)) O << "@GOTPCREL"; if (needCloseParen) { From asl at math.spbu.ru Sun Jan 20 08:00:07 2008 From: asl at math.spbu.ru (Anton Korobeynikov) Date: Sun, 20 Jan 2008 14:00:07 -0000 Subject: [llvm-commits] [llvm] r46200 - /llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp Message-ID: <200801201400.m0KE07uW009950@zion.cs.uiuc.edu> Author: asl Date: Sun Jan 20 08:00:07 2008 New Revision: 46200 URL: http://llvm.org/viewvc/llvm-project?rev=46200&view=rev Log: Honour ByVal parameter attribute for name decoration Modified: llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp Modified: llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp?rev=46200&r1=46199&r2=46200&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp (original) +++ llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp Sun Jan 20 08:00:07 2008 @@ -25,6 +25,7 @@ #include "llvm/Constants.h" #include "llvm/Module.h" #include "llvm/DerivedTypes.h" +#include "llvm/ParameterAttributes.h" #include "llvm/Type.h" #include "llvm/Assembly/Writer.h" #include "llvm/Support/Mangler.h" @@ -48,11 +49,19 @@ return Info; } + unsigned argNum = 1; for (Function::const_arg_iterator AI = F->arg_begin(), AE = F->arg_end(); - AI != AE; ++AI) + AI != AE; ++AI, ++argNum) { + const Type* Ty = AI->getType(); + + // 'Dereference' type in case of byval parameter attribute + if (F->paramHasAttr(argNum, ParamAttr::ByVal)) + Ty = cast(Ty)->getElementType(); + // Size should be aligned to DWORD boundary - Size += ((TD->getABITypeSize(AI->getType()) + 3)/4)*4; - + Size += ((TD->getABITypeSize(Ty) + 3)/4)*4; + } + // We're not supporting tooooo huge arguments :) Info.setBytesToPopOnReturn((unsigned int)Size); return Info; From baldrick at free.fr Sun Jan 20 08:16:19 2008 From: baldrick at free.fr (Duncan Sands) Date: Sun, 20 Jan 2008 14:16:19 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46201 - /llvm-gcc-4.2/trunk/gcc/ada/utils.c Message-ID: <200801201416.m0KEGJwE011319@zion.cs.uiuc.edu> Author: baldrick Date: Sun Jan 20 08:16:18 2008 New Revision: 46201 URL: http://llvm.org/viewvc/llvm-project?rev=46201&view=rev Log: In a qualified union, all fields are at the same offset, and their decl_qualifier's must be examined in order. Sorting them by offset is thus (a) not needed, and (b) potentially harmful, since it may reorder them. Modified: llvm-gcc-4.2/trunk/gcc/ada/utils.c Modified: llvm-gcc-4.2/trunk/gcc/ada/utils.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/ada/utils.c?rev=46201&r1=46200&r2=46201&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/ada/utils.c (original) +++ llvm-gcc-4.2/trunk/gcc/ada/utils.c Sun Jan 20 08:16:18 2008 @@ -735,7 +735,9 @@ for (i = 0, field = fieldlist; field; field = TREE_CHAIN (field), i++) gnu_arr[i] = field; - qsort (gnu_arr, len, sizeof (tree), compare_field_bitpos); + /* The order of fields in a qualified union does matter. */ + if (code != QUAL_UNION_TYPE) + qsort (gnu_arr, len, sizeof (tree), compare_field_bitpos); /* Put the fields in the list in order of increasing position, which means we start from the end. */ From baldrick at free.fr Sun Jan 20 08:25:55 2008 From: baldrick at free.fr (Duncan Sands) Date: Sun, 20 Jan 2008 14:25:55 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r46202 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Message-ID: <200801201425.m0KEPupD012722@zion.cs.uiuc.edu> Author: baldrick Date: Sun Jan 20 08:25:55 2008 New Revision: 46202 URL: http://llvm.org/viewvc/llvm-project?rev=46202&view=rev Log: Ensure that bitfields continue to work once we convert integers into the apint corresponding to the precision. This results in i36 and other curious types when working with bitfields. The problem with these are that (1) not all bits can be loaded when loading an i36 (because the precision may not be a multiple of 8), and (2) not all bytes can be reached with an i36, because advancing an i36* will in typically increment it by 8 bytes. Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=46202&r1=46201&r2=46202&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Sun Jan 20 08:25:55 2008 @@ -1158,7 +1158,7 @@ } /// CastToFPType - Cast the specified value to the specified type assuming -/// that the value and type or floating point +/// that the value and type are floating point. Value *TreeToLLVM::CastToFPType(Value *V, const Type* Ty) { unsigned SrcBits = V->getType()->getPrimitiveSizeInBits(); unsigned DstBits = Ty->getPrimitiveSizeInBits(); @@ -5176,6 +5176,9 @@ } if (isBitfield(FieldDecl)) { + // If this is a bitfield, the declared type must be an integral type. + assert(FieldTy->isInteger() && "Invalid bitfield"); + assert(DECL_SIZE(FieldDecl) && TREE_CODE(DECL_SIZE(FieldDecl)) == INTEGER_CST && "Variable sized bitfield?"); @@ -5184,30 +5187,28 @@ const Type *LLVMFieldTy = cast(FieldPtr->getType())->getElementType(); - // If this is a bitfield, the declared type must be an integral type. - // If the field result is a bool, cast to a ubyte instead. It is not - // possible to access all bits of a memory object with a bool (only the low - // bit) but it is possible to access them with a byte. - if (FieldTy == Type::Int1Ty) - FieldTy = Type::Int8Ty; - assert(FieldTy->isInteger() && "Invalid bitfield"); - // If the LLVM notion of the field type contains the entire bitfield being // accessed, use the LLVM type. This avoids pointer casts and other bad // things that are difficult to clean up later. This occurs in cases like // "struct X{ unsigned long long x:50; unsigned y:2; }" when accessing y. // We want to access the field as a ulong, not as a uint with an offset. if (LLVMFieldTy->isInteger() && - LLVMFieldTy->getPrimitiveSizeInBits() >= BitStart + BitfieldSize) + LLVMFieldTy->getPrimitiveSizeInBits() >= BitStart + BitfieldSize && + LLVMFieldTy->getPrimitiveSizeInBits() == + TD.getABITypeSizeInBits(LLVMFieldTy)) FieldTy = LLVMFieldTy; + else + // If the field result type T is a bool or some other curiously sized + // integer type, then not all bits may be accessible by advancing a T* + // and loading through it. For example, if the result type is i1 then + // only the first bit in each byte would be loaded. Even if T is byte + // sized like an i24 there may be trouble: incrementing a T* will move + // the position by 32 bits not 24, leaving the upper 8 of those 32 bits + // inaccessible. Avoid this by rounding up the size appropriately. + FieldTy = IntegerType::get(TD.getABITypeSizeInBits(FieldTy)); - // We are now loading/storing through a casted pointer type, whose - // signedness depends on the signedness of the field. Force the field to - // be unsigned. This solves performance problems where you have, for - // example: struct { int A:1; unsigned B:2; }; Consider a store to A then - // a store to B. In this case, without this conversion, you'd have a - // store through an int*, followed by a load from a uint*. Forcing them - // both to uint* allows the store to be forwarded to the load. + assert(FieldTy->getPrimitiveSizeInBits() == + TD.getABITypeSizeInBits(FieldTy) && "Field type not sequential!"); // If this is a bitfield, the field may span multiple fields in the LLVM // type. As such, cast the pointer to be a pointer to the declared type. @@ -5282,6 +5283,9 @@ assert(BitSize <= ValueSizeInBits && "ValTy isn't large enough to hold the value loaded!"); + assert(ValueSizeInBits == TD.getABITypeSizeInBits(ValTy) && + "FIXME: BIT_FIELD_REF logic is broken for non-round types"); + // BIT_FIELD_REF values can have BitStart values that are quite large. We // know that the thing we are loading is ValueSizeInBits large. If BitStart // is larger than ValueSizeInBits, bump the pointer over to where it should From baldrick at free.fr Sun Jan 20 10:51:47 2008 From: baldrick at free.fr (Duncan Sands) Date: Sun, 20 Jan 2008 16:51:47 -0000 Subject: [llvm-commits] [llvm] r46203 - /llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp Message-ID: <200801201651.m0KGplPR027279@zion.cs.uiuc.edu> Author: baldrick Date: Sun Jan 20 10:51:46 2008 New Revision: 46203 URL: http://llvm.org/viewvc/llvm-project?rev=46203&view=rev Log: Make sure the caller doesn't use freed memory. Fixes PR1935. Modified: llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp Modified: llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp?rev=46203&r1=46202&r2=46203&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp Sun Jan 20 10:51:46 2008 @@ -401,8 +401,10 @@ } // If we removed all uses, nuke the cast. - if (CI->use_empty()) + if (CI->use_empty()) { CI->eraseFromParent(); + MadeChange = true; + } return MadeChange; } From dpatel at apple.com Sun Jan 20 11:23:47 2008 From: dpatel at apple.com (Devang Patel) Date: Sun, 20 Jan 2008 09:23:47 -0800 Subject: [llvm-commits] [llvm] r46088 - in /llvm/trunk: include/llvm/CodeGen/MachineModuleInfo.h lib/CodeGen/DwarfWriter.cpp lib/CodeGen/MachineModuleInfo.cpp In-Reply-To: <91476297-FF33-4726-94CF-0E91E25FA1F0@apple.com> References: <200801161959.m0GJxSPX014013@zion.cs.uiuc.edu> <200801171031.35790.duncan.sands@math.u-psud.fr> <91476297-FF33-4726-94CF-0E91E25FA1F0@apple.com> Message-ID: <2E8A2943-C961-490F-A73D-19C99DB16AB2@apple.com> On Jan 18, 2008, at 6:12 PM, Dale Johannesen wrote: > > On Jan 17, 2008, at 1:31 AM, Duncan Sands wrote: > >> Hi Dale, >> >>> Do not mark EH tables no-dead-strip unless the >>> associated function is so marked. >> >> can you please explain what this means? > > Dead stripping is a linktime optimization, where code not reachable > from main is removed. This optimization is done by Darwin linker and it is not related to LLVM LTO. When LLVM LTO is used, LTO takes advantage of this linker optimization but that is orthogonal to this bug. > Functions can be marked no-dead-strip > (__attribute__((used)) in gcc) to prevent the linker from removing > them, even though they aren't obviously reachable. > > On Darwin the EH tables do not have a magic association with the > corresponding function; they're treated as separate symbols by the > linker (and there are subtle differences between the Tiger and Leopard > linkers, just to make things more interesting). Generally, storage > class and visibility have to match between function and table so the > linker does not pick a function/table combination from different files > (which doesn't work). So, if a function is marked no-dead-strip, its > table must be also. The bug here was that tables were being marked > no- > dead-strip when the function was not; since the tables have references > to the functions, this resulted in the function being kept as well; > and if the functions have references to undefined externals that don't > exist anywhere, you get a linktime (or, in some circumstances, dynamic > linktime) crash. (If I ran the universe, people with dead code that > calls undefined externals would have to clean up their code. I > don't.) > >> And is >> there a testcase? > > Not now. This only affects Darwin (and now SPU, but I'm pretty sure > this is the right thing there too), fwiw. > >> Thanks! >> >> D. > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From dalej at apple.com Sun Jan 20 19:00:35 2008 From: dalej at apple.com (Dale Johannesen) Date: Mon, 21 Jan 2008 01:00:35 -0000 Subject: [llvm-commits] [llvm] r46204 - /llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Message-ID: <200801210100.m0L10Zui029610@zion.cs.uiuc.edu> Author: johannes Date: Sun Jan 20 19:00:34 2008 New Revision: 46204 URL: http://llvm.org/viewvc/llvm-project?rev=46204&view=rev Log: Move DAG-changing code out of #ifndef NDEBUG. Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp?rev=46204&r1=46203&r2=46204&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Sun Jan 20 19:00:34 2008 @@ -1919,7 +1919,6 @@ MVT::isFloatingPoint(N1.getValueType()) && MVT::getSizeInBits(VT) <= MVT::getSizeInBits(N1.getValueType()) && isa(N2) && "Invalid FP_ROUND!"); - if (N1.getValueType() == VT) return N1; // noop conversion. break; case ISD::AssertSext: case ISD::AssertZext: @@ -2122,6 +2121,9 @@ if (N2C && N2C->getValue() == 0) return N1; break; + case ISD::FP_ROUND: + if (N1.getValueType() == VT) return N1; // noop conversion. + break; case ISD::FP_ROUND_INREG: if (cast(N2)->getVT() == VT) return N1; // Not actually rounding. break;