From evan.cheng at apple.com Mon Nov 5 00:46:45 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Mon, 05 Nov 2007 06:46:45 -0000 Subject: [llvm-commits] [llvm] r43700 - in /llvm/trunk: lib/CodeGen/SimpleRegisterCoalescing.cpp test/CodeGen/PowerPC/2007-11-04-CoalescerCrash.ll Message-ID: <200711050646.lA56kjo7031572@zion.cs.uiuc.edu> Author: evancheng Date: Mon Nov 5 00:46:45 2007 New Revision: 43700 URL: http://llvm.org/viewvc/llvm-project?rev=43700&view=rev Log: Skip over deleted val#'s. Added: llvm/trunk/test/CodeGen/PowerPC/2007-11-04-CoalescerCrash.ll Modified: llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp Modified: llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp?rev=43700&r1=43699&r2=43700&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp (original) +++ llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp Mon Nov 5 00:46:45 2007 @@ -805,7 +805,7 @@ i != e; ++i) { VNInfo *VNI = *i; unsigned ValSrcReg = VNI->reg; - if (ValSrcReg == 0) // Src not defined by a copy? + if (VNI->def == ~1U ||ValSrcReg == 0) // Src not defined by a copy? continue; // DstReg is known to be a register in the LHS interval. If the src is @@ -823,7 +823,7 @@ i != e; ++i) { VNInfo *VNI = *i; unsigned ValSrcReg = VNI->reg; - if (ValSrcReg == 0) // Src not defined by a copy? + if (VNI->def == ~1U || ValSrcReg == 0) // Src not defined by a copy? continue; // DstReg is known to be a register in the RHS interval. If the src is Added: llvm/trunk/test/CodeGen/PowerPC/2007-11-04-CoalescerCrash.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/PowerPC/2007-11-04-CoalescerCrash.ll?rev=43700&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/PowerPC/2007-11-04-CoalescerCrash.ll (added) +++ llvm/trunk/test/CodeGen/PowerPC/2007-11-04-CoalescerCrash.ll Mon Nov 5 00:46:45 2007 @@ -0,0 +1,148 @@ +; RUN: llvm-as < %s | llc -mtriple=powerpc-apple-darwin + + %struct.HDescriptor = type <{ i32, i32 }> + +declare void @bcopy(i8*, i8*, i32) + +define i32 @main(i32 %argc, i8** %argv) { +entry: + br i1 false, label %bb31, label %bb + +bb: ; preds = %entry + ret i32 -6 + +bb31: ; preds = %entry + switch i32 0, label %bb189 [ + i32 73, label %cond_next209 + i32 74, label %bb74 + i32 77, label %bb57 + i32 78, label %cond_next209 + i32 85, label %cond_next209 + i32 97, label %cond_next209 + i32 100, label %cond_next209 + i32 107, label %cond_next209 + i32 109, label %bb57 + i32 112, label %bb43 + i32 115, label %cond_next209 + i32 117, label %bb51 + ] + +bb43: ; preds = %bb31 + br i1 false, label %cond_true48, label %cond_true200.critedge2117 + +cond_true48: ; preds = %bb43 + br i1 false, label %cond_next372, label %AllDone + +bb51: ; preds = %bb31 + ret i32 0 + +bb57: ; preds = %bb31, %bb31 + ret i32 0 + +bb74: ; preds = %bb31 + ret i32 0 + +bb189: ; preds = %bb31 + ret i32 0 + +cond_true200.critedge2117: ; preds = %bb43 + ret i32 0 + +cond_next209: ; preds = %bb31, %bb31, %bb31, %bb31, %bb31, %bb31, %bb31 + ret i32 0 + +cond_next372: ; preds = %cond_true48 + switch i32 0, label %bb1728 [ + i32 73, label %bb1723 + i32 74, label %cond_true1700 + i32 78, label %bb1718 + i32 85, label %bb1713 + i32 97, label %bb1620 + i32 107, label %AllDone + i32 112, label %cond_next423 + i32 117, label %cond_next1453 + ] + +cond_next423: ; preds = %cond_next372 + switch i16 0, label %cond_next691 [ + i16 18475, label %cond_next807 + i16 18520, label %cond_next807 + ] + +cond_next691: ; preds = %cond_next423 + ret i32 0 + +cond_next807: ; preds = %cond_next423, %cond_next423 + switch i16 0, label %cond_true1192 [ + i16 18475, label %cond_next21.i + i16 18520, label %cond_next21.i + ] + +cond_next21.i: ; preds = %cond_next807, %cond_next807 + br i1 false, label %cond_next934, label %free.i + +free.i: ; preds = %cond_next21.i + ret i32 0 + +cond_next934: ; preds = %bb1005, %cond_next21.i + %listsize.1 = phi i32 [ 0, %bb1005 ], [ 64, %cond_next21.i ] ; [#uses=1] + %catalogExtents.2 = phi %struct.HDescriptor* [ %catalogExtents.1.reg2mem.1, %bb1005 ], [ null, %cond_next21.i ] ; <%struct.HDescriptor*> [#uses=3] + br i1 false, label %cond_next942, label %Return1020 + +cond_next942: ; preds = %cond_next934 + br i1 false, label %bb1005, label %bb947 + +bb947: ; preds = %cond_next971, %cond_next942 + %indvar = phi i32 [ 0, %cond_next942 ], [ %indvar.next2140, %cond_next971 ] ; [#uses=2] + %catalogExtents.1.reg2mem.0 = phi %struct.HDescriptor* [ %catalogExtents.2, %cond_next942 ], [ %tmp977978, %cond_next971 ] ; <%struct.HDescriptor*> [#uses=1] + %extents.0.reg2mem.0 = phi %struct.HDescriptor* [ null, %cond_next942 ], [ %tmp977978, %cond_next971 ] ; <%struct.HDescriptor*> [#uses=1] + br i1 false, label %cond_next971, label %Return1020 + +cond_next971: ; preds = %bb947 + %tmp = shl i32 %indvar, 6 ; [#uses=1] + %listsize.0.reg2mem.0 = add i32 %tmp, %listsize.1 ; [#uses=1] + %tmp973 = add i32 %listsize.0.reg2mem.0, 64 ; [#uses=1] + %tmp974975 = bitcast %struct.HDescriptor* %extents.0.reg2mem.0 to i8* ; [#uses=1] + %tmp977 = call i8* @realloc( i8* %tmp974975, i32 %tmp973 ) ; [#uses=1] + %tmp977978 = bitcast i8* %tmp977 to %struct.HDescriptor* ; <%struct.HDescriptor*> [#uses=3] + call void @bcopy( i8* null, i8* null, i32 64 ) + %indvar.next2140 = add i32 %indvar, 1 ; [#uses=1] + br i1 false, label %bb1005, label %bb947 + +bb1005: ; preds = %cond_next971, %cond_next942 + %catalogExtents.1.reg2mem.1 = phi %struct.HDescriptor* [ %catalogExtents.2, %cond_next942 ], [ %tmp977978, %cond_next971 ] ; <%struct.HDescriptor*> [#uses=2] + br i1 false, label %Return1020, label %cond_next934 + +Return1020: ; preds = %bb1005, %bb947, %cond_next934 + %catalogExtents.3 = phi %struct.HDescriptor* [ %catalogExtents.1.reg2mem.0, %bb947 ], [ %catalogExtents.2, %cond_next934 ], [ %catalogExtents.1.reg2mem.1, %bb1005 ] ; <%struct.HDescriptor*> [#uses=0] + ret i32 0 + +cond_true1192: ; preds = %cond_next807 + ret i32 0 + +cond_next1453: ; preds = %cond_next372 + ret i32 0 + +bb1620: ; preds = %cond_next372 + ret i32 0 + +cond_true1700: ; preds = %cond_next372 + ret i32 0 + +bb1713: ; preds = %cond_next372 + ret i32 0 + +bb1718: ; preds = %cond_next372 + ret i32 0 + +bb1723: ; preds = %cond_next372 + ret i32 0 + +bb1728: ; preds = %cond_next372 + ret i32 -6 + +AllDone: ; preds = %cond_next372, %cond_true48 + ret i32 0 +} + +declare i8* @realloc(i8*, i32) From sabre at nondot.org Mon Nov 5 01:00:55 2007 From: sabre at nondot.org (Chris Lattner) Date: Mon, 05 Nov 2007 07:00:55 -0000 Subject: [llvm-commits] [llvm] r43701 - /llvm/trunk/docs/tutorial/LangImpl8.html Message-ID: <200711050700.lA570tqH032172@zion.cs.uiuc.edu> Author: lattner Date: Mon Nov 5 01:00:54 2007 New Revision: 43701 URL: http://llvm.org/viewvc/llvm-project?rev=43701&view=rev Log: finish the tutorial, yaay. comments and feedback welcome. Modified: llvm/trunk/docs/tutorial/LangImpl8.html Modified: llvm/trunk/docs/tutorial/LangImpl8.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl8.html?rev=43701&r1=43700&r2=43701&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl8.html (original) +++ llvm/trunk/docs/tutorial/LangImpl8.html Mon Nov 5 01:00:54 2007 @@ -3,7 +3,8 @@ - Kaleidoscope: Conclusion, ideas for extensions, and other useful tidbits + Kaleidoscope: Conclusion, ideas for extensions, and other useful + tidbits @@ -88,7 +89,7 @@ straight-forward. The best way to understand it is to compile some C/C++ code with "llvm-gcc -g -O0" and taking a look at what it produces. -
  • exception handlingsupport - LLVM supports generation of exception handling support - LLVM supports generation of zero cost exceptions which interoperate with code compiled in other languages. You could also generate code by implicitly making every function return an error value and checking it. You @@ -99,6 +100,14 @@ geometric programming, ... - Really, there is no end of crazy features that you can add to the language.
  • +
  • unusual domains - We've been talking about applying LLVM to a domain +that many people are interested in: building a compiler for a specific language. +However, there are many other domains that can use compiler technology that are +not typically considered. For example, LLVM has been used to implement OpenGL +graphics acceleration, translate C++ code to ActionScript, and many other +cute and clever things. Maybe you will be the first to JIT compile a regular +expression interpreter into native code with LLVM?
  • +

    @@ -118,12 +127,197 @@ +

    + + +
    + +

    We have a couple common questions about code in the LLVM IR form, lets just +get these out of the way right now shall we?

    + +
    + + + + + +
    + +

    Kaleidoscope is an example of a "portable language": any program written in +Kaleidoscope will work the same way on any target that it runs on. Many other +languages have this property, e.g. lisp, java, haskell, javascript, python, etc +(note that while these languages are portable, not all their libraries are).

    + +

    One nice aspect of LLVM is that it is often capable of preserving language +independence in the IR: you can take the LLVM IR for a Kaleidoscope-compiled +program and run it on any target that LLVM supports, even emitting C code and +compiling that on targets that LLVM doesn't support natively. You can trivially +tell that the Kaleidoscope compiler generates target-independent code because it +never queries for any target-specific information when generating code.

    + +

    The fact that LLVM provides a compact target-independent representation for +code gets a lot of people excited. Unfortunately, these people are usually +thinking about C or a language from the C family when they are asking questions +about language portability. I say "unfortunately", because there is really no +way to make (fully general) C code portable, other than shipping the source code +around (and of course, C source code is not actually portable in general +either - ever port a really old application from 32- to 64-bits?).

    + +

    The problem with C (again, in its full generality) is that it is heavily +laden with target specific assumptions. As one simple example, the preprocessor +often destructively removes target-independence from the code when it processes +the input text:

    + +
    +
    +#ifdef __i386__
    +  int X = 1;
    +#else
    +  int X = 42;
    +#endif
    +
    +
    + +

    While it is possible to engineer more and more complex solutions to problems +like this, it cannot be solved in full generality in a way better than shipping +the actual source code.

    + +

    That said, there are interesting subsets of C that can be made portable. If +you are willing to fix primitive types to a fixed size (say int = 32-bits, +and long = 64-bits), don't care about ABI compatibility with existing binaries, +and are willing to give up some other minor features, you can have portable +code. This can even make real sense for specialized domains such as an +in-kernel language.

    + +
    + + + + + +
    + +

    Many of the languages above are also "safe" languages: it is impossible for +a program written in Java to corrupt its address space and crash the process. +Safety is an interesting property that requires a combination of language +design, runtime support, and often operating system support.

    + +

    It is certainly possible to implement a safe language in LLVM, but LLVM IR +does not itself guarantee safety. The LLVM IR allows unsafe pointer casts, +use after free bugs, buffer over-runs, and a variety of other problems. Safety +needs to be implemented as a layer on top of LLVM and, conveniently, several +groups have investigated this. Ask on the llvmdev mailing +list if you are interested in more details.

    + +
    + + + + + +
    + +

    One thing about LLVM that turns off many people is that it does not solve all +the world's problems in one system (sorry 'world hunger', someone else will have +to solve you some other day). One specific complaint is that people perceive +LLVM as being incapable of performing high-level language-specific optimization: +LLVM "loses too much information".

    + +

    Unfortunately, this is really not the place to give you a full and unified +version of "Chris Lattner's theory of compiler design". Instead, I'll make a +few observations:

    + +

    First, you're right that LLVM does lose information. For example, as of this +writing, there is no way to distinguish in the LLVM IR whether an SSA-value came +from a C "int" or a C "long" on an ILP32 machine (other than debug info). Both +get compiled down to an 'i32' value and the information about what it came from +is lost. The more general issue here is that the LLVM type system uses +"structural equivalence" instead of "name equivalence". Another place this +surprises people is if you have two types in a high-level language that have the +same structure (e.g. two different structs that have a single int field): these +types will compile down into a single LLVM type and it will be impossible to +tell what it came from.

    + +

    Second, while LLVM does lose information, LLVM is not a fixed target: we +continue to enhance and improve it in many different ways. In addition to +adding new features (LLVM did not always support exceptions or debug info), we +also extend the IR to capture important information for optimization (e.g. +whether an argument is sign or zero extended, information about pointers +aliasing, etc. Many of the enhancements are user-driven: people want LLVM to +do some specific feature, so they go ahead and extend it to do so.

    + +

    Third, it is certainly possible to add language-specific +optimizations, and you have a number of choices in how to do it. As one trivial +example, it is possible to add language-specific optimization passes that +"known" things about code compiled for a language. In the case of the C family, +there is an optimziation pass that "knows" about the standard C library +functions. If you call "exit(0)" in main(), it knows that it is safe to +optimize that into "return 0;" for example, because C specifies what the 'exit' +function does.

    + +

    In addition to simple library knowledge, it is possible to embed a variety of +other language-specific information into the LLVM IR. If you have a specific +need and run into a wall, please bring the topic up on the llvmdev list. At the +very worst, you can always treat LLVM as if it were a "dumb code generator" and +implement the high-level optimizations you desire in your front-end on the +language-specific AST. +

    + +
    + +
    -

    +

    There is a variety of useful tips and tricks that you come to know after +working on/with LLVM that aren't obvious at first glance. Instead of letting +everyone rediscover them, this section talks about some of these issues.

    + +
    + + + + + +
    + +

    One interesting thing that comes up if you are trying to keep the code +generated by your compiler "target independent" is that you often need to know +the size of some LLVM type or the offset of some field in an llvm structure. +For example, you might need to pass the size of a type into a function that +allocates memory.

    + +

    Unfortunately, this can vary widely across targets: for example the width of +a pointer is trivially target-specific. However, there is a clever +way to use the getelementptr instruction that allows you to compute this +in a portable way.

    + +
    + + + + + +
    + +

    Some languages want to explicitly manage their stack frames, often so that +they are garbage collected or to allow easy implementation of closures. There +are often better ways to implement these features than explicit stack frames, +but LLVM +does support them if you want. It requires your front-end to convert the +code into Continuation +Passing Style and use of tail calls (which LLVM also supports).

    From sabre at nondot.org Mon Nov 5 01:02:49 2007 From: sabre at nondot.org (Chris Lattner) Date: Mon, 05 Nov 2007 07:02:49 -0000 Subject: [llvm-commits] [llvm] r43702 - /llvm/trunk/docs/tutorial/LangImpl5.html Message-ID: <200711050702.lA572ntg032273@zion.cs.uiuc.edu> Author: lattner Date: Mon Nov 5 01:02:49 2007 New Revision: 43702 URL: http://llvm.org/viewvc/llvm-project?rev=43702&view=rev Log: add a link. Modified: llvm/trunk/docs/tutorial/LangImpl5.html Modified: llvm/trunk/docs/tutorial/LangImpl5.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl5.html?rev=43702&r1=43701&r2=43702&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl5.html (original) +++ llvm/trunk/docs/tutorial/LangImpl5.html Mon Nov 5 01:02:49 2007 @@ -303,7 +303,8 @@ in this case. -

    At a future point in this tutorial ("mutable variables"), we'll talk about #1 +

    In Chapter 7 of this tutorial ("mutable +variables"), we'll talk about #1 in depth. For now, just believe me that you don't need SSA construction to handle them. For #2, you have the choice of using the techniques that we will describe for #1, or you can insert Phi nodes directly if convenient. In this From evan.cheng at apple.com Mon Nov 5 01:30:01 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Mon, 05 Nov 2007 07:30:01 -0000 Subject: [llvm-commits] [llvm] r43703 - in /llvm/trunk/lib/Target/X86: X86RegisterInfo.cpp X86RegisterInfo.h Message-ID: <200711050730.lA57U12W001083@zion.cs.uiuc.edu> Author: evancheng Date: Mon Nov 5 01:30:01 2007 New Revision: 43703 URL: http://llvm.org/viewvc/llvm-project?rev=43703&view=rev Log: Use movups to spill / restore SSE registers on targets where stacks alignment is less than 16. This is a temporary solution until dynamic stack alignment is implemented. Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp llvm/trunk/lib/Target/X86/X86RegisterInfo.h Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp?rev=43703&r1=43702&r2=43703&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp (original) +++ llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp Mon Nov 5 01:30:01 2007 @@ -55,6 +55,7 @@ // Cache some information. const X86Subtarget *Subtarget = &TM.getSubtarget(); Is64Bit = Subtarget->is64Bit(); + StackAlign = TM.getFrameInfo()->getStackAlignment(); if (Is64Bit) { SlotSize = 8; StackPtr = X86::RSP; @@ -761,7 +762,8 @@ return MIB; } -static unsigned getStoreRegOpcode(const TargetRegisterClass *RC) { +static unsigned getStoreRegOpcode(const TargetRegisterClass *RC, + unsigned StackAlign) { unsigned Opc = 0; if (RC == &X86::GR64RegClass) { Opc = X86::MOV64mr; @@ -786,7 +788,9 @@ } else if (RC == &X86::FR64RegClass) { Opc = X86::MOVSDmr; } else if (RC == &X86::VR128RegClass) { - Opc = X86::MOVAPSmr; + // FIXME: Use movaps once we are capable of selectively + // aligning functions that spill SSE registers on 16-byte boundaries. + Opc = StackAlign >= 16 ? X86::MOVAPSmr : X86::MOVUPSmr; } else if (RC == &X86::VR64RegClass) { Opc = X86::MMX_MOVQ64mr; } else { @@ -801,7 +805,7 @@ MachineBasicBlock::iterator MI, unsigned SrcReg, int FrameIdx, const TargetRegisterClass *RC) const { - unsigned Opc = getStoreRegOpcode(RC); + unsigned Opc = getStoreRegOpcode(RC, StackAlign); addFrameReference(BuildMI(MBB, MI, TII.get(Opc)), FrameIdx) .addReg(SrcReg, false, false, true); } @@ -810,7 +814,7 @@ SmallVectorImpl &Addr, const TargetRegisterClass *RC, SmallVectorImpl &NewMIs) const { - unsigned Opc = getStoreRegOpcode(RC); + unsigned Opc = getStoreRegOpcode(RC, StackAlign); MachineInstrBuilder MIB = BuildMI(TII.get(Opc)); for (unsigned i = 0, e = Addr.size(); i != e; ++i) MIB = X86InstrAddOperand(MIB, Addr[i]); @@ -818,7 +822,8 @@ NewMIs.push_back(MIB); } -static unsigned getLoadRegOpcode(const TargetRegisterClass *RC) { +static unsigned getLoadRegOpcode(const TargetRegisterClass *RC, + unsigned StackAlign) { unsigned Opc = 0; if (RC == &X86::GR64RegClass) { Opc = X86::MOV64rm; @@ -843,7 +848,9 @@ } else if (RC == &X86::FR64RegClass) { Opc = X86::MOVSDrm; } else if (RC == &X86::VR128RegClass) { - Opc = X86::MOVAPSrm; + // FIXME: Use movaps once we are capable of selectively + // aligning functions that spill SSE registers on 16-byte boundaries. + Opc = StackAlign >= 16 ? X86::MOVAPSrm : X86::MOVUPSrm; } else if (RC == &X86::VR64RegClass) { Opc = X86::MMX_MOVQ64rm; } else { @@ -858,7 +865,7 @@ MachineBasicBlock::iterator MI, unsigned DestReg, int FrameIdx, const TargetRegisterClass *RC) const{ - unsigned Opc = getLoadRegOpcode(RC); + unsigned Opc = getLoadRegOpcode(RC, StackAlign); addFrameReference(BuildMI(MBB, MI, TII.get(Opc), DestReg), FrameIdx); } @@ -866,7 +873,7 @@ SmallVectorImpl &Addr, const TargetRegisterClass *RC, SmallVectorImpl &NewMIs) const { - unsigned Opc = getLoadRegOpcode(RC); + unsigned Opc = getLoadRegOpcode(RC, StackAlign); MachineInstrBuilder MIB = BuildMI(TII.get(Opc), DestReg); for (unsigned i = 0, e = Addr.size(); i != e; ++i) MIB = X86InstrAddOperand(MIB, Addr[i]); @@ -1284,7 +1291,7 @@ SDNode *Load = 0; if (FoldedLoad) { MVT::ValueType VT = *RC->vt_begin(); - Load = DAG.getTargetNode(getLoadRegOpcode(RC), VT, MVT::Other, + Load = DAG.getTargetNode(getLoadRegOpcode(RC, StackAlign), VT, MVT::Other, &AddrOps[0], AddrOps.size()); NewNodes.push_back(Load); } @@ -1314,7 +1321,7 @@ AddrOps.pop_back(); AddrOps.push_back(SDOperand(NewNode, 0)); AddrOps.push_back(Chain); - SDNode *Store = DAG.getTargetNode(getStoreRegOpcode(DstRC), + SDNode *Store = DAG.getTargetNode(getStoreRegOpcode(DstRC, StackAlign), MVT::Other, &AddrOps[0], AddrOps.size()); NewNodes.push_back(Store); } @@ -1446,8 +1453,7 @@ // We need to keep the stack aligned properly. To do this, we round the // amount of space needed for the outgoing arguments up to the next // alignment boundary. - unsigned Align = MF.getTarget().getFrameInfo()->getStackAlignment(); - Amount = (Amount+Align-1)/Align*Align; + Amount = (Amount+StackAlign-1)/StackAlign*StackAlign; MachineInstr *New = 0; if (Old->getOpcode() == X86::ADJCALLSTACKDOWN) { @@ -1666,7 +1672,6 @@ void X86RegisterInfo::emitPrologue(MachineFunction &MF) const { MachineBasicBlock &MBB = MF.front(); // Prolog goes in entry BB MachineFrameInfo *MFI = MF.getFrameInfo(); - unsigned Align = MF.getTarget().getFrameInfo()->getStackAlignment(); const Function* Fn = MF.getFunction(); const X86Subtarget* Subtarget = &MF.getTarget().getSubtarget(); MachineModuleInfo *MMI = MFI->getMachineModuleInfo(); @@ -1842,10 +1847,10 @@ if (Fn->hasExternalLinkage() && Fn->getName() == "main" && Subtarget->isTargetCygMing()) { BuildMI(MBB, MBBI, TII.get(X86::AND32ri), X86::ESP) - .addReg(X86::ESP).addImm(-Align); + .addReg(X86::ESP).addImm(-StackAlign); // Probe the stack - BuildMI(MBB, MBBI, TII.get(X86::MOV32ri), X86::EAX).addImm(Align); + BuildMI(MBB, MBBI, TII.get(X86::MOV32ri), X86::EAX).addImm(StackAlign); BuildMI(MBB, MBBI, TII.get(X86::CALLpcrel32)).addExternalSymbol("_alloca"); } } Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86RegisterInfo.h?rev=43703&r1=43702&r2=43703&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86RegisterInfo.h (original) +++ llvm/trunk/lib/Target/X86/X86RegisterInfo.h Mon Nov 5 01:30:01 2007 @@ -46,6 +46,10 @@ /// unsigned SlotSize; + /// StackAlign - Default stack alignment. + /// + unsigned StackAlign; + /// StackPtr - X86 physical register used as stack ptr. /// unsigned StackPtr; From djg at cray.com Mon Nov 5 08:45:49 2007 From: djg at cray.com (Dan Gohman) Date: Mon, 5 Nov 2007 08:45:49 -0600 Subject: [llvm-commits] [llvm] r43667 - /llvm/trunk/docs/tutorial/LangImpl7.html Message-ID: <20071105144549.GJ22306@village.us.cray.com> > +

  • mem2reg only works on allocas of scalar values, and only if the array size mem2reg has been observed working on allocas of vector values too :-). Dan -- Dan Gohman, Cray Inc. From baldrick at free.fr Mon Nov 5 09:15:51 2007 From: baldrick at free.fr (Duncan Sands) Date: Mon, 05 Nov 2007 15:15:51 -0000 Subject: [llvm-commits] [llvm] r43707 - in /llvm/trunk/docs/tutorial: JITTutorial1.html JITTutorial2.html Message-ID: <200711051515.lA5FFpvS031467@zion.cs.uiuc.edu> Author: baldrick Date: Mon Nov 5 09:15:50 2007 New Revision: 43707 URL: http://llvm.org/viewvc/llvm-project?rev=43707&view=rev Log: Trivial fixes. Modified: llvm/trunk/docs/tutorial/JITTutorial1.html llvm/trunk/docs/tutorial/JITTutorial2.html Modified: llvm/trunk/docs/tutorial/JITTutorial1.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/JITTutorial1.html?rev=43707&r1=43706&r2=43707&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/JITTutorial1.html (original) +++ llvm/trunk/docs/tutorial/JITTutorial1.html Mon Nov 5 09:15:50 2007 @@ -91,7 +91,7 @@

    Finally, we instantiate an LLVM PassManager and run the PrintModulePass on our module. LLVM uses an explicit pass infrastructure to manage optimizations and various other things. A PassManager, as should be obvious from its name, manages passes: it is responsible for scheduling them, invoking them, and insuring the proper disposal after we???re done with them. For this example, we???re just using a trivial pass that prints out our module in textual form.

    -

    Now onto the interesting part: creating a populating a module. Here???s the first chunk of our makeLLVMModule():

    +

    Now onto the interesting part: creating and populating a module. Here???s the first chunk of our makeLLVMModule():

    @@ -191,4 +191,4 @@
     
     
     
    -
    \ No newline at end of file
    +
    
    Modified: llvm/trunk/docs/tutorial/JITTutorial2.html
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/JITTutorial2.html?rev=43707&r1=43706&r2=43707&view=diff
    
    ==============================================================================
    --- llvm/trunk/docs/tutorial/JITTutorial2.html (original)
    +++ llvm/trunk/docs/tutorial/JITTutorial2.html Mon Nov  5 09:15:50 2007
    @@ -47,7 +47,7 @@
     
     

    The above is a graphical representation of a program in LLVM IR. It places each basic block on a node of a graph, and uses directed edges to indicate flow control. These blocks will be serialized when written to a text or bitcode file, but it is often useful conceptually to think of them as a graph. Again, if you are unsure about the code in the diagram, you should skim through the LLVM Language Reference Manual and convince yourself that it is, in fact, the GCD algorithm.

    -

    The first part of our code is the same as from first tutorial. The same basic setup is required: creating a module, verifying it, and running the PrintModulePass on it. Even the first segment of makeLLVMModule() looks the same, because gcd happens the have the same prototype as our mul_add function.

    +

    The first part of our code is the same as from first tutorial. The same basic setup is required: creating a module, verifying it, and running the PrintModulePass on it. Even the first segment of makeLLVMModule() looks the same, because gcd happens to have the same prototype as our mul_add function.

    @@ -162,7 +162,7 @@
     
    -

    And that's it! You can compile your code and execute your code in the same way as before, by executing:

    +

    And that's it! You can compile and execute your code in the same way as before, by doing:

    @@ -187,4 +187,4 @@
     
     
     
    -
    \ No newline at end of file
    +
    
    
    
    
    From baldrick at free.fr  Mon Nov  5 10:04:59 2007
    From: baldrick at free.fr (Duncan Sands)
    Date: Mon, 05 Nov 2007 16:04:59 -0000
    Subject: [llvm-commits] [llvm] r43709 - in /llvm/trunk/docs/tutorial:
    	LangImpl1.html LangImpl2.html
    Message-ID: <200711051604.lA5G4xDg001597@zion.cs.uiuc.edu>
    
    Author: baldrick
    Date: Mon Nov  5 10:04:58 2007
    New Revision: 43709
    
    URL: http://llvm.org/viewvc/llvm-project?rev=43709&view=rev
    Log:
    Fix some typos.
    
    Modified:
        llvm/trunk/docs/tutorial/LangImpl1.html
        llvm/trunk/docs/tutorial/LangImpl2.html
    
    Modified: llvm/trunk/docs/tutorial/LangImpl1.html
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl1.html?rev=43709&r1=43708&r2=43709&view=diff
    
    ==============================================================================
    --- llvm/trunk/docs/tutorial/LangImpl1.html (original)
    +++ llvm/trunk/docs/tutorial/LangImpl1.html Mon Nov  5 10:04:58 2007
    @@ -66,7 +66,7 @@
     
    -

    We also allow Kaleidoscope to call into standard library functions (this LLVM +

    We also allow Kaleidoscope to call into standard library functions (the LLVM JIT makes this completely trivial). This means that you can use the 'extern' keyword to define a function before you use it (this is also useful for mutually recursive functions). For example:

    @@ -90,7 +90,7 @@

    In order to make this tutorial maximally understandable and hackable, we choose to implement everything in C++ instead of using lexer and parser generators. LLVM obviously works just fine -with these tools, and choice of these tools doesn't impact overall design.

    +with such tools, and making use of them doesn't impact the overall design.

    A note about this tutorial: we expect you to extend the language and play with it on your own. Take the code and go crazy hacking away at it. It can be @@ -203,7 +203,7 @@

    This is all pretty straight-forward code for processing input. When reading a numeric value from input, we use the C strtod function to convert it to a numeric value that we store in NumVal. Note that this isn't doing -sufficient error checking: it will incorrect read "1.23.45.67" and handle it as +sufficient error checking: it will incorrectly read "1.23.45.67" and handle it as if you typed in "1.23". Feel free to extend it :). Next we handle comments:

    @@ -220,9 +220,9 @@
    -

    We handle comments by skipping to the end of the line and then returnning the +

    We handle comments by skipping to the end of the line and then returning the next comment. Finally, if the input doesn't match one of the above cases, it is -either an operator character like '+', the end of file. These are handled with +either an operator character like '+' or the end of the file. These are handled with this code:

    Modified: llvm/trunk/docs/tutorial/LangImpl2.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl2.html?rev=43709&r1=43708&r2=43709&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl2.html (original) +++ llvm/trunk/docs/tutorial/LangImpl2.html Mon Nov 5 10:04:58 2007 @@ -212,7 +212,7 @@

    The Error routines are simple helper routines that our parser will use to handle errors. The error recovery in our parser will not be the best and -are not particular user-friendly, but it will be enough for our tutorial. These +is not particular user-friendly, but it will be enough for our tutorial. These routines make it easier to handle errors in routines that have various return types: they always return null.

    @@ -284,7 +284,7 @@ calling ParseExpression (we will soon see that ParseExpression can call ParseParenExpr). This is powerful because it allows us to handle recursive grammars, and keeps each production very simple. Note that -parenthesis do not cause construction of AST nodes themselves. While we could +parentheses do not cause construction of AST nodes themselves. While we could do this, the most important role of parens are to guide the parser and provide grouping. Once the parser constructs the AST, parens are not needed.

    @@ -432,7 +432,7 @@ as a stream of primary expressions separated by binary operators. As such, it will first parse the leading primary expression "a", then it will see the pairs [+, b] [+, (c+d)] [*, e] [*, f] and [+, g]. Note that because parentheses -are primary expressions that the binary expression parser doesn't need to worry +are primary expressions, the binary expression parser doesn't need to worry about nested subexpressions like (c+d) at all.

    @@ -631,7 +631,7 @@

    Given this, a function definition is very simple, just a prototype plus -and expression to implement the body:

    +an expression to implement the body:

    
    
    
    
    From espindola at google.com  Mon Nov  5 11:14:57 2007
    From: espindola at google.com (Rafael Espindola)
    Date: Mon, 5 Nov 2007 17:14:57 +0000
    Subject: [llvm-commits] [PATCH] Move the LowerMEMCPY and LowerMEMCPYCall to
    	a common place
    Message-ID: <38a0d8450711050914s13ecaf01x92608e62c5e6b2b3@mail.gmail.com>
    
    The attached patch passes a "make check". I haven't committed yet
    because I am going on vacations and will be a bit slow to respond. I
    will still have Internet access and can commit if there is positive
    feedback.
    
    One ugly hack in the CL in to make "Subtarget" and "BaseSubtarget"
    independent fields that point to the same object. I did this just to
    make the type checker happy. Is there an easier way to merge them then
    adding virtual getters to the base class and replacing all uses of
    Subtarget?
    
    Cheers,
    -- 
    Rafael Avila de Espindola
    
    Google Ireland Ltd.
    Gordon House
    Barrow Street
    Dublin 4
    Ireland
    
    Registered in Dublin, Ireland
    Registration Number: 368047
    -------------- next part --------------
    A non-text attachment was scrubbed...
    Name: memcpy.patch
    Type: text/x-patch
    Size: 12986 bytes
    Desc: not available
    Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20071105/a3029f4a/attachment.bin 
    
    From sabre at nondot.org  Mon Nov  5 11:38:35 2007
    From: sabre at nondot.org (Chris Lattner)
    Date: Mon, 05 Nov 2007 17:38:35 -0000
    Subject: [llvm-commits] [llvm] r43711 -
    	/llvm/trunk/docs/tutorial/LangImpl2.html
    Message-ID: <200711051738.lA5HcZnL005933@zion.cs.uiuc.edu>
    
    Author: lattner
    Date: Mon Nov  5 11:38:34 2007
    New Revision: 43711
    
    URL: http://llvm.org/viewvc/llvm-project?rev=43711&view=rev
    Log:
    fix typo
    
    Modified:
        llvm/trunk/docs/tutorial/LangImpl2.html
    
    Modified: llvm/trunk/docs/tutorial/LangImpl2.html
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl2.html?rev=43711&r1=43710&r2=43711&view=diff
    
    ==============================================================================
    --- llvm/trunk/docs/tutorial/LangImpl2.html (original)
    +++ llvm/trunk/docs/tutorial/LangImpl2.html Mon Nov  5 11:38:34 2007
    @@ -739,12 +739,12 @@
     
     $ ./a.out 
     ready> def foo(x y) x+foo(y, 4.0);
    -ready> Parsed an function definition.
    +ready> Parsed a function definition.
     ready> def foo(x y) x+y y;
    -ready> Parsed an function definition.
    +ready> Parsed a function definition.
     ready> Parsed a top-level expr
     ready> def foo(x y) x+y );
    -ready> Parsed an function definition.
    +ready> Parsed a function definition.
     ready> Error: unknown token when expecting an expression
     ready> extern sin(a);
     ready> Parsed an extern
    
    
    
    
    From sabre at nondot.org  Mon Nov  5 11:39:26 2007
    From: sabre at nondot.org (Chris Lattner)
    Date: Mon, 05 Nov 2007 17:39:26 -0000
    Subject: [llvm-commits] [llvm] r43712 -
    	/llvm/trunk/docs/tutorial/LangImpl3.html
    Message-ID: <200711051739.lA5HdQog006003@zion.cs.uiuc.edu>
    
    Author: lattner
    Date: Mon Nov  5 11:39:26 2007
    New Revision: 43712
    
    URL: http://llvm.org/viewvc/llvm-project?rev=43712&view=rev
    Log:
    clarify
    
    Modified:
        llvm/trunk/docs/tutorial/LangImpl3.html
    
    Modified: llvm/trunk/docs/tutorial/LangImpl3.html
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl3.html?rev=43712&r1=43711&r2=43712&view=diff
    
    ==============================================================================
    --- llvm/trunk/docs/tutorial/LangImpl3.html (original)
    +++ llvm/trunk/docs/tutorial/LangImpl3.html Mon Nov  5 11:39:26 2007
    @@ -533,9 +533,9 @@
     
    -

    This shows some function calls. Note that the runtime of this function might -be fairly high. In the future we'll add conditional control flow to make -recursion actually be useful :).

    +

    This shows some function calls. Note that this function will take a long +time to execute if you call it. In the future we'll add conditional control +flow to make recursion actually be useful :).

    
    
    
    
    From evan.cheng at apple.com  Mon Nov  5 11:41:38 2007
    From: evan.cheng at apple.com (Evan Cheng)
    Date: Mon, 05 Nov 2007 17:41:38 -0000
    Subject: [llvm-commits] [llvm] r43714 - in /llvm/trunk:
     include/llvm/CodeGen/SimpleRegisterCoalescing.h
     lib/CodeGen/SimpleRegisterCoalescing.cpp
     lib/CodeGen/SimpleRegisterCoalescing.h
    Message-ID: <200711051741.lA5Hfc7I006157@zion.cs.uiuc.edu>
    
    Author: evancheng
    Date: Mon Nov  5 11:41:38 2007
    New Revision: 43714
    
    URL: http://llvm.org/viewvc/llvm-project?rev=43714&view=rev
    Log:
    Move SimpleRegisterCoalescing.h to lib/CodeGen since there is now a common
    register coalescer interface: RegisterCoalescing.
    
    Added:
        llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.h
    Removed:
        llvm/trunk/include/llvm/CodeGen/SimpleRegisterCoalescing.h
    Modified:
        llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp
    
    Removed: llvm/trunk/include/llvm/CodeGen/SimpleRegisterCoalescing.h
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/SimpleRegisterCoalescing.h?rev=43713&view=auto
    
    ==============================================================================
    --- llvm/trunk/include/llvm/CodeGen/SimpleRegisterCoalescing.h (original)
    +++ llvm/trunk/include/llvm/CodeGen/SimpleRegisterCoalescing.h (removed)
    @@ -1,180 +0,0 @@
    -//===-- SimpleRegisterCoalescing.h - Register Coalescing --------*- C++ -*-===//
    -//
    -//                     The LLVM Compiler Infrastructure
    -//
    -// This file was developed by the LLVM research group and is distributed under
    -// the University of Illinois Open Source License. See LICENSE.TXT for details.
    -//
    -//===----------------------------------------------------------------------===//
    -//
    -// This file implements a simple register copy coalescing phase.
    -//
    -//===----------------------------------------------------------------------===//
    -
    -#ifndef LLVM_CODEGEN_SIMPLE_REGISTER_COALESCING_H
    -#define LLVM_CODEGEN_SIMPLE_REGISTER_COALESCING_H
    -
    -#include "llvm/CodeGen/MachineFunctionPass.h"
    -#include "llvm/CodeGen/LiveInterval.h"
    -#include "llvm/CodeGen/LiveIntervalAnalysis.h"
    -#include "llvm/CodeGen/RegisterCoalescer.h"
    -#include "llvm/ADT/BitVector.h"
    -#include "llvm/ADT/IndexedMap.h"
    -
    -namespace llvm {
    -
    -  class LiveVariables;
    -  class MRegisterInfo;
    -  class TargetInstrInfo;
    -  class VirtRegMap;
    -
    -  class SimpleRegisterCoalescing : public MachineFunctionPass,
    -                                   public RegisterCoalescer {
    -    MachineFunction* mf_;
    -    const TargetMachine* tm_;
    -    const MRegisterInfo* mri_;
    -    const TargetInstrInfo* tii_;
    -    LiveIntervals *li_;
    -    LiveVariables *lv_;
    -    
    -    BitVector allocatableRegs_;
    -    DenseMap allocatableRCRegs_;
    -
    -    /// r2rMap_ - Map from register to its representative register.
    -    ///
    -    IndexedMap r2rMap_;
    -
    -    /// r2rRevMap_ - Reverse of r2rRevMap_, i.e. Map from register to all
    -    /// the registers it represent.
    -    IndexedMap > r2rRevMap_;
    -
    -    /// JoinedLIs - Keep track which register intervals have been coalesced
    -    /// with other intervals.
    -    BitVector JoinedLIs;
    -
    -    /// SubRegIdxes - Keep track of sub-register and indexes.
    -    ///
    -    SmallVector, 32> SubRegIdxes;
    -
    -  public:
    -    static char ID; // Pass identifcation, replacement for typeid
    -    SimpleRegisterCoalescing() : MachineFunctionPass((intptr_t)&ID) {}
    -
    -    struct CopyRec {
    -      MachineInstr *MI;
    -      unsigned SrcReg, DstReg;
    -    };
    -    CopyRec getCopyRec(MachineInstr *MI, unsigned SrcReg, unsigned DstReg) {
    -      CopyRec R;
    -      R.MI = MI;
    -      R.SrcReg = SrcReg;
    -      R.DstReg = DstReg;
    -      return R;
    -    }
    -    struct InstrSlots {
    -      enum {
    -        LOAD  = 0,
    -        USE   = 1,
    -        DEF   = 2,
    -        STORE = 3,
    -        NUM   = 4
    -      };
    -    };
    -    
    -    virtual void getAnalysisUsage(AnalysisUsage &AU) const;
    -    virtual void releaseMemory();
    -
    -    /// runOnMachineFunction - pass entry point
    -    virtual bool runOnMachineFunction(MachineFunction&);
    -
    -    bool coalesceFunction(MachineFunction &mf, RegallocQuery &) {
    -      // This runs as an independent pass, so don't do anything.
    -      return(false);
    -    };
    -
    -    /// print - Implement the dump method.
    -    virtual void print(std::ostream &O, const Module* = 0) const;
    -    void print(std::ostream *O, const Module* M = 0) const {
    -      if (O) print(*O, M);
    -    }
    -
    -  private:      
    -    /// joinIntervals - join compatible live intervals
    -    void joinIntervals();
    -
    -    /// CopyCoalesceInMBB - Coalesce copies in the specified MBB, putting
    -    /// copies that cannot yet be coalesced into the "TryAgain" list.
    -    void CopyCoalesceInMBB(MachineBasicBlock *MBB,
    -                           std::vector &TryAgain);
    -
    -    /// JoinCopy - Attempt to join intervals corresponding to SrcReg/DstReg,
    -    /// which are the src/dst of the copy instruction CopyMI.  This returns true
    -    /// if the copy was successfully coalesced away. If it is not currently
    -    /// possible to coalesce this interval, but it may be possible if other
    -    /// things get coalesced, then it returns true by reference in 'Again'.
    -    bool JoinCopy(MachineInstr *CopyMI, unsigned SrcReg, unsigned DstReg,
    -                  bool &Again);
    -    
    -    /// JoinIntervals - Attempt to join these two intervals.  On failure, this
    -    /// returns false.  Otherwise, if one of the intervals being joined is a
    -    /// physreg, this method always canonicalizes DestInt to be it.  The output
    -    /// "SrcInt" will not have been modified, so we can use this information
    -    /// below to update aliases.
    -    bool JoinIntervals(LiveInterval &LHS, LiveInterval &RHS, bool &Swapped);
    -    
    -    /// SimpleJoin - Attempt to join the specified interval into this one. The
    -    /// caller of this method must guarantee that the RHS only contains a single
    -    /// value number and that the RHS is not defined by a copy from this
    -    /// interval.  This returns false if the intervals are not joinable, or it
    -    /// joins them and returns true.
    -    bool SimpleJoin(LiveInterval &LHS, LiveInterval &RHS);
    -    
    -    /// Return true if the two specified registers belong to different
    -    /// register classes.  The registers may be either phys or virt regs.
    -    bool differingRegisterClasses(unsigned RegA, unsigned RegB) const;
    -
    -
    -    bool AdjustCopiesBackFrom(LiveInterval &IntA, LiveInterval &IntB,
    -                              MachineInstr *CopyMI);
    -
    -    /// AddSubRegIdxPairs - Recursively mark all the registers represented by the
    -    /// specified register as sub-registers. The recursion level is expected to be
    -    /// shallow.
    -    void AddSubRegIdxPairs(unsigned Reg, unsigned SubIdx);
    -
    -    /// lastRegisterUse - Returns the last use of the specific register between
    -    /// cycles Start and End. It also returns the use operand by reference. It
    -    /// returns NULL if there are no uses.
    -    MachineInstr *lastRegisterUse(unsigned Start, unsigned End, unsigned Reg,
    -                                  MachineOperand *&MOU);
    -
    -    /// findDefOperand - Returns the MachineOperand that is a def of the specific
    -    /// register. It returns NULL if the def is not found.
    -    MachineOperand *findDefOperand(MachineInstr *MI, unsigned Reg);
    -
    -    /// unsetRegisterKill - Unset IsKill property of all uses of the specific
    -    /// register of the specific instruction.
    -    void unsetRegisterKill(MachineInstr *MI, unsigned Reg);
    -
    -    /// unsetRegisterKills - Unset IsKill property of all uses of specific register
    -    /// between cycles Start and End.
    -    void unsetRegisterKills(unsigned Start, unsigned End, unsigned Reg);
    -
    -    /// hasRegisterDef - True if the instruction defines the specific register.
    -    ///
    -    bool hasRegisterDef(MachineInstr *MI, unsigned Reg);
    -
    -    /// rep - returns the representative of this register
    -    unsigned rep(unsigned Reg) {
    -      unsigned Rep = r2rMap_[Reg];
    -      if (Rep)
    -        return r2rMap_[Reg] = rep(Rep);
    -      return Reg;
    -    }
    -
    -    void printRegName(unsigned reg) const;
    -  };
    -
    -} // End llvm namespace
    -
    -#endif
    
    Modified: llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp?rev=43714&r1=43713&r2=43714&view=diff
    
    ==============================================================================
    --- llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp (original)
    +++ llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp Mon Nov  5 11:41:38 2007
    @@ -13,9 +13,9 @@
     //===----------------------------------------------------------------------===//
     
     #define DEBUG_TYPE "regcoalescing"
    -#include "llvm/CodeGen/SimpleRegisterCoalescing.h"
    -#include "llvm/CodeGen/LiveIntervalAnalysis.h"
    +#include "SimpleRegisterCoalescing.h"
     #include "VirtRegMap.h"
    +#include "llvm/CodeGen/LiveIntervalAnalysis.h"
     #include "llvm/Value.h"
     #include "llvm/Analysis/LoopInfo.h"
     #include "llvm/CodeGen/LiveVariables.h"
    
    Added: llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.h
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.h?rev=43714&view=auto
    
    ==============================================================================
    --- llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.h (added)
    +++ llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.h Mon Nov  5 11:41:38 2007
    @@ -0,0 +1,184 @@
    +//===-- SimpleRegisterCoalescing.h - Register Coalescing --------*- C++ -*-===//
    +//
    +//                     The LLVM Compiler Infrastructure
    +//
    +// This file was developed by the LLVM research group and is distributed under
    +// the University of Illinois Open Source License. See LICENSE.TXT for details.
    +//
    +//===----------------------------------------------------------------------===//
    +//
    +// This file implements a simple register copy coalescing phase.
    +//
    +//===----------------------------------------------------------------------===//
    +
    +#ifndef LLVM_CODEGEN_SIMPLE_REGISTER_COALESCING_H
    +#define LLVM_CODEGEN_SIMPLE_REGISTER_COALESCING_H
    +
    +#include "llvm/CodeGen/MachineFunctionPass.h"
    +#include "llvm/CodeGen/LiveInterval.h"
    +#include "llvm/CodeGen/LiveIntervalAnalysis.h"
    +#include "llvm/CodeGen/RegisterCoalescer.h"
    +#include "llvm/ADT/BitVector.h"
    +#include "llvm/ADT/IndexedMap.h"
    +
    +namespace llvm {
    +
    +  class LiveVariables;
    +  class MRegisterInfo;
    +  class TargetInstrInfo;
    +  class VirtRegMap;
    +
    +  class SimpleRegisterCoalescing : public MachineFunctionPass,
    +                                   public RegisterCoalescer {
    +    MachineFunction* mf_;
    +    const TargetMachine* tm_;
    +    const MRegisterInfo* mri_;
    +    const TargetInstrInfo* tii_;
    +    LiveIntervals *li_;
    +    LiveVariables *lv_;
    +    
    +    BitVector allocatableRegs_;
    +    DenseMap allocatableRCRegs_;
    +
    +    /// r2rMap_ - Map from register to its representative register.
    +    ///
    +    IndexedMap r2rMap_;
    +
    +    /// r2rRevMap_ - Reverse of r2rRevMap_, i.e. Map from register to all
    +    /// the registers it represent.
    +    IndexedMap > r2rRevMap_;
    +
    +    /// JoinedLIs - Keep track which register intervals have been coalesced
    +    /// with other intervals.
    +    BitVector JoinedLIs;
    +
    +    /// SubRegIdxes - Keep track of sub-register and indexes.
    +    ///
    +    SmallVector, 32> SubRegIdxes;
    +
    +    /// JoinedCopies - Keep track of copies eliminated due to coalescing.
    +    ///
    +    SmallPtrSet JoinedCopies;
    +
    +  public:
    +    static char ID; // Pass identifcation, replacement for typeid
    +    SimpleRegisterCoalescing() : MachineFunctionPass((intptr_t)&ID) {}
    +
    +    struct CopyRec {
    +      MachineInstr *MI;
    +      unsigned SrcReg, DstReg;
    +    };
    +    CopyRec getCopyRec(MachineInstr *MI, unsigned SrcReg, unsigned DstReg) {
    +      CopyRec R;
    +      R.MI = MI;
    +      R.SrcReg = SrcReg;
    +      R.DstReg = DstReg;
    +      return R;
    +    }
    +    struct InstrSlots {
    +      enum {
    +        LOAD  = 0,
    +        USE   = 1,
    +        DEF   = 2,
    +        STORE = 3,
    +        NUM   = 4
    +      };
    +    };
    +    
    +    virtual void getAnalysisUsage(AnalysisUsage &AU) const;
    +    virtual void releaseMemory();
    +
    +    /// runOnMachineFunction - pass entry point
    +    virtual bool runOnMachineFunction(MachineFunction&);
    +
    +    bool coalesceFunction(MachineFunction &mf, RegallocQuery &) {
    +      // This runs as an independent pass, so don't do anything.
    +      return(false);
    +    };
    +
    +    /// print - Implement the dump method.
    +    virtual void print(std::ostream &O, const Module* = 0) const;
    +    void print(std::ostream *O, const Module* M = 0) const {
    +      if (O) print(*O, M);
    +    }
    +
    +  private:      
    +    /// joinIntervals - join compatible live intervals
    +    void joinIntervals();
    +
    +    /// CopyCoalesceInMBB - Coalesce copies in the specified MBB, putting
    +    /// copies that cannot yet be coalesced into the "TryAgain" list.
    +    void CopyCoalesceInMBB(MachineBasicBlock *MBB,
    +                           std::vector &TryAgain);
    +
    +    /// JoinCopy - Attempt to join intervals corresponding to SrcReg/DstReg,
    +    /// which are the src/dst of the copy instruction CopyMI.  This returns true
    +    /// if the copy was successfully coalesced away. If it is not currently
    +    /// possible to coalesce this interval, but it may be possible if other
    +    /// things get coalesced, then it returns true by reference in 'Again'.
    +    bool JoinCopy(MachineInstr *CopyMI, unsigned SrcReg, unsigned DstReg,
    +                  bool &Again);
    +    
    +    /// JoinIntervals - Attempt to join these two intervals.  On failure, this
    +    /// returns false.  Otherwise, if one of the intervals being joined is a
    +    /// physreg, this method always canonicalizes DestInt to be it.  The output
    +    /// "SrcInt" will not have been modified, so we can use this information
    +    /// below to update aliases.
    +    bool JoinIntervals(LiveInterval &LHS, LiveInterval &RHS, bool &Swapped);
    +    
    +    /// SimpleJoin - Attempt to join the specified interval into this one. The
    +    /// caller of this method must guarantee that the RHS only contains a single
    +    /// value number and that the RHS is not defined by a copy from this
    +    /// interval.  This returns false if the intervals are not joinable, or it
    +    /// joins them and returns true.
    +    bool SimpleJoin(LiveInterval &LHS, LiveInterval &RHS);
    +    
    +    /// Return true if the two specified registers belong to different
    +    /// register classes.  The registers may be either phys or virt regs.
    +    bool differingRegisterClasses(unsigned RegA, unsigned RegB) const;
    +
    +
    +    bool AdjustCopiesBackFrom(LiveInterval &IntA, LiveInterval &IntB,
    +                              MachineInstr *CopyMI);
    +
    +    /// AddSubRegIdxPairs - Recursively mark all the registers represented by the
    +    /// specified register as sub-registers. The recursion level is expected to be
    +    /// shallow.
    +    void AddSubRegIdxPairs(unsigned Reg, unsigned SubIdx);
    +
    +    /// lastRegisterUse - Returns the last use of the specific register between
    +    /// cycles Start and End. It also returns the use operand by reference. It
    +    /// returns NULL if there are no uses.
    +    MachineInstr *lastRegisterUse(unsigned Start, unsigned End, unsigned Reg,
    +                                  MachineOperand *&MOU);
    +
    +    /// findDefOperand - Returns the MachineOperand that is a def of the specific
    +    /// register. It returns NULL if the def is not found.
    +    MachineOperand *findDefOperand(MachineInstr *MI, unsigned Reg);
    +
    +    /// unsetRegisterKill - Unset IsKill property of all uses of the specific
    +    /// register of the specific instruction.
    +    void unsetRegisterKill(MachineInstr *MI, unsigned Reg);
    +
    +    /// unsetRegisterKills - Unset IsKill property of all uses of specific register
    +    /// between cycles Start and End.
    +    void unsetRegisterKills(unsigned Start, unsigned End, unsigned Reg);
    +
    +    /// hasRegisterDef - True if the instruction defines the specific register.
    +    ///
    +    bool hasRegisterDef(MachineInstr *MI, unsigned Reg);
    +
    +    /// rep - returns the representative of this register
    +    unsigned rep(unsigned Reg) {
    +      unsigned Rep = r2rMap_[Reg];
    +      if (Rep)
    +        return r2rMap_[Reg] = rep(Rep);
    +      return Reg;
    +    }
    +
    +    void printRegName(unsigned reg) const;
    +  };
    +
    +} // End llvm namespace
    +
    +#endif
    
    
    
    
    From sabre at nondot.org  Mon Nov  5 11:45:55 2007
    From: sabre at nondot.org (Chris Lattner)
    Date: Mon, 05 Nov 2007 17:45:55 -0000
    Subject: [llvm-commits] [llvm] r43715 -
    	/llvm/trunk/docs/tutorial/LangImpl7.html
    Message-ID: <200711051745.lA5Hjtqb006348@zion.cs.uiuc.edu>
    
    Author: lattner
    Date: Mon Nov  5 11:45:54 2007
    New Revision: 43715
    
    URL: http://llvm.org/viewvc/llvm-project?rev=43715&view=rev
    Log:
    Dan points out that mem2reg also promotes vectors: be more precise.
    
    Modified:
        llvm/trunk/docs/tutorial/LangImpl7.html
    
    Modified: llvm/trunk/docs/tutorial/LangImpl7.html
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl7.html?rev=43715&r1=43714&r2=43715&view=diff
    
    ==============================================================================
    --- llvm/trunk/docs/tutorial/LangImpl7.html (original)
    +++ llvm/trunk/docs/tutorial/LangImpl7.html Mon Nov  5 11:45:54 2007
    @@ -258,7 +258,9 @@
     the address of the stack object is passed to a function, or if any funny pointer
     arithmetic is involved, the alloca will not be promoted.
  • -
  • mem2reg only works on allocas of scalar values, and only if the array size +
  • mem2reg only works on allocas of first class +values (such as pointers, scalars and vectors), and only if the array size of the allocation is 1 (or missing in the .ll file). mem2reg is not capable of promoting structs or arrays to registers. Note that the "scalarrepl" pass is more powerful and can promote structs, "unions", and arrays in many cases.
  • From sabre at nondot.org Mon Nov 5 11:52:04 2007 From: sabre at nondot.org (Chris Lattner) Date: Mon, 05 Nov 2007 17:52:04 -0000 Subject: [llvm-commits] [llvm] r43717 - /llvm/trunk/docs/tutorial/LangImpl5.html Message-ID: <200711051752.lA5Hq4LX006608@zion.cs.uiuc.edu> Author: lattner Date: Mon Nov 5 11:52:04 2007 New Revision: 43717 URL: http://llvm.org/viewvc/llvm-project?rev=43717&view=rev Log: fix typo Modified: llvm/trunk/docs/tutorial/LangImpl5.html Modified: llvm/trunk/docs/tutorial/LangImpl5.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl5.html?rev=43717&r1=43716&r2=43717&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl5.html (original) +++ llvm/trunk/docs/tutorial/LangImpl5.html Mon Nov 5 11:52:04 2007 @@ -407,7 +407,7 @@

    The final line here is quite subtle, but is very important. The basic issue is that when we create the Phi node in the merge block, we need to set up the block/value pairs that indicate how the Phi will work. Importantly, the Phi -node expects to have an extry for each predecessor of the block in the CFG. Why +node expects to have an entry for each predecessor of the block in the CFG. Why then are we getting the current block when we just set it to ThenBB 5 lines above? The problem is that the "Then" expression may actually itself change the block that the Builder is emitting into if, for example, it contains a nested From sabre at nondot.org Mon Nov 5 11:54:34 2007 From: sabre at nondot.org (Chris Lattner) Date: Mon, 05 Nov 2007 17:54:34 -0000 Subject: [llvm-commits] [llvm] r43718 - in /llvm/trunk/docs/tutorial: LangImpl2.html LangImpl3.html LangImpl4.html LangImpl5.html LangImpl6.html LangImpl7.html Message-ID: <200711051754.lA5HsZ1Z006841@zion.cs.uiuc.edu> Author: lattner Date: Mon Nov 5 11:54:34 2007 New Revision: 43718 URL: http://llvm.org/viewvc/llvm-project?rev=43718&view=rev Log: spell identifier correctly. Modified: llvm/trunk/docs/tutorial/LangImpl2.html llvm/trunk/docs/tutorial/LangImpl3.html llvm/trunk/docs/tutorial/LangImpl4.html llvm/trunk/docs/tutorial/LangImpl5.html llvm/trunk/docs/tutorial/LangImpl6.html llvm/trunk/docs/tutorial/LangImpl7.html Modified: llvm/trunk/docs/tutorial/LangImpl2.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl2.html?rev=43718&r1=43717&r2=43718&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl2.html (original) +++ llvm/trunk/docs/tutorial/LangImpl2.html Mon Nov 5 11:54:34 2007 @@ -294,12 +294,12 @@

     /// identifierexpr
    -///   ::= identifer
    -///   ::= identifer '(' expression* ')'
    +///   ::= identifier
    +///   ::= identifier '(' expression* ')'
     static ExprAST *ParseIdentifierExpr() {
       std::string IdName = IdentifierStr;
       
    -  getNextToken();  // eat identifer.
    +  getNextToken();  // eat identifier.
       
       if (CurTok != '(') // Simple variable ref.
         return new VariableExprAST(IdName);
    @@ -954,12 +954,12 @@
     static ExprAST *ParseExpression();
     
     /// identifierexpr
    -///   ::= identifer
    -///   ::= identifer '(' expression* ')'
    +///   ::= identifier
    +///   ::= identifier '(' expression* ')'
     static ExprAST *ParseIdentifierExpr() {
       std::string IdName = IdentifierStr;
       
    -  getNextToken();  // eat identifer.
    +  getNextToken();  // eat identifier.
       
       if (CurTok != '(') // Simple variable ref.
         return new VariableExprAST(IdName);
    
    Modified: llvm/trunk/docs/tutorial/LangImpl3.html
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl3.html?rev=43718&r1=43717&r2=43718&view=diff
    
    ==============================================================================
    --- llvm/trunk/docs/tutorial/LangImpl3.html (original)
    +++ llvm/trunk/docs/tutorial/LangImpl3.html Mon Nov  5 11:54:34 2007
    @@ -818,12 +818,12 @@
     static ExprAST *ParseExpression();
     
     /// identifierexpr
    -///   ::= identifer
    -///   ::= identifer '(' expression* ')'
    +///   ::= identifier
    +///   ::= identifier '(' expression* ')'
     static ExprAST *ParseIdentifierExpr() {
       std::string IdName = IdentifierStr;
       
    -  getNextToken();  // eat identifer.
    +  getNextToken();  // eat identifier.
       
       if (CurTok != '(') // Simple variable ref.
         return new VariableExprAST(IdName);
    
    Modified: llvm/trunk/docs/tutorial/LangImpl4.html
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl4.html?rev=43718&r1=43717&r2=43718&view=diff
    
    ==============================================================================
    --- llvm/trunk/docs/tutorial/LangImpl4.html (original)
    +++ llvm/trunk/docs/tutorial/LangImpl4.html Mon Nov  5 11:54:34 2007
    @@ -686,12 +686,12 @@
     static ExprAST *ParseExpression();
     
     /// identifierexpr
    -///   ::= identifer
    -///   ::= identifer '(' expression* ')'
    +///   ::= identifier
    +///   ::= identifier '(' expression* ')'
     static ExprAST *ParseIdentifierExpr() {
       std::string IdName = IdentifierStr;
       
    -  getNextToken();  // eat identifer.
    +  getNextToken();  // eat identifier.
       
       if (CurTok != '(') // Simple variable ref.
         return new VariableExprAST(IdName);
    
    Modified: llvm/trunk/docs/tutorial/LangImpl5.html
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl5.html?rev=43718&r1=43717&r2=43718&view=diff
    
    ==============================================================================
    --- llvm/trunk/docs/tutorial/LangImpl5.html (original)
    +++ llvm/trunk/docs/tutorial/LangImpl5.html Mon Nov  5 11:54:34 2007
    @@ -574,7 +574,7 @@
     
     
    -/// forexpr ::= 'for' identifer '=' expr ',' expr (',' expr)? 'in' expression
    +/// forexpr ::= 'for' identifier '=' expr ',' expr (',' expr)? 'in' expression
     static ExprAST *ParseForExpr() {
       getNextToken();  // eat the for.
     
    @@ -582,7 +582,7 @@
         return Error("expected identifier after for");
       
       std::string IdName = IdentifierStr;
    -  getNextToken();  // eat identifer.
    +  getNextToken();  // eat identifier.
       
       if (CurTok != '=')
         return Error("expected '=' after for");
    @@ -1085,12 +1085,12 @@
     static ExprAST *ParseExpression();
     
     /// identifierexpr
    -///   ::= identifer
    -///   ::= identifer '(' expression* ')'
    +///   ::= identifier
    +///   ::= identifier '(' expression* ')'
     static ExprAST *ParseIdentifierExpr() {
       std::string IdName = IdentifierStr;
       
    -  getNextToken();  // eat identifer.
    +  getNextToken();  // eat identifier.
       
       if (CurTok != '(') // Simple variable ref.
         return new VariableExprAST(IdName);
    @@ -1163,7 +1163,7 @@
       return new IfExprAST(Cond, Then, Else);
     }
     
    -/// forexpr ::= 'for' identifer '=' expr ',' expr (',' expr)? 'in' expression
    +/// forexpr ::= 'for' identifier '=' expr ',' expr (',' expr)? 'in' expression
     static ExprAST *ParseForExpr() {
       getNextToken();  // eat the for.
     
    @@ -1171,7 +1171,7 @@
         return Error("expected identifier after for");
       
       std::string IdName = IdentifierStr;
    -  getNextToken();  // eat identifer.
    +  getNextToken();  // eat identifier.
       
       if (CurTok != '=')
         return Error("expected '=' after for");
    
    Modified: llvm/trunk/docs/tutorial/LangImpl6.html
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl6.html?rev=43718&r1=43717&r2=43718&view=diff
    
    ==============================================================================
    --- llvm/trunk/docs/tutorial/LangImpl6.html (original)
    +++ llvm/trunk/docs/tutorial/LangImpl6.html Mon Nov  5 11:54:34 2007
    @@ -1048,12 +1048,12 @@
     static ExprAST *ParseExpression();
     
     /// identifierexpr
    -///   ::= identifer
    -///   ::= identifer '(' expression* ')'
    +///   ::= identifier
    +///   ::= identifier '(' expression* ')'
     static ExprAST *ParseIdentifierExpr() {
       std::string IdName = IdentifierStr;
       
    -  getNextToken();  // eat identifer.
    +  getNextToken();  // eat identifier.
       
       if (CurTok != '(') // Simple variable ref.
         return new VariableExprAST(IdName);
    @@ -1126,7 +1126,7 @@
       return new IfExprAST(Cond, Then, Else);
     }
     
    -/// forexpr ::= 'for' identifer '=' expr ',' expr (',' expr)? 'in' expression
    +/// forexpr ::= 'for' identifier '=' expr ',' expr (',' expr)? 'in' expression
     static ExprAST *ParseForExpr() {
       getNextToken();  // eat the for.
     
    @@ -1134,7 +1134,7 @@
         return Error("expected identifier after for");
       
       std::string IdName = IdentifierStr;
    -  getNextToken();  // eat identifer.
    +  getNextToken();  // eat identifier.
       
       if (CurTok != '=')
         return Error("expected '=' after for");
    
    Modified: llvm/trunk/docs/tutorial/LangImpl7.html
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl7.html?rev=43718&r1=43717&r2=43718&view=diff
    
    ==============================================================================
    --- llvm/trunk/docs/tutorial/LangImpl7.html (original)
    +++ llvm/trunk/docs/tutorial/LangImpl7.html Mon Nov  5 11:54:34 2007
    @@ -809,8 +809,8 @@
     
     
    -/// varexpr ::= 'var' identifer ('=' expression)? 
    -//                    (',' identifer ('=' expression)?)* 'in' expression
    +/// varexpr ::= 'var' identifier ('=' expression)? 
    +//                    (',' identifier ('=' expression)?)* 'in' expression
     static ExprAST *ParseVarExpr() {
       getNextToken();  // eat the var.
     
    @@ -829,7 +829,7 @@
     
       while (1) {
         std::string Name = IdentifierStr;
    -    getNextToken();  // eat identifer.
    +    getNextToken();  // eat identifier.
     
         // Read the optional initializer.
         ExprAST *Init = 0;
    @@ -1244,12 +1244,12 @@
     static ExprAST *ParseExpression();
     
     /// identifierexpr
    -///   ::= identifer
    -///   ::= identifer '(' expression* ')'
    +///   ::= identifier
    +///   ::= identifier '(' expression* ')'
     static ExprAST *ParseIdentifierExpr() {
       std::string IdName = IdentifierStr;
       
    -  getNextToken();  // eat identifer.
    +  getNextToken();  // eat identifier.
       
       if (CurTok != '(') // Simple variable ref.
         return new VariableExprAST(IdName);
    @@ -1322,7 +1322,7 @@
       return new IfExprAST(Cond, Then, Else);
     }
     
    -/// forexpr ::= 'for' identifer '=' expr ',' expr (',' expr)? 'in' expression
    +/// forexpr ::= 'for' identifier '=' expr ',' expr (',' expr)? 'in' expression
     static ExprAST *ParseForExpr() {
       getNextToken();  // eat the for.
     
    @@ -1330,7 +1330,7 @@
         return Error("expected identifier after for");
       
       std::string IdName = IdentifierStr;
    -  getNextToken();  // eat identifer.
    +  getNextToken();  // eat identifier.
       
       if (CurTok != '=')
         return Error("expected '=' after for");
    @@ -1364,8 +1364,8 @@
       return new ForExprAST(IdName, Start, End, Step, Body);
     }
     
    -/// varexpr ::= 'var' identifer ('=' expression)? 
    -//                    (',' identifer ('=' expression)?)* 'in' expression
    +/// varexpr ::= 'var' identifier ('=' expression)? 
    +//                    (',' identifier ('=' expression)?)* 'in' expression
     static ExprAST *ParseVarExpr() {
       getNextToken();  // eat the var.
     
    @@ -1377,7 +1377,7 @@
       
       while (1) {
         std::string Name = IdentifierStr;
    -    getNextToken();  // eat identifer.
    +    getNextToken();  // eat identifier.
     
         // Read the optional initializer.
         ExprAST *Init = 0;
    
    
    
    
    From sabre at nondot.org  Mon Nov  5 12:02:15 2007
    From: sabre at nondot.org (Chris Lattner)
    Date: Mon, 05 Nov 2007 18:02:15 -0000
    Subject: [llvm-commits] [llvm] r43719 -
    	/llvm/trunk/docs/tutorial/LangImpl3.html
    Message-ID: <200711051802.lA5I2Fv3007200@zion.cs.uiuc.edu>
    
    Author: lattner
    Date: Mon Nov  5 12:02:15 2007
    New Revision: 43719
    
    URL: http://llvm.org/viewvc/llvm-project?rev=43719&view=rev
    Log:
    add link to llvmbuilder doxygen docs
    
    Modified:
        llvm/trunk/docs/tutorial/LangImpl3.html
    
    Modified: llvm/trunk/docs/tutorial/LangImpl3.html
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl3.html?rev=43719&r1=43718&r2=43719&view=diff
    
    ==============================================================================
    --- llvm/trunk/docs/tutorial/LangImpl3.html (original)
    +++ llvm/trunk/docs/tutorial/LangImpl3.html Mon Nov  5 12:02:15 2007
    @@ -96,7 +96,9 @@
     uses to contain code.

    The Builder object is a helper object that makes it easy to generate -LLVM instructions. The Builder keeps track of the current place to +LLVM instructions. Instances of the LLVMBuilder +class keeps track of the current place to insert instructions and has methods to create new instructions.

    The NamedValues map keeps track of which values are defined in the From baldrick at free.fr Mon Nov 5 12:03:02 2007 From: baldrick at free.fr (Duncan Sands) Date: Mon, 05 Nov 2007 18:03:02 -0000 Subject: [llvm-commits] [llvm] r43720 - /llvm/trunk/lib/CodeGen/AsmPrinter.cpp Message-ID: <200711051803.lA5I322A007239@zion.cs.uiuc.edu> Author: baldrick Date: Mon Nov 5 12:03:02 2007 New Revision: 43720 URL: http://llvm.org/viewvc/llvm-project?rev=43720&view=rev Log: Don't output ABI size padding twice. By using the store size for the field we get ABI padding automatically, so no need to put it in again when we emit the field. Modified: llvm/trunk/lib/CodeGen/AsmPrinter.cpp Modified: llvm/trunk/lib/CodeGen/AsmPrinter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter.cpp?rev=43720&r1=43719&r2=43720&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/AsmPrinter.cpp (original) +++ llvm/trunk/lib/CodeGen/AsmPrinter.cpp Mon Nov 5 12:03:02 2007 @@ -831,15 +831,16 @@ // Check if padding is needed and insert one or more 0s. uint64_t fieldSize = TD->getTypeStoreSize(field->getType()); - uint64_t padSize = ((i == e-1? cvsLayout->getSizeInBytes() - : cvsLayout->getElementOffset(i+1)) + uint64_t padSize = ((i == e-1 ? Size : cvsLayout->getElementOffset(i+1)) - cvsLayout->getElementOffset(i)) - fieldSize; sizeSoFar += fieldSize + padSize; - // Now print the actual field value - EmitGlobalConstant(field, CVS->getType()->isPacked()); + // Now print the actual field value without ABI size padding. + EmitGlobalConstant(field, true); - // Insert the field padding unless it's zero bytes... + // Insert padding - this may include padding to increase the size of the + // current field up to the ABI size (if the struct is not packed) as well + // as padding to ensure that the next field starts at the right offset. EmitZeros(padSize); } assert(sizeSoFar == cvsLayout->getSizeInBytes() && From kremenek at apple.com Mon Nov 5 12:13:03 2007 From: kremenek at apple.com (Ted Kremenek) Date: Mon, 05 Nov 2007 18:13:03 -0000 Subject: [llvm-commits] [llvm] r43721 - in /llvm/trunk/include/llvm/Bitcode: Deserialize.h Serialize.h Message-ID: <200711051813.lA5ID3JC007666@zion.cs.uiuc.edu> Author: kremenek Date: Mon Nov 5 12:13:03 2007 New Revision: 43721 URL: http://llvm.org/viewvc/llvm-project?rev=43721&view=rev Log: Fixed bug where tombstone key and empty key for DenseMap used for pointer backpatching in deserializer were improperly created and resulted in an assertion failure. Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h llvm/trunk/include/llvm/Bitcode/Serialize.h Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Deserialize.h?rev=43721&r1=43720&r2=43721&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Deserialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Deserialize.h Mon Nov 5 12:13:03 2007 @@ -56,13 +56,14 @@ public: BPKey(unsigned PtrId) : Raw(PtrId << 1) { assert (PtrId > 0); } + BPKey(unsigned code, unsigned) : Raw(code) {} void MarkFinal() { Raw |= 0x1; } bool hasFinalPtr() const { return Raw & 0x1 ? true : false; } unsigned getID() const { return Raw >> 1; } - static inline BPKey getEmptyKey() { return 0; } - static inline BPKey getTombstoneKey() { return 1; } + static inline BPKey getEmptyKey() { return BPKey(0,0); } + static inline BPKey getTombstoneKey() { return BPKey(1,0); } static inline unsigned getHashValue(const BPKey& K) { return K.Raw & ~0x1; } static bool isEqual(const BPKey& K1, const BPKey& K2) { Modified: llvm/trunk/include/llvm/Bitcode/Serialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Serialize.h?rev=43721&r1=43720&r2=43721&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Serialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Serialize.h Mon Nov 5 12:13:03 2007 @@ -32,6 +32,7 @@ public: Serializer(BitstreamWriter& stream, unsigned BlockID = 0); + ~Serializer(); template From lauro.venancio at gmail.com Mon Nov 5 12:33:38 2007 From: lauro.venancio at gmail.com (Lauro Ramos Venancio) Date: Mon, 05 Nov 2007 18:33:38 -0000 Subject: [llvm-commits] [llvm] r43722 - in /llvm/trunk: lib/Target/ARM/ARMAsmPrinter.cpp test/CodeGen/ARM/tls3.ll Message-ID: <200711051833.lA5IXcCA008893@zion.cs.uiuc.edu> Author: laurov Date: Mon Nov 5 12:33:37 2007 New Revision: 43722 URL: http://llvm.org/viewvc/llvm-project?rev=43722&view=rev Log: [ARM] Fix code generation for: static __thread struct { int a; int b; } teste = {0, 0}; Added: llvm/trunk/test/CodeGen/ARM/tls3.ll 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=43722&r1=43721&r2=43722&view=diff ============================================================================== --- llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp (original) +++ llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp Mon Nov 5 12:33:37 2007 @@ -836,7 +836,7 @@ if (Subtarget->isTargetELF()) O << "\t.type " << name << ",%object\n"; - if (C->isNullValue() && !I->hasSection()) { + if (C->isNullValue() && !I->hasSection() && !I->isThreadLocal()) { if (I->hasExternalLinkage()) { if (const char *Directive = TAI->getZeroFillDirective()) { O << "\t.globl\t" << name << "\n"; Added: llvm/trunk/test/CodeGen/ARM/tls3.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/tls3.ll?rev=43722&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/ARM/tls3.ll (added) +++ llvm/trunk/test/CodeGen/ARM/tls3.ll Mon Nov 5 12:33:37 2007 @@ -0,0 +1,11 @@ +; RUN: llvm-as < %s | llc -march=arm -mtriple=arm-linux-gnueabi | \ +; RUN: grep {tbss} + +%struct.anon = type { i32, i32 } + at teste = internal thread_local global %struct.anon zeroinitializer ; <%struct.anon*> [#uses=1] + +define i32 @main() { +entry: + %tmp2 = load i32* getelementptr (%struct.anon* @teste, i32 0, i32 0), align 8 ; [#uses=1] + ret i32 %tmp2 +} From isanbard at gmail.com Mon Nov 5 13:06:47 2007 From: isanbard at gmail.com (Bill Wendling) Date: Mon, 5 Nov 2007 12:06:47 -0700 Subject: [llvm-commits] [PATCH] Move the LowerMEMCPY and LowerMEMCPYCall to a common place In-Reply-To: <38a0d8450711050914s13ecaf01x92608e62c5e6b2b3@mail.gmail.com> References: <38a0d8450711050914s13ecaf01x92608e62c5e6b2b3@mail.gmail.com> Message-ID: <16e5fdf90711051106p7ce2663rcf6ce73085295faf@mail.gmail.com> Hi Rafael, > The attached patch passes a "make check". I haven't committed yet > because I am going on vacations and will be a bit slow to respond. I > will still have Internet access and can commit if there is positive > feedback. > Index: include/llvm/Target/TargetLowering.h =================================================================== --- include/llvm/Target/TargetLowering.h (revision 43703) +++ include/llvm/Target/TargetLowering.h (working copy) @@ -22,6 +22,7 @@ #ifndef LLVM_TARGET_TARGETLOWERING_H #define LLVM_TARGET_TARGETLOWERING_H +#include "llvm/Target/TargetSubtarget.h" #include "llvm/CodeGen/SelectionDAGNodes.h" You probably can get away with forward declaring the TargetSubtarget class instead of #including here. > One ugly hack in the CL in to make "Subtarget" and "BaseSubtarget" > independent fields that point to the same object. I did this just to > make the type checker happy. Is there an easier way to merge them then > adding virtual getters to the base class and replacing all uses of > Subtarget? > If you're going to do this, why not just get rid of Subtarget altogether and just use BaseSubtarget? It can be set to 0 for targets that don't use it. Then again, it might not be a bad idea to use virtual getter/setters here. It already has virtual functions, and you're calling virtual functions through this pointer. So... :-) -bw From sabre at nondot.org Mon Nov 5 13:07:01 2007 From: sabre at nondot.org (Chris Lattner) Date: Mon, 05 Nov 2007 19:07:01 -0000 Subject: [llvm-commits] [llvm] r43723 - in /llvm/trunk/docs/tutorial: LangImpl1.html LangImpl2.html LangImpl3.html LangImpl4.html LangImpl5.html LangImpl6.html LangImpl7.html Message-ID: <200711051907.lA5J71K3010444@zion.cs.uiuc.edu> Author: lattner Date: Mon Nov 5 13:06:59 2007 New Revision: 43723 URL: http://llvm.org/viewvc/llvm-project?rev=43723&view=rev Log: add table of contents to each chapter. Modified: llvm/trunk/docs/tutorial/LangImpl1.html llvm/trunk/docs/tutorial/LangImpl2.html llvm/trunk/docs/tutorial/LangImpl3.html llvm/trunk/docs/tutorial/LangImpl4.html llvm/trunk/docs/tutorial/LangImpl5.html llvm/trunk/docs/tutorial/LangImpl6.html llvm/trunk/docs/tutorial/LangImpl7.html Modified: llvm/trunk/docs/tutorial/LangImpl1.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl1.html?rev=43723&r1=43722&r2=43723&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl1.html (original) +++ llvm/trunk/docs/tutorial/LangImpl1.html Mon Nov 5 13:06:59 2007 @@ -13,6 +13,16 @@

    Kaleidoscope: The basic language, with its lexer
    + +

    Written by Chris Lattner

    @@ -32,7 +42,7 @@
    - +
    @@ -99,7 +109,7 @@
    - +
    Modified: llvm/trunk/docs/tutorial/LangImpl2.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl2.html?rev=43723&r1=43722&r2=43723&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl2.html (original) +++ llvm/trunk/docs/tutorial/LangImpl2.html Mon Nov 5 13:06:59 2007 @@ -13,18 +13,34 @@
    Kaleidoscope: Implementing a Parser and AST
    + +

    Written by Chris Lattner

    - +
    -

    Welcome to part 2 of the "Implementing a language with -LLVM" tutorial. This chapter shows you how to use the Welcome to Chapter 2 of the "Implementing a language +with LLVM" tutorial. This chapter shows you how to use the Lexer built in Chapter 1 to build a full parser for our Kaleidoscope language and build an -

    +
    Modified: llvm/trunk/docs/tutorial/LangImpl3.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl3.html?rev=43723&r1=43722&r2=43723&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl3.html (original) +++ llvm/trunk/docs/tutorial/LangImpl3.html Mon Nov 5 13:06:59 2007 @@ -13,18 +13,31 @@
    Kaleidoscope: Code generation to LLVM IR
    + +

    Written by Chris Lattner

    - +
    -

    Welcome to part 3 of the "Implementing a language with -LLVM" tutorial. This chapter shows you how to transform the Welcome to Chapter 3 of the "Implementing a language +with LLVM" tutorial. This chapter shows you how to transform the Abstract Syntax Tree built in Chapter 2 into LLVM IR. This will teach you a little bit about how LLVM does things, as well as demonstrate how easy it is to use. It's much more work to build a lexer and Modified: llvm/trunk/docs/tutorial/LangImpl4.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl4.html?rev=43723&r1=43722&r2=43723&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl4.html (original) +++ llvm/trunk/docs/tutorial/LangImpl4.html Mon Nov 5 13:06:59 2007 @@ -13,21 +13,34 @@

    Kaleidoscope: Adding JIT and Optimizer Support
    + +

    Written by Chris Lattner

    - +
    -

    Welcome to part 4 of the "Implementing a language with -LLVM" tutorial. Parts 1-3 described the implementation of a simple language -and included support for generating LLVM IR. This chapter describes two new -techniques: adding optimizer support to your language, and adding JIT compiler -support. This shows how to get nice efficient code for your language.

    +

    Welcome to Chapter 4 of the "Implementing a language +with LLVM" tutorial. Parts 1-3 described the implementation of a simple +language and included support for generating LLVM IR. This chapter describes +two new techniques: adding optimizer support to your language, and adding JIT +compiler support. This shows how to get nice efficient code for your +language.

    Modified: llvm/trunk/docs/tutorial/LangImpl5.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl5.html?rev=43723&r1=43722&r2=43723&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl5.html (original) +++ llvm/trunk/docs/tutorial/LangImpl5.html Mon Nov 5 13:06:59 2007 @@ -13,18 +13,45 @@
    Kaleidoscope: Extending the Language: Control Flow
    + +

    Written by Chris Lattner

    - +
    -

    Welcome to Part 5 of the "Implementing a language with -LLVM" tutorial. Parts 1-4 described the implementation of the simple +

    Welcome to Chapter 5 of the "Implementing a language +with LLVM" tutorial. Parts 1-4 described the implementation of the simple Kaleidoscope language and included support for generating LLVM IR, following by optimizations and a JIT compiler. Unfortunately, as presented, Kaleidoscope is mostly useless: it has no control flow other than call and return. This means @@ -116,7 +143,7 @@

    + If/Then/Else
    @@ -142,7 +169,7 @@ +If/Then/Else
    Modified: llvm/trunk/docs/tutorial/LangImpl6.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl6.html?rev=43723&r1=43722&r2=43723&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl6.html (original) +++ llvm/trunk/docs/tutorial/LangImpl6.html Mon Nov 5 13:06:59 2007 @@ -13,18 +13,31 @@
    Kaleidoscope: Extending the Language: User-defined Operators
    + +

    Written by Chris Lattner

    - +
    -

    Welcome to Part 6 of the "Implementing a language with -LLVM" tutorial. At this point in our tutorial, we now have a fully +

    Welcome to Chapter 6 of the "Implementing a language +with LLVM" tutorial. At this point in our tutorial, we now have a fully functional language that is fairly minimal, but also useful. One big problem with it though is that it doesn't have many useful operators (like division, logical negation, or even any comparisons other than less-than.

    Modified: llvm/trunk/docs/tutorial/LangImpl7.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl7.html?rev=43723&r1=43722&r2=43723&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl7.html (original) +++ llvm/trunk/docs/tutorial/LangImpl7.html Mon Nov 5 13:06:59 2007 @@ -14,19 +14,35 @@
    Kaleidoscope: Extending the Language: Mutable Variables
    + +

    Written by Chris Lattner

    - +
    -

    Welcome to Part 7 of the "Implementing a language with -LLVM" tutorial. In parts 1 through 6, we've built a very respectable, -albeit simple, Welcome to Chapter 7 of the "Implementing a language +with LLVM" tutorial. In chapters 1 through 6, we've built a very +respectable, albeit simple, functional programming language. In our journey, we learned some parsing techniques, how to build and represent an AST, how to build LLVM IR, and how to optimize From sabre at nondot.org Mon Nov 5 13:10:18 2007 From: sabre at nondot.org (Chris Lattner) Date: Mon, 05 Nov 2007 19:10:18 -0000 Subject: [llvm-commits] [llvm] r43724 - in /llvm/trunk/docs/tutorial: LangImpl8.html index.html Message-ID: <200711051910.lA5JAIu4010596@zion.cs.uiuc.edu> Author: lattner Date: Mon Nov 5 13:10:15 2007 New Revision: 43724 URL: http://llvm.org/viewvc/llvm-project?rev=43724&view=rev Log: TOC for chapter 8 Modified: llvm/trunk/docs/tutorial/LangImpl8.html llvm/trunk/docs/tutorial/index.html Modified: llvm/trunk/docs/tutorial/LangImpl8.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl8.html?rev=43724&r1=43723&r2=43724&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl8.html (original) +++ llvm/trunk/docs/tutorial/LangImpl8.html Mon Nov 5 13:10:15 2007 @@ -3,8 +3,7 @@ - Kaleidoscope: Conclusion, ideas for extensions, and other useful - tidbits + Kaleidoscope: Conclusion and other useful LLVM tidbits @@ -12,14 +11,38 @@ -

    Kaleidoscope: Conclusion
    +
    Kaleidoscope: Conclusion and other useful LLVM + tidbits
    + + +

    Written by Chris Lattner

    - +
    Modified: llvm/trunk/docs/tutorial/index.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/index.html?rev=43724&r1=43723&r2=43724&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/index.html (original) +++ llvm/trunk/docs/tutorial/index.html Mon Nov 5 13:10:15 2007 @@ -34,7 +34,7 @@
  • Extending the language: control flow
  • Extending the language: user-defined operators
  • Extending the language: mutable variables / SSA construction
  • -
  • Conclusion, ideas for extensions, and other useful tidbits
  • +
  • Conclusion and other useful LLVM tidbits
  • Advanced Topics
      From sabre at nondot.org Mon Nov 5 13:22:50 2007 From: sabre at nondot.org (Chris Lattner) Date: Mon, 05 Nov 2007 19:22:50 -0000 Subject: [llvm-commits] [llvm] r43725 - /llvm/trunk/docs/tutorial/LangImpl3.html Message-ID: <200711051922.lA5JMoJf011260@zion.cs.uiuc.edu> Author: lattner Date: Mon Nov 5 13:22:50 2007 New Revision: 43725 URL: http://llvm.org/viewvc/llvm-project?rev=43725&view=rev Log: clarify why prototype::codegen returns a function. Modified: llvm/trunk/docs/tutorial/LangImpl3.html Modified: llvm/trunk/docs/tutorial/LangImpl3.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl3.html?rev=43725&r1=43724&r2=43725&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl3.html (original) +++ llvm/trunk/docs/tutorial/LangImpl3.html Mon Nov 5 13:22:50 2007 @@ -293,7 +293,13 @@
  • -

    This code packs a lot of power into a few lines. The first step is to create +

    This code packs a lot of power into a few lines. Note first that this +function returns a Function* instead of a Value*. Because a "prototype" really +talks about the external interface for a function (not the value computed by +an expression), it makes sense for it to return the LLVM Function it corresponds +to when codegen'd.

    + +

    The next step is to create the FunctionType that should be used for a given Prototype. Since all function arguments in Kaleidoscope are of type double, the first line creates a vector of "N" LLVM Double types. It then uses the FunctionType::get From sabre at nondot.org Mon Nov 5 13:25:14 2007 From: sabre at nondot.org (Chris Lattner) Date: Mon, 05 Nov 2007 19:25:14 -0000 Subject: [llvm-commits] [llvm] r43726 - /llvm/trunk/docs/tutorial/LangImpl3.html Message-ID: <200711051925.lA5JPEiw011432@zion.cs.uiuc.edu> Author: lattner Date: Mon Nov 5 13:25:14 2007 New Revision: 43726 URL: http://llvm.org/viewvc/llvm-project?rev=43726&view=rev Log: mention possibility of using a visitor Modified: llvm/trunk/docs/tutorial/LangImpl3.html Modified: llvm/trunk/docs/tutorial/LangImpl3.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl3.html?rev=43726&r1=43725&r2=43726&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl3.html (original) +++ llvm/trunk/docs/tutorial/LangImpl3.html Mon Nov 5 13:25:14 2007 @@ -62,7 +62,7 @@ class ExprAST { public: virtual ~ExprAST() {} - virtual Value *Codegen() = 0; + virtual Value *Codegen() = 0; }; /// NumberExprAST - Expression class for numeric literals like "1.0". @@ -70,7 +70,7 @@ double Val; public: explicit NumberExprAST(double val) : Val(val) {} - virtual Value *Codegen(); + virtual Value *Codegen(); }; ...

    @@ -88,6 +88,11 @@ href="http://en.wikipedia.org/wiki/Static_single_assignment_form">Static Single Assignment - the concepts are really quite natural once you grok them.

    +

    Note that instead of adding virtual methods to the ExprAST class hierarchy, +it could also make sense to use a visitor pattern or some other way to model +this. Again, this tutorial won't dwell on good software engineering practices: +for our purposes, adding virtual methods is simplest.

    +

    The second thing we want is an "Error" method like we used for parser, which will be used to report errors found during code generation (for example, use of an From sabre at nondot.org Mon Nov 5 13:28:07 2007 From: sabre at nondot.org (Chris Lattner) Date: Mon, 05 Nov 2007 19:28:07 -0000 Subject: [llvm-commits] [llvm] r43727 - /llvm/trunk/docs/tutorial/LangImpl8.html Message-ID: <200711051928.lA5JS7Ff011572@zion.cs.uiuc.edu> Author: lattner Date: Mon Nov 5 13:28:07 2007 New Revision: 43727 URL: http://llvm.org/viewvc/llvm-project?rev=43727&view=rev Log: recursive types are our friend. Modified: llvm/trunk/docs/tutorial/LangImpl8.html Modified: llvm/trunk/docs/tutorial/LangImpl8.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl8.html?rev=43727&r1=43726&r2=43727&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl8.html (original) +++ llvm/trunk/docs/tutorial/LangImpl8.html Mon Nov 5 13:28:07 2007 @@ -89,7 +89,10 @@ mostly an exercise in learning how the LLVM getelementptr instruction works. The getelementptr instruction is so nifty/unconventional, it has its own FAQ!). +href="../GetElementPtr.html">has its own FAQ!). If you add support +for recursive types (e.g. linked lists), make sure to read the section in the LLVM +Programmer's Manual that describes how to construct them.

  • standard runtime - Our current language allows the user to access arbitrary external functions, and we use it for things like "printd" and From dpatel at apple.com Mon Nov 5 13:32:30 2007 From: dpatel at apple.com (Devang Patel) Date: Mon, 05 Nov 2007 19:32:30 -0000 Subject: [llvm-commits] [llvm] r43728 - in /llvm/trunk: lib/Transforms/Scalar/LoopUnroll.cpp test/Transforms/LoopUnroll/2007-11-05-Crash.ll Message-ID: <200711051932.lA5JWUjY011811@zion.cs.uiuc.edu> Author: dpatel Date: Mon Nov 5 13:32:30 2007 New Revision: 43728 URL: http://llvm.org/viewvc/llvm-project?rev=43728&view=rev Log: If a value is incoming from outside the loop then the value does not need remapping and the value is never tracked through LastValueMap. Added: llvm/trunk/test/Transforms/LoopUnroll/2007-11-05-Crash.ll Modified: llvm/trunk/lib/Transforms/Scalar/LoopUnroll.cpp Modified: llvm/trunk/lib/Transforms/Scalar/LoopUnroll.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopUnroll.cpp?rev=43728&r1=43727&r2=43728&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/LoopUnroll.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/LoopUnroll.cpp Mon Nov 5 13:32:30 2007 @@ -370,9 +370,6 @@ if (isa(UseInst) && !L->contains(UseInst->getParent())) { PHINode *phi = cast(UseInst); Value *Incoming = phi->getIncomingValueForBlock(*BB); - if (isa(Incoming)) - Incoming = LastValueMap[Incoming]; - phi->addIncoming(Incoming, New); } } Added: llvm/trunk/test/Transforms/LoopUnroll/2007-11-05-Crash.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopUnroll/2007-11-05-Crash.ll?rev=43728&view=auto ============================================================================== --- llvm/trunk/test/Transforms/LoopUnroll/2007-11-05-Crash.ll (added) +++ llvm/trunk/test/Transforms/LoopUnroll/2007-11-05-Crash.ll Mon Nov 5 13:32:30 2007 @@ -0,0 +1,293 @@ +; RUN: llvm-as < %s | opt -disable-output -loop-unroll +; PR1770 + %struct.cl_engine = type { i32, i16, i32, i8**, i8**, i8*, i8*, i8*, i8*, i8*, i8*, i8* } + %struct.cl_limits = type { i32, i32, i32, i32, i16, i64 } + %struct.cli_ac_alt = type { i8, i8*, i16, i16, %struct.cli_ac_alt* } + %struct.cli_ac_node = type { i8, i8, %struct.cli_ac_patt*, %struct.cli_ac_node**, %struct.cli_ac_node* } + %struct.cli_ac_patt = type { i16*, i16*, i16, i16, i8, i32, i32, i8*, i8*, i32, i16, i16, i16, i16, %struct.cli_ac_alt**, i8, i16, %struct.cli_ac_patt*, %struct.cli_ac_patt* } + %struct.cli_bm_patt = type { i8*, i32, i8*, i8*, i8, %struct.cli_bm_patt* } + %struct.cli_ctx = type { i8**, i64*, %struct.cli_matcher*, %struct.cl_engine*, %struct.cl_limits*, i32, i32, i32, i32, %struct.cli_dconf* } + %struct.cli_dconf = type { i32, i32, i32, i32, i32, i32, i32 } + %struct.cli_matcher = type { i16, i8, i32*, %struct.cli_bm_patt**, i32*, i32, i8, i8, %struct.cli_ac_node*, %struct.cli_ac_node**, %struct.cli_ac_patt**, i32, i32, i32 } + +declare i8* @calloc(i64, i64) + +define fastcc i32 @cli_scanpe(i32 %desc, %struct.cli_ctx* %ctx) { +entry: + br i1 false, label %cond_next17, label %cond_true14 + +cond_true14: ; preds = %entry + ret i32 0 + +cond_next17: ; preds = %entry + br i1 false, label %LeafBlock, label %LeafBlock1250 + +LeafBlock1250: ; preds = %cond_next17 + ret i32 0 + +LeafBlock: ; preds = %cond_next17 + br i1 false, label %cond_next33, label %cond_true30 + +cond_true30: ; preds = %LeafBlock + ret i32 0 + +cond_next33: ; preds = %LeafBlock + br i1 false, label %cond_next90, label %cond_true42 + +cond_true42: ; preds = %cond_next33 + ret i32 0 + +cond_next90: ; preds = %cond_next33 + br i1 false, label %cond_next100, label %cond_true97 + +cond_true97: ; preds = %cond_next90 + ret i32 0 + +cond_next100: ; preds = %cond_next90 + br i1 false, label %cond_next109, label %cond_true106 + +cond_true106: ; preds = %cond_next100 + ret i32 0 + +cond_next109: ; preds = %cond_next100 + br i1 false, label %cond_false, label %cond_true118 + +cond_true118: ; preds = %cond_next109 + ret i32 0 + +cond_false: ; preds = %cond_next109 + br i1 false, label %NodeBlock1482, label %cond_true126 + +cond_true126: ; preds = %cond_false + ret i32 0 + +NodeBlock1482: ; preds = %cond_false + br i1 false, label %cond_next285, label %NodeBlock1480 + +NodeBlock1480: ; preds = %NodeBlock1482 + ret i32 0 + +cond_next285: ; preds = %NodeBlock1482 + br i1 false, label %cond_next320, label %cond_true294 + +cond_true294: ; preds = %cond_next285 + ret i32 0 + +cond_next320: ; preds = %cond_next285 + br i1 false, label %LeafBlock1491, label %LeafBlock1493 + +LeafBlock1493: ; preds = %cond_next320 + ret i32 0 + +LeafBlock1491: ; preds = %cond_next320 + br i1 false, label %cond_true400, label %cond_true378 + +cond_true378: ; preds = %LeafBlock1491 + ret i32 1 + +cond_true400: ; preds = %LeafBlock1491 + br i1 false, label %cond_next413, label %cond_true406 + +cond_true406: ; preds = %cond_true400 + ret i32 0 + +cond_next413: ; preds = %cond_true400 + br i1 false, label %cond_next429, label %cond_true424 + +cond_true424: ; preds = %cond_next413 + ret i32 0 + +cond_next429: ; preds = %cond_next413 + br i1 false, label %NodeBlock1557, label %NodeBlock1579 + +NodeBlock1579: ; preds = %cond_next429 + ret i32 0 + +NodeBlock1557: ; preds = %cond_next429 + br i1 false, label %LeafBlock1543, label %NodeBlock1555 + +NodeBlock1555: ; preds = %NodeBlock1557 + ret i32 0 + +LeafBlock1543: ; preds = %NodeBlock1557 + br i1 false, label %cond_next870, label %cond_next663 + +cond_next663: ; preds = %LeafBlock1543 + ret i32 0 + +cond_next870: ; preds = %LeafBlock1543 + br i1 false, label %cond_true1012, label %cond_true916 + +cond_true916: ; preds = %cond_next870 + ret i32 0 + +cond_true1012: ; preds = %cond_next870 + br i1 false, label %cond_next3849, label %cond_true2105 + +cond_true2105: ; preds = %cond_true1012 + ret i32 0 + +cond_next3849: ; preds = %cond_true1012 + br i1 false, label %cond_next4378, label %bb6559 + +bb3862: ; preds = %cond_next4385 + br i1 false, label %cond_false3904, label %cond_true3876 + +cond_true3876: ; preds = %bb3862 + ret i32 0 + +cond_false3904: ; preds = %bb3862 + br i1 false, label %cond_next4003, label %cond_true3935 + +cond_true3935: ; preds = %cond_false3904 + ret i32 0 + +cond_next4003: ; preds = %cond_false3904 + br i1 false, label %cond_next5160, label %cond_next4015 + +cond_next4015: ; preds = %cond_next4003 + ret i32 0 + +cond_next4378: ; preds = %cond_next3849 + br i1 false, label %cond_next4385, label %bb4393 + +cond_next4385: ; preds = %cond_next4378 + br i1 false, label %bb3862, label %bb4393 + +bb4393: ; preds = %cond_next4385, %cond_next4378 + ret i32 0 + +cond_next5160: ; preds = %cond_next4003 + br i1 false, label %bb5188, label %bb6559 + +bb5188: ; preds = %cond_next5160 + br i1 false, label %cond_next5285, label %cond_true5210 + +cond_true5210: ; preds = %bb5188 + ret i32 0 + +cond_next5285: ; preds = %bb5188 + br i1 false, label %cond_true5302, label %cond_true5330 + +cond_true5302: ; preds = %cond_next5285 + br i1 false, label %bb7405, label %bb7367 + +cond_true5330: ; preds = %cond_next5285 + ret i32 0 + +bb6559: ; preds = %cond_next5160, %cond_next3849 + ret i32 0 + +bb7367: ; preds = %cond_true5302 + ret i32 0 + +bb7405: ; preds = %cond_true5302 + br i1 false, label %cond_next8154, label %cond_true7410 + +cond_true7410: ; preds = %bb7405 + ret i32 0 + +cond_next8154: ; preds = %bb7405 + br i1 false, label %cond_true8235, label %bb9065 + +cond_true8235: ; preds = %cond_next8154 + br i1 false, label %bb8274, label %bb8245 + +bb8245: ; preds = %cond_true8235 + ret i32 0 + +bb8274: ; preds = %cond_true8235 + br i1 false, label %cond_next8358, label %cond_true8295 + +cond_true8295: ; preds = %bb8274 + ret i32 0 + +cond_next8358: ; preds = %bb8274 + br i1 false, label %cond_next.i509, label %cond_true8371 + +cond_true8371: ; preds = %cond_next8358 + ret i32 -123 + +cond_next.i509: ; preds = %cond_next8358 + br i1 false, label %bb36.i, label %bb33.i + +bb33.i: ; preds = %cond_next.i509 + ret i32 0 + +bb36.i: ; preds = %cond_next.i509 + br i1 false, label %cond_next54.i, label %cond_true51.i + +cond_true51.i: ; preds = %bb36.i + ret i32 0 + +cond_next54.i: ; preds = %bb36.i + %tmp10.i.i527 = call i8* @calloc( i64 0, i64 1 ) ; [#uses=1] + br i1 false, label %cond_next11.i.i, label %bb132.i + +bb132.i: ; preds = %cond_next54.i + ret i32 0 + +cond_next11.i.i: ; preds = %cond_next54.i + br i1 false, label %bb32.i.i545, label %cond_true1008.critedge.i + +bb32.i.i545: ; preds = %cond_next11.i.i + br i1 false, label %cond_next349.i, label %cond_true184.i + +cond_true184.i: ; preds = %bb32.i.i545 + ret i32 0 + +cond_next349.i: ; preds = %bb32.i.i545 + br i1 false, label %cond_next535.i, label %cond_true1008.critedge1171.i + +cond_next535.i: ; preds = %cond_next349.i + br i1 false, label %cond_next569.i, label %cond_false574.i + +cond_next569.i: ; preds = %cond_next535.i + br i1 false, label %cond_next670.i, label %cond_true1008.critedge1185.i + +cond_false574.i: ; preds = %cond_next535.i + ret i32 0 + +cond_next670.i: ; preds = %cond_next569.i + br i1 false, label %cond_true692.i, label %cond_next862.i + +cond_true692.i: ; preds = %cond_next670.i + br i1 false, label %cond_false742.i, label %cond_true718.i + +cond_true718.i: ; preds = %cond_true692.i + ret i32 0 + +cond_false742.i: ; preds = %cond_true692.i + br i1 false, label %cond_true784.i, label %cond_next9079 + +cond_true784.i: ; preds = %cond_next811.i, %cond_false742.i + %indvar1411.i.reg2mem.0 = phi i8 [ %indvar.next1412.i, %cond_next811.i ], [ 0, %cond_false742.i ] ; [#uses=1] + br i1 false, label %cond_true1008.critedge1190.i, label %cond_next811.i + +cond_next811.i: ; preds = %cond_true784.i + %indvar.next1412.i = add i8 %indvar1411.i.reg2mem.0, 1 ; [#uses=2] + %tmp781.i = icmp eq i8 %indvar.next1412.i, 3 ; [#uses=1] + br i1 %tmp781.i, label %cond_next9079, label %cond_true784.i + +cond_next862.i: ; preds = %cond_next670.i + ret i32 0 + +cond_true1008.critedge.i: ; preds = %cond_next11.i.i + ret i32 0 + +cond_true1008.critedge1171.i: ; preds = %cond_next349.i + ret i32 0 + +cond_true1008.critedge1185.i: ; preds = %cond_next569.i + ret i32 0 + +cond_true1008.critedge1190.i: ; preds = %cond_true784.i + %tmp621.i532.lcssa610 = phi i8* [ %tmp10.i.i527, %cond_true784.i ] ; [#uses=0] + ret i32 0 + +bb9065: ; preds = %cond_next8154 + ret i32 0 + +cond_next9079: ; preds = %cond_next811.i, %cond_false742.i + ret i32 0 +} From sabre at nondot.org Mon Nov 5 13:33:52 2007 From: sabre at nondot.org (Chris Lattner) Date: Mon, 05 Nov 2007 19:33:52 -0000 Subject: [llvm-commits] [llvm] r43729 - /llvm/trunk/docs/tutorial/LangImpl3.html Message-ID: <200711051933.lA5JXqHM011893@zion.cs.uiuc.edu> Author: lattner Date: Mon Nov 5 13:33:52 2007 New Revision: 43729 URL: http://llvm.org/viewvc/llvm-project?rev=43729&view=rev Log: grammaro Modified: llvm/trunk/docs/tutorial/LangImpl3.html Modified: llvm/trunk/docs/tutorial/LangImpl3.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl3.html?rev=43729&r1=43728&r2=43729&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl3.html (original) +++ llvm/trunk/docs/tutorial/LangImpl3.html Mon Nov 5 13:33:52 2007 @@ -91,7 +91,7 @@

    Note that instead of adding virtual methods to the ExprAST class hierarchy, it could also make sense to use a visitor pattern or some other way to model this. Again, this tutorial won't dwell on good software engineering practices: -for our purposes, adding virtual methods is simplest.

    +for our purposes, adding a virtual method is simplest.

    The second thing we want is an "Error" method like we used for parser, which will From sabre at nondot.org Mon Nov 5 14:04:57 2007 From: sabre at nondot.org (Chris Lattner) Date: Mon, 05 Nov 2007 20:04:57 -0000 Subject: [llvm-commits] [llvm] r43730 - in /llvm/trunk/docs/tutorial: LangImpl1.html LangImpl2.html LangImpl3.html LangImpl4.html LangImpl5.html LangImpl6.html LangImpl7.html LangImpl8.html Message-ID: <200711052004.lA5K4vvP013301@zion.cs.uiuc.edu> Author: lattner Date: Mon Nov 5 14:04:56 2007 New Revision: 43730 URL: http://llvm.org/viewvc/llvm-project?rev=43730&view=rev Log: add some links to the tutorial index and between chapters. Modified: llvm/trunk/docs/tutorial/LangImpl1.html llvm/trunk/docs/tutorial/LangImpl2.html llvm/trunk/docs/tutorial/LangImpl3.html llvm/trunk/docs/tutorial/LangImpl4.html llvm/trunk/docs/tutorial/LangImpl5.html llvm/trunk/docs/tutorial/LangImpl6.html llvm/trunk/docs/tutorial/LangImpl7.html llvm/trunk/docs/tutorial/LangImpl8.html Modified: llvm/trunk/docs/tutorial/LangImpl1.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl1.html?rev=43730&r1=43729&r2=43730&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl1.html (original) +++ llvm/trunk/docs/tutorial/LangImpl1.html Mon Nov 5 14:04:56 2007 @@ -14,6 +14,7 @@

    Kaleidoscope: The basic language, with its lexer
    Modified: llvm/trunk/docs/tutorial/LangImpl2.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl2.html?rev=43730&r1=43729&r2=43730&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl2.html (original) +++ llvm/trunk/docs/tutorial/LangImpl2.html Mon Nov 5 14:04:56 2007 @@ -14,6 +14,7 @@
    Kaleidoscope: Implementing a Parser and AST
    Modified: llvm/trunk/docs/tutorial/LangImpl3.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl3.html?rev=43730&r1=43729&r2=43730&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl3.html (original) +++ llvm/trunk/docs/tutorial/LangImpl3.html Mon Nov 5 14:04:56 2007 @@ -14,6 +14,7 @@
    Kaleidoscope: Code generation to LLVM IR
    Modified: llvm/trunk/docs/tutorial/LangImpl4.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl4.html?rev=43730&r1=43729&r2=43730&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl4.html (original) +++ llvm/trunk/docs/tutorial/LangImpl4.html Mon Nov 5 14:04:56 2007 @@ -14,6 +14,7 @@
    Kaleidoscope: Adding JIT and Optimizer Support
    Modified: llvm/trunk/docs/tutorial/LangImpl5.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl5.html?rev=43730&r1=43729&r2=43730&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl5.html (original) +++ llvm/trunk/docs/tutorial/LangImpl5.html Mon Nov 5 14:04:56 2007 @@ -14,6 +14,7 @@
    Kaleidoscope: Extending the Language: Control Flow
    Modified: llvm/trunk/docs/tutorial/LangImpl6.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl6.html?rev=43730&r1=43729&r2=43730&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl6.html (original) +++ llvm/trunk/docs/tutorial/LangImpl6.html Mon Nov 5 14:04:56 2007 @@ -14,6 +14,7 @@
    Kaleidoscope: Extending the Language: User-defined Operators
    Modified: llvm/trunk/docs/tutorial/LangImpl7.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl7.html?rev=43730&r1=43729&r2=43730&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl7.html (original) +++ llvm/trunk/docs/tutorial/LangImpl7.html Mon Nov 5 14:04:56 2007 @@ -15,6 +15,7 @@
    Kaleidoscope: Extending the Language: Mutable Variables
    Modified: llvm/trunk/docs/tutorial/LangImpl8.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl8.html?rev=43730&r1=43729&r2=43730&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl8.html (original) +++ llvm/trunk/docs/tutorial/LangImpl8.html Mon Nov 5 14:04:56 2007 @@ -15,6 +15,7 @@ tidbits
      +
    • Up to Tutorial Index
    • Chapter 8
      1. Tutorial Conclusion
      2. From sabre at nondot.org Mon Nov 5 14:13:57 2007 From: sabre at nondot.org (Chris Lattner) Date: Mon, 05 Nov 2007 20:13:57 -0000 Subject: [llvm-commits] [llvm] r43731 - /llvm/trunk/docs/tutorial/LangImpl1.html Message-ID: <200711052013.lA5KDvmr013756@zion.cs.uiuc.edu> Author: lattner Date: Mon Nov 5 14:13:56 2007 New Revision: 43731 URL: http://llvm.org/viewvc/llvm-project?rev=43731&view=rev Log: merge in various fixes from Kelly Wilson. Modified: llvm/trunk/docs/tutorial/LangImpl1.html Modified: llvm/trunk/docs/tutorial/LangImpl1.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl1.html?rev=43731&r1=43730&r2=43731&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl1.html (original) +++ llvm/trunk/docs/tutorial/LangImpl1.html Mon Nov 5 14:13:56 2007 @@ -36,9 +36,10 @@

        Welcome to the "Implementing a language with LLVM" tutorial. This tutorial -will run through implementation of a simple language, showing how fun and easy -it can be. This tutorial will get you up and started and build a framework you -can extend to other languages and to play with other things. +will run the through implementation of a simple language, showing how fun and +easy it can be. This tutorial will get you up and started as well as help to +build a framework you can extend to other languages. You can also use this +tutorial to help you start playing with other LLVM specific things.

        @@ -53,16 +54,15 @@ "Kaleidoscope". Kaleidoscope is a procedural language that allows you to define functions, use conditionals, math, etc. Over the course of the tutorial, we'll extend -Kaleidoscope to support if/then/else, operator overloading, JIT compilation with -a simple command line interface, etc.

        +Kaleidoscope to support the if/then/else construct, a for loop, user defined +operators, JIT compilation with a simple command line interface, etc.

        -

        Because we want to keep things simple, in Kaleidoscope the only datatype is a +

        Because we want to keep things simple, the only datatype in Kaleidoscope is a 64-bit floating point type (aka 'double' in C parlance). As such, all values are implicitly double precision and the language doesn't require type declarations. This gives the language a very nice and simple syntax. For -example, A simple example computes Fibonacci numbers, -which looks like this:

        +example, the following simple example computes Fibonacci numbers:

        @@ -96,8 +96,8 @@
         

        In the first incarnation of the language, we will only support basic arithmetic: if/then/else will be added in a future installment. Another interesting aspect of the first implementation is that it is a completely -functional language, which does not allow you to have side-effects etc. We will -eventually add side effects for those who prefer them.

        +functional language, which does not allow you to have side-effects, etc. We +will eventually add side effects for those who prefer them.

        In order to make this tutorial maximally understandable and hackable, we choose to implement everything in C++ @@ -145,7 +145,7 @@

        Each token returned by our lexer will either be one of the Token enum values -or it will be an 'unknown' character like '+' which is returned as its ascii +or it will be an 'unknown' character like '+', which is returned as its ascii value. If the current token is an identifier, the IdentifierStr global variable holds the name of the identifier. If the current token is a numeric literal (like 1.0), NumVal holds its value. Note that we use @@ -153,9 +153,9 @@ implementation :).

        -

        The actual implementation of the lexer is a single function gettok. -gettok is called to return the next token from standard input. Its -definition starts as:

        +

        The actual implementation of the lexer is a single function named +gettok. The gettok function is called to return the next token +from standard input. Its definition starts as:

        @@ -172,12 +172,12 @@
         

        gettok works by calling the C getchar() function to read characters one at a time from standard input. It eats them as it recognizes -them and stores the last character read but not processed in LastChar. The +them and stores the last character read, but not processed, in LastChar. The first thing that it has to do is ignore whitespace between tokens. This is accomplished with the loop above.

        -

        The next thing it needs to do is recognize identifiers, and specific keywords -like "def". Kaleidoscope does this with this simple loop:

        +

        The next thing gettok needs to do is recognize identifiers and +specific keywords like "def". Kaleidoscope does this with this simple loop:

        @@ -193,9 +193,9 @@
         
        -

        Note that it sets the 'IdentifierStr' global whenever it lexes an -identifier. Also, since language keywords are matched by the same loop, we -handle them here inline. Numeric values are similar:

        +

        Note that this code sets the 'IdentifierStr' global whenever it +lexes an identifier. Also, since language keywords are matched by the same +loop, we handle them here inline. Numeric values are similar:

        @@ -251,7 +251,9 @@
         
        -

        With this, we have the complete lexer for the basic Kaleidoscope language. +

        With this, we have the complete lexer for the basic Kaleidoscope language +(the full code listing for the Lexer is +available in the next chapter of the tutorial). Next we'll build a simple parser that uses this to build an Abstract Syntax Tree. When we have that, we'll include a driver so that you can use the lexer and parser together. From espindola at google.com Mon Nov 5 14:44:36 2007 From: espindola at google.com (Rafael Espindola) Date: Mon, 5 Nov 2007 20:44:36 +0000 Subject: [llvm-commits] [PATCH] Move the LowerMEMCPY and LowerMEMCPYCall to a common place In-Reply-To: <16e5fdf90711051106p7ce2663rcf6ce73085295faf@mail.gmail.com> References: <38a0d8450711050914s13ecaf01x92608e62c5e6b2b3@mail.gmail.com> <16e5fdf90711051106p7ce2663rcf6ce73085295faf@mail.gmail.com> Message-ID: <38a0d8450711051244l25cf8ec4n341a66375bcb7c0c@mail.gmail.com> > You probably can get away with forward declaring the TargetSubtarget > class instead of #including here. Good catch. Will try that. > If you're going to do this, why not just get rid of Subtarget > altogether and just use BaseSubtarget? It can be set to 0 for targets > that don't use it. Then again, it might not be a bad idea to use > virtual getter/setters here. It already has virtual functions, and > you're calling virtual functions through this pointer. So... :-) The problem with using only BaseSubtarget is that X86Subtarget adds a lot of methods to the base implementation. Because of this the X86 code really expects to see a pointer to the X86Subtarget and not TargetSubtarget. I.E., a downcast is needed. > -bw > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits > Thanks, -- Rafael Avila de Espindola Google Ireland Ltd. Gordon House Barrow Street Dublin 4 Ireland Registered in Dublin, Ireland Registration Number: 368047 From kremenek at apple.com Mon Nov 5 14:47:27 2007 From: kremenek at apple.com (Ted Kremenek) Date: Mon, 05 Nov 2007 20:47:27 -0000 Subject: [llvm-commits] [llvm] r43732 - in /llvm/trunk: include/llvm/Bitcode/Serialize.h lib/Bitcode/Reader/Deserialize.cpp Message-ID: <200711052047.lA5KlSc4015748@zion.cs.uiuc.edu> Author: kremenek Date: Mon Nov 5 14:47:27 2007 New Revision: 43732 URL: http://llvm.org/viewvc/llvm-project?rev=43732&view=rev Log: Added default creation of root-level block by bitstream serializer. Modified: llvm/trunk/include/llvm/Bitcode/Serialize.h llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp Modified: llvm/trunk/include/llvm/Bitcode/Serialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Serialize.h?rev=43732&r1=43731&r2=43732&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Serialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Serialize.h Mon Nov 5 14:47:27 2007 @@ -31,7 +31,7 @@ MapTy PtrMap; public: - Serializer(BitstreamWriter& stream, unsigned BlockID = 0); + Serializer(BitstreamWriter& stream, unsigned BlockID = 8); ~Serializer(); Modified: llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp?rev=43732&r1=43731&r2=43732&view=diff ============================================================================== --- llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp (original) +++ llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp Mon Nov 5 14:47:27 2007 @@ -47,9 +47,28 @@ // FIXME: Check if we haven't run off the edge of the stream. // FIXME: Handle abbreviations. - // FIXME: Check for the correct code. - unsigned Code = Stream.ReadCode(); + unsigned Code; + while (true) { + + Code = Stream.ReadCode(); + + if (Code == bitc::ENTER_SUBBLOCK) { + // No known subblocks, always skip them. + unsigned id = Stream.ReadSubBlockID(); + Stream.EnterSubBlock(id); + continue; + } + + if (Code == bitc::END_BLOCK) { + bool x = Stream.ReadBlockEnd(); + assert (!x && "Error at block end."); + continue; + } + + break; + } + assert (Record.size() == 0); Stream.ReadRecord(Code,Record); assert (Record.size() > 0); @@ -141,7 +160,7 @@ MapTy::value_type& E = BPatchMap.FindAndConstruct(BPKey(PtrId)); - assert (!HasFinalPtr(E) && + assert (HasFinalPtr(E) && "Cannot backpatch references. Object must be already deserialized."); return GetFinalPtr(E); From isanbard at gmail.com Mon Nov 5 15:12:51 2007 From: isanbard at gmail.com (Bill Wendling) Date: Mon, 5 Nov 2007 13:12:51 -0800 Subject: [llvm-commits] [PATCH] Move the LowerMEMCPY and LowerMEMCPYCall to a common place In-Reply-To: <38a0d8450711051244l25cf8ec4n341a66375bcb7c0c@mail.gmail.com> References: <38a0d8450711050914s13ecaf01x92608e62c5e6b2b3@mail.gmail.com> <16e5fdf90711051106p7ce2663rcf6ce73085295faf@mail.gmail.com> <38a0d8450711051244l25cf8ec4n341a66375bcb7c0c@mail.gmail.com> Message-ID: <16e5fdf90711051312s17e733b7p6856cb8bfd06c5bd@mail.gmail.com> On 11/5/07, Rafael Espindola wrote: > > If you're going to do this, why not just get rid of Subtarget > > altogether and just use BaseSubtarget? It can be set to 0 for targets > > that don't use it. Then again, it might not be a bad idea to use > > virtual getter/setters here. It already has virtual functions, and > > you're calling virtual functions through this pointer. So... :-) > > The problem with using only BaseSubtarget is that X86Subtarget adds a > lot of methods to the base implementation. Because of this the X86 > code really expects to see a pointer to the X86Subtarget and not > TargetSubtarget. I.E., a downcast is needed. > I was thinking the opposite way, but wrote down the other way. :-) If you use just Subtarget in each target that implements it and then expose it through the getter, then you don't need the down-cast, only an upcast. So no RTTI, etc. That way there's no extra info for targets which don't have a subtarget, etc. What do you think? -bw From dalej at apple.com Mon Nov 5 15:20:28 2007 From: dalej at apple.com (Dale Johannesen) Date: Mon, 05 Nov 2007 21:20:28 -0000 Subject: [llvm-commits] [llvm] r43734 - in /llvm/trunk: lib/AsmParser/ParserInternals.h lib/AsmParser/llvmAsmParser.cpp.cvs lib/AsmParser/llvmAsmParser.h.cvs lib/AsmParser/llvmAsmParser.y lib/AsmParser/llvmAsmParser.y.cvs lib/Bitcode/Reader/BitcodeReader.cpp lib/CodeGen/AsmPrinter.cpp lib/CodeGen/SelectionDAG/ScheduleDAG.cpp lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp lib/CodeGen/SelectionDAG/TargetLowering.cpp test/CodeGen/X86/asm-block-labels.ll Message-ID: <200711052120.lA5LKTbX017606@zion.cs.uiuc.edu> Author: johannes Date: Mon Nov 5 15:20:28 2007 New Revision: 43734 URL: http://llvm.org/viewvc/llvm-project?rev=43734&view=rev Log: Make labels work in asm blocks; allow labels as parameters. Rename ValueRefList to ParamList in AsmParser, since its only use is for parameters. Added: llvm/trunk/test/CodeGen/X86/asm-block-labels.ll Modified: llvm/trunk/lib/AsmParser/ParserInternals.h llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs llvm/trunk/lib/AsmParser/llvmAsmParser.h.cvs llvm/trunk/lib/AsmParser/llvmAsmParser.y llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp llvm/trunk/lib/CodeGen/AsmPrinter.cpp llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp Modified: llvm/trunk/lib/AsmParser/ParserInternals.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/ParserInternals.h?rev=43734&r1=43733&r2=43734&view=diff ============================================================================== --- llvm/trunk/lib/AsmParser/ParserInternals.h (original) +++ llvm/trunk/lib/AsmParser/ParserInternals.h Mon Nov 5 15:20:28 2007 @@ -241,12 +241,12 @@ typedef std::vector ArgListType; -struct ValueRefListEntry { +struct ParamListEntry { Value *Val; uint16_t Attrs; }; -typedef std::vector ValueRefList; +typedef std::vector ParamList; } // End llvm namespace Modified: llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs?rev=43734&r1=43733&r2=43734&view=diff ============================================================================== --- llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs (original) +++ llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs Mon Nov 5 15:20:28 2007 @@ -1,5 +1,5 @@ -/* A Bison parser, made from /Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y +/* A Bison parser, made from /Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ @@ -155,7 +155,7 @@ #define HIDDEN 398 #define PROTECTED 399 -#line 14 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 14 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" #include "ParserInternals.h" #include "llvm/CallingConv.h" @@ -1109,7 +1109,7 @@ } -#line 968 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 968 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" typedef union { llvm::Module *ModuleVal; llvm::Function *FunctionVal; @@ -1126,7 +1126,7 @@ llvm::ArgListType *ArgList; llvm::TypeWithAttrs TypeWithAttrs; llvm::TypeWithAttrsList *TypeWithAttrsList; - llvm::ValueRefList *ValueRefList; + llvm::ParamList *ParamList; // Represent the RHS of PHI node std::listlength(); i != e; ++i) if ((*yyvsp[0].StrVal)[i] == '"' || (*yyvsp[0].StrVal)[i] == '\\') @@ -2906,23 +2929,23 @@ ; break;} case 124: -#line 1293 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1293 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.StrVal = 0; ; break;} case 125: -#line 1294 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1294 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.StrVal = yyvsp[0].StrVal; ; break;} case 126: -#line 1299 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1299 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" {; break;} case 127: -#line 1300 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1300 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" {; break;} case 128: -#line 1301 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1301 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CurGV->setSection(*yyvsp[0].StrVal); delete yyvsp[0].StrVal; @@ -2930,7 +2953,7 @@ ; break;} case 129: -#line 1306 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1306 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (yyvsp[0].UInt64Val != 0 && !isPowerOf2_32(yyvsp[0].UInt64Val)) GEN_ERROR("Alignment must be a power of two"); @@ -2939,21 +2962,21 @@ ; break;} case 137: -#line 1322 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1322 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.TypeVal = new PATypeHolder(OpaqueType::get()); CHECK_FOR_ERROR ; break;} case 138: -#line 1326 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1326 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.TypeVal = new PATypeHolder(yyvsp[0].PrimType); CHECK_FOR_ERROR ; break;} case 139: -#line 1330 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1330 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Pointer type? if (*yyvsp[-1].TypeVal == Type::LabelTy) GEN_ERROR("Cannot form a pointer to a basic block"); @@ -2963,7 +2986,7 @@ ; break;} case 140: -#line 1337 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1337 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Named types are also simple types... const Type* tmp = getTypeVal(yyvsp[0].ValIDVal); CHECK_FOR_ERROR @@ -2971,7 +2994,7 @@ ; break;} case 141: -#line 1342 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1342 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Type UpReference if (yyvsp[0].UInt64Val > (uint64_t)~0U) GEN_ERROR("Value out of range"); OpaqueType *OT = OpaqueType::get(); // Use temporary placeholder @@ -2982,7 +3005,7 @@ ; break;} case 142: -#line 1350 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1350 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { std::vector Params; ParamAttrsVector Attrs; @@ -3015,7 +3038,7 @@ ; break;} case 143: -#line 1380 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1380 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { std::vector Params; ParamAttrsVector Attrs; @@ -3048,7 +3071,7 @@ ; break;} case 144: -#line 1411 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1411 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Sized array type? yyval.TypeVal = new PATypeHolder(HandleUpRefs(ArrayType::get(*yyvsp[-1].TypeVal, (unsigned)yyvsp[-3].UInt64Val))); delete yyvsp[-1].TypeVal; @@ -3056,7 +3079,7 @@ ; break;} case 145: -#line 1416 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1416 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Vector type? const llvm::Type* ElemTy = yyvsp[-1].TypeVal->get(); if ((unsigned)yyvsp[-3].UInt64Val != yyvsp[-3].UInt64Val) @@ -3071,7 +3094,7 @@ ; break;} case 146: -#line 1428 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1428 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Structure type? std::vector Elements; for (std::list::iterator I = yyvsp[-1].TypeList->begin(), @@ -3084,14 +3107,14 @@ ; break;} case 147: -#line 1438 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1438 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Empty structure type? yyval.TypeVal = new PATypeHolder(StructType::get(std::vector())); CHECK_FOR_ERROR ; break;} case 148: -#line 1442 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1442 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { std::vector Elements; for (std::list::iterator I = yyvsp[-2].TypeList->begin(), @@ -3104,21 +3127,21 @@ ; break;} case 149: -#line 1452 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1452 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Empty structure type? yyval.TypeVal = new PATypeHolder(StructType::get(std::vector(), true)); CHECK_FOR_ERROR ; break;} case 150: -#line 1459 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1459 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.TypeWithAttrs.Ty = yyvsp[-1].TypeVal; yyval.TypeWithAttrs.Attrs = yyvsp[0].ParamAttrs; ; break;} case 151: -#line 1466 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1466 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription()); @@ -3128,13 +3151,13 @@ ; break;} case 152: -#line 1473 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1473 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.TypeVal = new PATypeHolder(Type::VoidTy); ; break;} case 153: -#line 1478 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1478 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.TypeWithAttrsList = new TypeWithAttrsList(); yyval.TypeWithAttrsList->push_back(yyvsp[0].TypeWithAttrs); @@ -3142,14 +3165,14 @@ ; break;} case 154: -#line 1483 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1483 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrsList=yyvsp[-2].TypeWithAttrsList)->push_back(yyvsp[0].TypeWithAttrs); CHECK_FOR_ERROR ; break;} case 156: -#line 1491 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1491 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.TypeWithAttrsList=yyvsp[-2].TypeWithAttrsList; TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None; @@ -3159,7 +3182,7 @@ ; break;} case 157: -#line 1498 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1498 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.TypeWithAttrsList = new TypeWithAttrsList; TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None; @@ -3169,14 +3192,14 @@ ; break;} case 158: -#line 1505 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1505 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.TypeWithAttrsList = new TypeWithAttrsList(); CHECK_FOR_ERROR ; break;} case 159: -#line 1513 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1513 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.TypeList = new std::list(); yyval.TypeList->push_back(*yyvsp[0].TypeVal); @@ -3185,7 +3208,7 @@ ; break;} case 160: -#line 1519 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1519 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeList=yyvsp[-2].TypeList)->push_back(*yyvsp[0].TypeVal); delete yyvsp[0].TypeVal; @@ -3193,7 +3216,7 @@ ; break;} case 161: -#line 1531 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1531 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized arr if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription()); @@ -3224,7 +3247,7 @@ ; break;} case 162: -#line 1559 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1559 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); @@ -3243,7 +3266,7 @@ ; break;} case 163: -#line 1575 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1575 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); @@ -3273,7 +3296,7 @@ ; break;} case 164: -#line 1602 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1602 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized arr if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription()); @@ -3304,7 +3327,7 @@ ; break;} case 165: -#line 1630 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1630 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { const StructType *STy = dyn_cast(yyvsp[-3].TypeVal->get()); if (STy == 0) @@ -3333,7 +3356,7 @@ ; break;} case 166: -#line 1656 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1656 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); @@ -3356,7 +3379,7 @@ ; break;} case 167: -#line 1676 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1676 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { const StructType *STy = dyn_cast(yyvsp[-5].TypeVal->get()); if (STy == 0) @@ -3385,7 +3408,7 @@ ; break;} case 168: -#line 1702 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1702 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-4].TypeVal)->getDescription()); @@ -3408,7 +3431,7 @@ ; break;} case 169: -#line 1722 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1722 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); @@ -3423,7 +3446,7 @@ ; break;} case 170: -#line 1734 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1734 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); @@ -3433,7 +3456,7 @@ ; break;} case 171: -#line 1741 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1741 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); @@ -3502,7 +3525,7 @@ ; break;} case 172: -#line 1807 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1807 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); @@ -3515,7 +3538,7 @@ ; break;} case 173: -#line 1817 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1817 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); @@ -3528,7 +3551,7 @@ ; break;} case 174: -#line 1827 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1827 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // integral constants if (!ConstantInt::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].SInt64Val)) GEN_ERROR("Constant value doesn't fit in type"); @@ -3537,7 +3560,7 @@ ; break;} case 175: -#line 1833 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1833 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // arbitrary precision integer constants uint32_t BitWidth = cast(yyvsp[-1].PrimType)->getBitWidth(); if (yyvsp[0].APIntVal->getBitWidth() > BitWidth) { @@ -3550,7 +3573,7 @@ ; break;} case 176: -#line 1843 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1843 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // integral constants if (!ConstantInt::isValueValidForType(yyvsp[-1].PrimType, yyvsp[0].UInt64Val)) GEN_ERROR("Constant value doesn't fit in type"); @@ -3559,7 +3582,7 @@ ; break;} case 177: -#line 1849 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1849 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // arbitrary precision integer constants uint32_t BitWidth = cast(yyvsp[-1].PrimType)->getBitWidth(); if (yyvsp[0].APIntVal->getBitWidth() > BitWidth) { @@ -3572,7 +3595,7 @@ ; break;} case 178: -#line 1859 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1859 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Boolean constants assert(cast(yyvsp[-1].PrimType)->getBitWidth() == 1 && "Not Bool?"); yyval.ConstVal = ConstantInt::getTrue(); @@ -3580,7 +3603,7 @@ ; break;} case 179: -#line 1864 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1864 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Boolean constants assert(cast(yyvsp[-1].PrimType)->getBitWidth() == 1 && "Not Bool?"); yyval.ConstVal = ConstantInt::getFalse(); @@ -3588,7 +3611,7 @@ ; break;} case 180: -#line 1869 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1869 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Floating point constants if (!ConstantFP::isValueValidForType(yyvsp[-1].PrimType, *yyvsp[0].FPVal)) GEN_ERROR("Floating point constant invalid for type"); @@ -3602,7 +3625,7 @@ ; break;} case 181: -#line 1882 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1882 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); @@ -3617,7 +3640,7 @@ ; break;} case 182: -#line 1894 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1894 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!isa(yyvsp[-2].ConstVal->getType())) GEN_ERROR("GetElementPtr requires a pointer operand"); @@ -3642,7 +3665,7 @@ ; break;} case 183: -#line 1916 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1916 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (yyvsp[-5].ConstVal->getType() != Type::Int1Ty) GEN_ERROR("Select condition must be of boolean type"); @@ -3653,7 +3676,7 @@ ; break;} case 184: -#line 1924 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1924 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType()) GEN_ERROR("Binary operator types must match"); @@ -3662,7 +3685,7 @@ ; break;} case 185: -#line 1930 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1930 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType()) GEN_ERROR("Logical operator types must match"); @@ -3676,7 +3699,7 @@ ; break;} case 186: -#line 1941 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1941 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType()) GEN_ERROR("icmp operand types must match"); @@ -3684,7 +3707,7 @@ ; break;} case 187: -#line 1946 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1946 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (yyvsp[-3].ConstVal->getType() != yyvsp[-1].ConstVal->getType()) GEN_ERROR("fcmp operand types must match"); @@ -3692,7 +3715,7 @@ ; break;} case 188: -#line 1951 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1951 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!ExtractElementInst::isValidOperands(yyvsp[-3].ConstVal, yyvsp[-1].ConstVal)) GEN_ERROR("Invalid extractelement operands"); @@ -3701,7 +3724,7 @@ ; break;} case 189: -#line 1957 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1957 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!InsertElementInst::isValidOperands(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal)) GEN_ERROR("Invalid insertelement operands"); @@ -3710,7 +3733,7 @@ ; break;} case 190: -#line 1963 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1963 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!ShuffleVectorInst::isValidOperands(yyvsp[-5].ConstVal, yyvsp[-3].ConstVal, yyvsp[-1].ConstVal)) GEN_ERROR("Invalid shufflevector operands"); @@ -3719,14 +3742,14 @@ ; break;} case 191: -#line 1972 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1972 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ConstVector = yyvsp[-2].ConstVector)->push_back(yyvsp[0].ConstVal); CHECK_FOR_ERROR ; break;} case 192: -#line 1976 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1976 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.ConstVector = new std::vector(); yyval.ConstVector->push_back(yyvsp[0].ConstVal); @@ -3734,23 +3757,23 @@ ; break;} case 193: -#line 1984 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1984 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.BoolVal = false; ; break;} case 194: -#line 1984 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1984 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.BoolVal = true; ; break;} case 195: -#line 1987 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1987 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.BoolVal = true; ; break;} case 196: -#line 1987 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1987 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.BoolVal = false; ; break;} case 197: -#line 1990 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1990 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { const Type* VTy = yyvsp[-1].TypeVal->get(); Value *V = getVal(VTy, yyvsp[0].ValIDVal); @@ -3765,7 +3788,7 @@ ; break;} case 198: -#line 2002 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2002 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { Constant *Val = yyvsp[-3].ConstVal; const Type *DestTy = yyvsp[-1].TypeVal->get(); @@ -3780,7 +3803,7 @@ ; break;} case 199: -#line 2023 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2023 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.ModuleVal = ParserResult = CurModule.CurrentModule; CurModule.ModuleDone(); @@ -3788,7 +3811,7 @@ ; break;} case 200: -#line 2028 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2028 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.ModuleVal = ParserResult = CurModule.CurrentModule; CurModule.ModuleDone(); @@ -3796,34 +3819,34 @@ ; break;} case 203: -#line 2041 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2041 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CurFun.isDeclare = false; ; break;} case 204: -#line 2041 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2041 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CurFun.FunctionDone(); CHECK_FOR_ERROR ; break;} case 205: -#line 2045 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2045 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CurFun.isDeclare = true; ; break;} case 206: -#line 2045 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2045 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ; break;} case 207: -#line 2048 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2048 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ; break;} case 208: -#line 2051 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2051 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription()); @@ -3850,7 +3873,7 @@ ; break;} case 209: -#line 2075 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2075 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { ResolveTypeTo(yyvsp[-2].StrVal, yyvsp[0].PrimType); @@ -3864,7 +3887,7 @@ ; break;} case 210: -#line 2086 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2086 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { /* "Externally Visible" Linkage */ if (yyvsp[0].ConstVal == 0) @@ -3875,13 +3898,13 @@ ; break;} case 211: -#line 2093 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2093 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; ; break;} case 212: -#line 2097 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2097 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (yyvsp[0].ConstVal == 0) GEN_ERROR("Global value initializer is not a constant"); @@ -3890,13 +3913,13 @@ ; break;} case 213: -#line 2102 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2102 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; ; break;} case 214: -#line 2106 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2106 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription()); @@ -3906,14 +3929,14 @@ ; break;} case 215: -#line 2112 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2112 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; CHECK_FOR_ERROR ; break;} case 216: -#line 2116 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2116 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { std::string Name; if (yyvsp[-4].StrVal) { @@ -3956,19 +3979,19 @@ ; break;} case 217: -#line 2156 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2156 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ; break;} case 218: -#line 2159 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2159 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ; break;} case 219: -#line 2165 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2165 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm(); if (AsmSoFar.empty()) @@ -3980,21 +4003,21 @@ ; break;} case 220: -#line 2175 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2175 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setTargetTriple(*yyvsp[0].StrVal); delete yyvsp[0].StrVal; ; break;} case 221: -#line 2179 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2179 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setDataLayout(*yyvsp[0].StrVal); delete yyvsp[0].StrVal; ; break;} case 223: -#line 2186 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2186 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->addLibrary(*yyvsp[0].StrVal); delete yyvsp[0].StrVal; @@ -4002,7 +4025,7 @@ ; break;} case 224: -#line 2191 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2191 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->addLibrary(*yyvsp[0].StrVal); delete yyvsp[0].StrVal; @@ -4010,13 +4033,13 @@ ; break;} case 225: -#line 2196 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2196 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ; break;} case 226: -#line 2205 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2205 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); @@ -4029,7 +4052,7 @@ ; break;} case 227: -#line 2215 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2215 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); @@ -4042,14 +4065,14 @@ ; break;} case 228: -#line 2226 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2226 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.ArgList = yyvsp[0].ArgList; CHECK_FOR_ERROR ; break;} case 229: -#line 2230 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2230 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.ArgList = yyvsp[-2].ArgList; struct ArgListEntry E; @@ -4061,7 +4084,7 @@ ; break;} case 230: -#line 2239 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2239 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.ArgList = new ArgListType; struct ArgListEntry E; @@ -4073,14 +4096,14 @@ ; break;} case 231: -#line 2248 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2248 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.ArgList = 0; CHECK_FOR_ERROR ; break;} case 232: -#line 2254 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2254 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { std::string FunctionName(*yyvsp[-6].StrVal); delete yyvsp[-6].StrVal; // Free strdup'd memory! @@ -4202,7 +4225,7 @@ ; break;} case 235: -#line 2376 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2376 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.FunctionVal = CurFun.CurrentFunction; @@ -4213,14 +4236,14 @@ ; break;} case 238: -#line 2387 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2387 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.FunctionVal = yyvsp[-1].FunctionVal; CHECK_FOR_ERROR ; break;} case 239: -#line 2392 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2392 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { CurFun.CurrentFunction->setLinkage(yyvsp[-2].Linkage); CurFun.CurrentFunction->setVisibility(yyvsp[-1].Visibility); @@ -4230,77 +4253,77 @@ ; break;} case 240: -#line 2404 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2404 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.BoolVal = false; CHECK_FOR_ERROR ; break;} case 241: -#line 2408 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2408 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.BoolVal = true; CHECK_FOR_ERROR ; break;} case 242: -#line 2413 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2413 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // A reference to a direct constant yyval.ValIDVal = ValID::create(yyvsp[0].SInt64Val); CHECK_FOR_ERROR ; break;} case 243: -#line 2417 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2417 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.ValIDVal = ValID::create(yyvsp[0].UInt64Val); CHECK_FOR_ERROR ; break;} case 244: -#line 2421 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2421 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Perhaps it's an FP constant? yyval.ValIDVal = ValID::create(yyvsp[0].FPVal); CHECK_FOR_ERROR ; break;} case 245: -#line 2425 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2425 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.ValIDVal = ValID::create(ConstantInt::getTrue()); CHECK_FOR_ERROR ; break;} case 246: -#line 2429 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2429 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.ValIDVal = ValID::create(ConstantInt::getFalse()); CHECK_FOR_ERROR ; break;} case 247: -#line 2433 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2433 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.ValIDVal = ValID::createNull(); CHECK_FOR_ERROR ; break;} case 248: -#line 2437 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2437 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.ValIDVal = ValID::createUndef(); CHECK_FOR_ERROR ; break;} case 249: -#line 2441 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2441 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // A vector zero constant. yyval.ValIDVal = ValID::createZeroInit(); CHECK_FOR_ERROR ; break;} case 250: -#line 2445 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2445 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized packed vector const Type *ETy = (*yyvsp[-1].ConstVector)[0]->getType(); int NumElements = yyvsp[-1].ConstVector->size(); @@ -4328,14 +4351,14 @@ ; break;} case 251: -#line 2470 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2470 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.ValIDVal = ValID::create(yyvsp[0].ConstVal); CHECK_FOR_ERROR ; break;} case 252: -#line 2474 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2474 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.ValIDVal = ValID::createInlineAsm(*yyvsp[-2].StrVal, *yyvsp[0].StrVal, yyvsp[-3].BoolVal); delete yyvsp[-2].StrVal; @@ -4344,21 +4367,21 @@ ; break;} case 253: -#line 2484 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2484 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Is it an integer reference...? yyval.ValIDVal = ValID::createLocalID(yyvsp[0].UIntVal); CHECK_FOR_ERROR ; break;} case 254: -#line 2488 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2488 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.ValIDVal = ValID::createGlobalID(yyvsp[0].UIntVal); CHECK_FOR_ERROR ; break;} case 255: -#line 2492 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2492 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Is it a named reference...? yyval.ValIDVal = ValID::createLocalName(*yyvsp[0].StrVal); delete yyvsp[0].StrVal; @@ -4366,7 +4389,7 @@ ; break;} case 256: -#line 2497 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2497 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Is it a named reference...? yyval.ValIDVal = ValID::createGlobalName(*yyvsp[0].StrVal); delete yyvsp[0].StrVal; @@ -4374,7 +4397,7 @@ ; break;} case 259: -#line 2510 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2510 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); @@ -4384,21 +4407,21 @@ ; break;} case 260: -#line 2519 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2519 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.FunctionVal = yyvsp[-1].FunctionVal; CHECK_FOR_ERROR ; break;} case 261: -#line 2523 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2523 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Do not allow functions with 0 basic blocks yyval.FunctionVal = yyvsp[-1].FunctionVal; CHECK_FOR_ERROR ; break;} case 262: -#line 2532 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2532 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { setValueName(yyvsp[0].TermInstVal, yyvsp[-1].StrVal); CHECK_FOR_ERROR @@ -4409,7 +4432,7 @@ ; break;} case 263: -#line 2541 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2541 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (CastInst *CI1 = dyn_cast(yyvsp[0].InstVal)) if (CastInst *CI2 = dyn_cast(CI1->getOperand(0))) @@ -4421,14 +4444,14 @@ ; break;} case 264: -#line 2550 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2550 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Empty space between instruction lists yyval.BasicBlockVal = defineBBVal(ValID::createLocalID(CurFun.NextValNum)); CHECK_FOR_ERROR ; break;} case 265: -#line 2554 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2554 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Labelled (named) basic block yyval.BasicBlockVal = defineBBVal(ValID::createLocalName(*yyvsp[0].StrVal)); delete yyvsp[0].StrVal; @@ -4437,21 +4460,21 @@ ; break;} case 266: -#line 2561 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2561 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Return with a result... yyval.TermInstVal = new ReturnInst(yyvsp[0].ValueVal); CHECK_FOR_ERROR ; break;} case 267: -#line 2565 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2565 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Return with no result... yyval.TermInstVal = new ReturnInst(); CHECK_FOR_ERROR ; break;} case 268: -#line 2569 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2569 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Unconditional Branch... BasicBlock* tmpBB = getBBVal(yyvsp[0].ValIDVal); CHECK_FOR_ERROR @@ -4459,7 +4482,7 @@ ; break;} case 269: -#line 2574 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2574 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { assert(cast(yyvsp[-7].PrimType)->getBitWidth() == 1 && "Not Bool?"); BasicBlock* tmpBBA = getBBVal(yyvsp[-3].ValIDVal); @@ -4472,7 +4495,7 @@ ; break;} case 270: -#line 2584 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2584 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { Value* tmpVal = getVal(yyvsp[-7].PrimType, yyvsp[-6].ValIDVal); CHECK_FOR_ERROR @@ -4494,7 +4517,7 @@ ; break;} case 271: -#line 2603 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2603 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { Value* tmpVal = getVal(yyvsp[-6].PrimType, yyvsp[-5].ValIDVal); CHECK_FOR_ERROR @@ -4506,7 +4529,7 @@ ; break;} case 272: -#line 2613 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2613 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Handle the short syntax @@ -4521,7 +4544,7 @@ ParamAttrsWithIndex PAWI; PAWI.index = 0; PAWI.attrs = yyvsp[-6].ParamAttrs; Attrs.push_back(PAWI); } - ValueRefList::iterator I = yyvsp[-8].ValueRefList->begin(), E = yyvsp[-8].ValueRefList->end(); + ParamList::iterator I = yyvsp[-8].ParamList->begin(), E = yyvsp[-8].ParamList->end(); unsigned index = 1; for (; I != E; ++I, ++index) { const Type *Ty = I->Val->getType(); @@ -4552,7 +4575,7 @@ // Check the arguments ValueList Args; - if (yyvsp[-8].ValueRefList->empty()) { // Has no arguments? + if (yyvsp[-8].ParamList->empty()) { // Has no arguments? // Make sure no arguments is a good thing! if (Ty->getNumParams() != 0) GEN_ERROR("No arguments passed to a function that " @@ -4562,7 +4585,7 @@ // correctly! FunctionType::param_iterator I = Ty->param_begin(); FunctionType::param_iterator E = Ty->param_end(); - ValueRefList::iterator ArgI = yyvsp[-8].ValueRefList->begin(), ArgE = yyvsp[-8].ValueRefList->end(); + ParamList::iterator ArgI = yyvsp[-8].ParamList->begin(), ArgE = yyvsp[-8].ParamList->end(); for (; ArgI != ArgE && I != E; ++ArgI, ++I) { if (ArgI->Val->getType() != *I) @@ -4583,26 +4606,26 @@ InvokeInst *II = new InvokeInst(V, Normal, Except, Args.begin(), Args.end()); II->setCallingConv(yyvsp[-12].UIntVal); yyval.TermInstVal = II; - delete yyvsp[-8].ValueRefList; + delete yyvsp[-8].ParamList; CHECK_FOR_ERROR ; break;} case 273: -#line 2692 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2692 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.TermInstVal = new UnwindInst(); CHECK_FOR_ERROR ; break;} case 274: -#line 2696 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2696 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.TermInstVal = new UnreachableInst(); CHECK_FOR_ERROR ; break;} case 275: -#line 2703 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2703 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.JumpTable = yyvsp[-5].JumpTable; Constant *V = cast(getExistingVal(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal)); @@ -4616,7 +4639,7 @@ ; break;} case 276: -#line 2714 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2714 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.JumpTable = new std::vector >(); Constant *V = cast(getExistingVal(yyvsp[-4].PrimType, yyvsp[-3].ValIDVal)); @@ -4631,7 +4654,7 @@ ; break;} case 277: -#line 2727 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2727 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Is this definition named?? if so, assign the name... setValueName(yyvsp[0].InstVal, yyvsp[-1].StrVal); @@ -4642,7 +4665,7 @@ ; break;} case 278: -#line 2737 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2737 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Used for PHI nodes if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-5].TypeVal)->getDescription()); @@ -4656,7 +4679,7 @@ ; break;} case 279: -#line 2748 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2748 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.PHIList = yyvsp[-6].PHIList; Value* tmpVal = getVal(yyvsp[-6].PHIList->front().first->getType(), yyvsp[-3].ValIDVal); @@ -4667,61 +4690,79 @@ ; break;} case 280: -#line 2758 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2758 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); // Used for call and invoke instructions - yyval.ValueRefList = new ValueRefList(); - ValueRefListEntry E; E.Attrs = yyvsp[0].ParamAttrs; E.Val = getVal(yyvsp[-2].TypeVal->get(), yyvsp[-1].ValIDVal); - yyval.ValueRefList->push_back(E); + yyval.ParamList = new ParamList(); + ParamListEntry E; E.Attrs = yyvsp[0].ParamAttrs; E.Val = getVal(yyvsp[-2].TypeVal->get(), yyvsp[-1].ValIDVal); + yyval.ParamList->push_back(E); delete yyvsp[-2].TypeVal; ; break;} case 281: -#line 2767 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2767 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" +{ + // Labels are only valid in ASMs + yyval.ParamList = new ParamList(); + ParamListEntry E; E.Attrs = yyvsp[0].ParamAttrs; E.Val = getBBVal(yyvsp[-1].ValIDVal); + yyval.ParamList->push_back(E); + ; + break;} +case 282: +#line 2773 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); - yyval.ValueRefList = yyvsp[-4].ValueRefList; - ValueRefListEntry E; E.Attrs = yyvsp[0].ParamAttrs; E.Val = getVal(yyvsp[-2].TypeVal->get(), yyvsp[-1].ValIDVal); - yyval.ValueRefList->push_back(E); + yyval.ParamList = yyvsp[-4].ParamList; + ParamListEntry E; E.Attrs = yyvsp[0].ParamAttrs; E.Val = getVal(yyvsp[-2].TypeVal->get(), yyvsp[-1].ValIDVal); + yyval.ParamList->push_back(E); delete yyvsp[-2].TypeVal; CHECK_FOR_ERROR ; break;} -case 282: -#line 2776 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.ValueRefList = new ValueRefList(); ; - break;} case 283: -#line 2779 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" -{ yyval.ValueList = new std::vector(); ; +#line 2782 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" +{ + yyval.ParamList = yyvsp[-4].ParamList; + ParamListEntry E; E.Attrs = yyvsp[0].ParamAttrs; E.Val = getBBVal(yyvsp[-1].ValIDVal); + yyval.ParamList->push_back(E); + CHECK_FOR_ERROR + ; break;} case 284: -#line 2780 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 2788 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" +{ yyval.ParamList = new ParamList(); ; + break;} +case 285: +#line 2791 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" +{ yyval.ValueList = new std::vector(); ; + break;} +case 286: +#line 2792 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.ValueList = yyvsp[-2].ValueList; yyval.ValueList->push_back(yyvsp[0].ValueVal); CHECK_FOR_ERROR ; break;} -case 285: -#line 2787 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 287: +#line 2799 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.BoolVal = true; CHECK_FOR_ERROR ; break;} -case 286: -#line 2791 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 288: +#line 2803 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.BoolVal = false; CHECK_FOR_ERROR ; break;} -case 287: -#line 2796 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 289: +#line 2808 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription()); @@ -4744,8 +4785,8 @@ delete yyvsp[-3].TypeVal; ; break;} -case 288: -#line 2817 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 290: +#line 2829 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription()); @@ -4764,8 +4805,8 @@ delete yyvsp[-3].TypeVal; ; break;} -case 289: -#line 2834 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 291: +#line 2846 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription()); @@ -4781,8 +4822,8 @@ delete yyvsp[-3].TypeVal; ; break;} -case 290: -#line 2848 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 292: +#line 2860 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-3].TypeVal)->getDescription()); @@ -4798,8 +4839,8 @@ delete yyvsp[-3].TypeVal; ; break;} -case 291: -#line 2862 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 293: +#line 2874 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription()); @@ -4813,8 +4854,8 @@ delete yyvsp[0].TypeVal; ; break;} -case 292: -#line 2874 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 294: +#line 2886 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (yyvsp[-4].ValueVal->getType() != Type::Int1Ty) GEN_ERROR("select condition must be boolean"); @@ -4824,8 +4865,8 @@ CHECK_FOR_ERROR ; break;} -case 293: -#line 2882 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 295: +#line 2894 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[0].TypeVal)->getDescription()); @@ -4834,8 +4875,8 @@ CHECK_FOR_ERROR ; break;} -case 294: -#line 2889 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 296: +#line 2901 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!ExtractElementInst::isValidOperands(yyvsp[-2].ValueVal, yyvsp[0].ValueVal)) GEN_ERROR("Invalid extractelement operands"); @@ -4843,8 +4884,8 @@ CHECK_FOR_ERROR ; break;} -case 295: -#line 2895 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 297: +#line 2907 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!InsertElementInst::isValidOperands(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal)) GEN_ERROR("Invalid insertelement operands"); @@ -4852,8 +4893,8 @@ CHECK_FOR_ERROR ; break;} -case 296: -#line 2901 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 298: +#line 2913 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!ShuffleVectorInst::isValidOperands(yyvsp[-4].ValueVal, yyvsp[-2].ValueVal, yyvsp[0].ValueVal)) GEN_ERROR("Invalid shufflevector operands"); @@ -4861,8 +4902,8 @@ CHECK_FOR_ERROR ; break;} -case 297: -#line 2907 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 299: +#line 2919 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { const Type *Ty = yyvsp[0].PHIList->front().first->getType(); if (!Ty->isFirstClassType()) @@ -4879,8 +4920,8 @@ CHECK_FOR_ERROR ; break;} -case 298: -#line 2923 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 300: +#line 2935 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { // Handle the short syntax @@ -4896,7 +4937,7 @@ Attrs.push_back(PAWI); } unsigned index = 1; - ValueRefList::iterator I = yyvsp[-2].ValueRefList->begin(), E = yyvsp[-2].ValueRefList->end(); + ParamList::iterator I = yyvsp[-2].ParamList->begin(), E = yyvsp[-2].ParamList->end(); for (; I != E; ++I, ++index) { const Type *Ty = I->Val->getType(); if (Ty == Type::VoidTy) @@ -4930,7 +4971,7 @@ // Check the arguments ValueList Args; - if (yyvsp[-2].ValueRefList->empty()) { // Has no arguments? + if (yyvsp[-2].ParamList->empty()) { // Has no arguments? // Make sure no arguments is a good thing! if (Ty->getNumParams() != 0) GEN_ERROR("No arguments passed to a function that " @@ -4941,7 +4982,7 @@ // FunctionType::param_iterator I = Ty->param_begin(); FunctionType::param_iterator E = Ty->param_end(); - ValueRefList::iterator ArgI = yyvsp[-2].ValueRefList->begin(), ArgE = yyvsp[-2].ValueRefList->end(); + ParamList::iterator ArgI = yyvsp[-2].ParamList->begin(), ArgE = yyvsp[-2].ParamList->end(); for (; ArgI != ArgE && I != E; ++ArgI, ++I) { if (ArgI->Val->getType() != *I) @@ -4961,34 +5002,34 @@ CI->setTailCall(yyvsp[-7].BoolVal); CI->setCallingConv(yyvsp[-6].UIntVal); yyval.InstVal = CI; - delete yyvsp[-2].ValueRefList; + delete yyvsp[-2].ParamList; delete yyvsp[-5].TypeVal; CHECK_FOR_ERROR ; break;} -case 299: -#line 3007 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 301: +#line 3019 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.InstVal = yyvsp[0].InstVal; CHECK_FOR_ERROR ; break;} -case 300: -#line 3012 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 302: +#line 3024 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.BoolVal = true; CHECK_FOR_ERROR ; break;} -case 301: -#line 3016 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 303: +#line 3028 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { yyval.BoolVal = false; CHECK_FOR_ERROR ; break;} -case 302: -#line 3023 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 304: +#line 3035 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); @@ -4997,8 +5038,8 @@ CHECK_FOR_ERROR ; break;} -case 303: -#line 3030 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 305: +#line 3042 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-4].TypeVal)->getDescription()); @@ -5008,8 +5049,8 @@ delete yyvsp[-4].TypeVal; ; break;} -case 304: -#line 3038 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 306: +#line 3050 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-1].TypeVal)->getDescription()); @@ -5018,8 +5059,8 @@ CHECK_FOR_ERROR ; break;} -case 305: -#line 3045 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 307: +#line 3057 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-4].TypeVal)->getDescription()); @@ -5029,8 +5070,8 @@ delete yyvsp[-4].TypeVal; ; break;} -case 306: -#line 3053 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 308: +#line 3065 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!isa(yyvsp[0].ValueVal->getType())) GEN_ERROR("Trying to free nonpointer type " + @@ -5039,8 +5080,8 @@ CHECK_FOR_ERROR ; break;} -case 307: -#line 3061 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 309: +#line 3073 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); @@ -5056,8 +5097,8 @@ delete yyvsp[-2].TypeVal; ; break;} -case 308: -#line 3075 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 310: +#line 3087 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); @@ -5076,8 +5117,8 @@ delete yyvsp[-2].TypeVal; ; break;} -case 309: -#line 3092 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +case 311: +#line 3104 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*yyvsp[-2].TypeVal)->getDescription()); @@ -5316,7 +5357,7 @@ } return 1; } -#line 3109 "/Volumes/MacOS9/gcc/llvm/lib/AsmParser/llvmAsmParser.y" +#line 3121 "/Volumes/MacOS9/gcc/llvm-gcc-main/llvm/lib/AsmParser/llvmAsmParser.y" // common code from the two 'RunVMAsmParser' functions Modified: llvm/trunk/lib/AsmParser/llvmAsmParser.h.cvs URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/llvmAsmParser.h.cvs?rev=43734&r1=43733&r2=43734&view=diff ============================================================================== --- llvm/trunk/lib/AsmParser/llvmAsmParser.h.cvs (original) +++ llvm/trunk/lib/AsmParser/llvmAsmParser.h.cvs Mon Nov 5 15:20:28 2007 @@ -14,7 +14,7 @@ llvm::ArgListType *ArgList; llvm::TypeWithAttrs TypeWithAttrs; llvm::TypeWithAttrsList *TypeWithAttrsList; - llvm::ValueRefList *ValueRefList; + llvm::ParamList *ParamList; // Represent the RHS of PHI node std::list ConstVector %type ArgList ArgListH %type PHIList -%type ValueRefList // For call param lists & GEP indices +%type ParamList // For call param lists & GEP indices %type IndexList // For GEP indices %type TypeListI %type ArgTypeList ArgTypeListI @@ -2609,7 +2609,7 @@ $$ = S; CHECK_FOR_ERROR } - | INVOKE OptCallingConv ResultTypes ValueRef '(' ValueRefList ')' OptFuncAttrs + | INVOKE OptCallingConv ResultTypes ValueRef '(' ParamList ')' OptFuncAttrs TO LABEL ValueRef UNWIND LABEL ValueRef { // Handle the short syntax @@ -2624,7 +2624,7 @@ ParamAttrsWithIndex PAWI; PAWI.index = 0; PAWI.attrs = $8; Attrs.push_back(PAWI); } - ValueRefList::iterator I = $6->begin(), E = $6->end(); + ParamList::iterator I = $6->begin(), E = $6->end(); unsigned index = 1; for (; I != E; ++I, ++index) { const Type *Ty = I->Val->getType(); @@ -2665,7 +2665,7 @@ // correctly! FunctionType::param_iterator I = Ty->param_begin(); FunctionType::param_iterator E = Ty->param_end(); - ValueRefList::iterator ArgI = $6->begin(), ArgE = $6->end(); + ParamList::iterator ArgI = $6->begin(), ArgE = $6->end(); for (; ArgI != ArgE && I != E; ++ArgI, ++I) { if (ArgI->Val->getType() != *I) @@ -2755,25 +2755,37 @@ }; -ValueRefList : Types ValueRef OptParamAttrs { +ParamList : Types ValueRef OptParamAttrs { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); // Used for call and invoke instructions - $$ = new ValueRefList(); - ValueRefListEntry E; E.Attrs = $3; E.Val = getVal($1->get(), $2); + $$ = new ParamList(); + ParamListEntry E; E.Attrs = $3; E.Val = getVal($1->get(), $2); $$->push_back(E); delete $1; } - | ValueRefList ',' Types ValueRef OptParamAttrs { + | LABEL ValueRef OptParamAttrs { + // Labels are only valid in ASMs + $$ = new ParamList(); + ParamListEntry E; E.Attrs = $3; E.Val = getBBVal($2); + $$->push_back(E); + } + | ParamList ',' Types ValueRef OptParamAttrs { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); $$ = $1; - ValueRefListEntry E; E.Attrs = $5; E.Val = getVal($3->get(), $4); + ParamListEntry E; E.Attrs = $5; E.Val = getVal($3->get(), $4); $$->push_back(E); delete $3; CHECK_FOR_ERROR } - | /*empty*/ { $$ = new ValueRefList(); }; + | ParamList ',' LABEL ValueRef OptParamAttrs { + $$ = $1; + ParamListEntry E; E.Attrs = $5; E.Val = getBBVal($4); + $$->push_back(E); + CHECK_FOR_ERROR + } + | /*empty*/ { $$ = new ParamList(); }; IndexList // Used for gep instructions and constant expressions : /*empty*/ { $$ = new std::vector(); } @@ -2919,7 +2931,7 @@ delete $2; // Free the list... CHECK_FOR_ERROR } - | OptTailCall OptCallingConv ResultTypes ValueRef '(' ValueRefList ')' + | OptTailCall OptCallingConv ResultTypes ValueRef '(' ParamList ')' OptFuncAttrs { // Handle the short syntax @@ -2935,7 +2947,7 @@ Attrs.push_back(PAWI); } unsigned index = 1; - ValueRefList::iterator I = $6->begin(), E = $6->end(); + ParamList::iterator I = $6->begin(), E = $6->end(); for (; I != E; ++I, ++index) { const Type *Ty = I->Val->getType(); if (Ty == Type::VoidTy) @@ -2980,7 +2992,7 @@ // FunctionType::param_iterator I = Ty->param_begin(); FunctionType::param_iterator E = Ty->param_end(); - ValueRefList::iterator ArgI = $6->begin(), ArgE = $6->end(); + ParamList::iterator ArgI = $6->begin(), ArgE = $6->end(); for (; ArgI != ArgE && I != E; ++ArgI, ++I) { if (ArgI->Val->getType() != *I) Modified: llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs?rev=43734&r1=43733&r2=43734&view=diff ============================================================================== --- llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs (original) +++ llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs Mon Nov 5 15:20:28 2007 @@ -981,7 +981,7 @@ llvm::ArgListType *ArgList; llvm::TypeWithAttrs TypeWithAttrs; llvm::TypeWithAttrsList *TypeWithAttrsList; - llvm::ValueRefList *ValueRefList; + llvm::ParamList *ParamList; // Represent the RHS of PHI node std::list ConstVector %type ArgList ArgListH %type PHIList -%type ValueRefList // For call param lists & GEP indices +%type ParamList // For call param lists & GEP indices %type IndexList // For GEP indices %type TypeListI %type ArgTypeList ArgTypeListI @@ -2609,7 +2609,7 @@ $$ = S; CHECK_FOR_ERROR } - | INVOKE OptCallingConv ResultTypes ValueRef '(' ValueRefList ')' OptFuncAttrs + | INVOKE OptCallingConv ResultTypes ValueRef '(' ParamList ')' OptFuncAttrs TO LABEL ValueRef UNWIND LABEL ValueRef { // Handle the short syntax @@ -2624,7 +2624,7 @@ ParamAttrsWithIndex PAWI; PAWI.index = 0; PAWI.attrs = $8; Attrs.push_back(PAWI); } - ValueRefList::iterator I = $6->begin(), E = $6->end(); + ParamList::iterator I = $6->begin(), E = $6->end(); unsigned index = 1; for (; I != E; ++I, ++index) { const Type *Ty = I->Val->getType(); @@ -2665,7 +2665,7 @@ // correctly! FunctionType::param_iterator I = Ty->param_begin(); FunctionType::param_iterator E = Ty->param_end(); - ValueRefList::iterator ArgI = $6->begin(), ArgE = $6->end(); + ParamList::iterator ArgI = $6->begin(), ArgE = $6->end(); for (; ArgI != ArgE && I != E; ++ArgI, ++I) { if (ArgI->Val->getType() != *I) @@ -2755,25 +2755,37 @@ }; -ValueRefList : Types ValueRef OptParamAttrs { +ParamList : Types ValueRef OptParamAttrs { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$1)->getDescription()); // Used for call and invoke instructions - $$ = new ValueRefList(); - ValueRefListEntry E; E.Attrs = $3; E.Val = getVal($1->get(), $2); + $$ = new ParamList(); + ParamListEntry E; E.Attrs = $3; E.Val = getVal($1->get(), $2); $$->push_back(E); delete $1; } - | ValueRefList ',' Types ValueRef OptParamAttrs { + | LABEL ValueRef OptParamAttrs { + // Labels are only valid in ASMs + $$ = new ParamList(); + ParamListEntry E; E.Attrs = $3; E.Val = getBBVal($2); + $$->push_back(E); + } + | ParamList ',' Types ValueRef OptParamAttrs { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); $$ = $1; - ValueRefListEntry E; E.Attrs = $5; E.Val = getVal($3->get(), $4); + ParamListEntry E; E.Attrs = $5; E.Val = getVal($3->get(), $4); $$->push_back(E); delete $3; CHECK_FOR_ERROR } - | /*empty*/ { $$ = new ValueRefList(); }; + | ParamList ',' LABEL ValueRef OptParamAttrs { + $$ = $1; + ParamListEntry E; E.Attrs = $5; E.Val = getBBVal($4); + $$->push_back(E); + CHECK_FOR_ERROR + } + | /*empty*/ { $$ = new ParamList(); }; IndexList // Used for gep instructions and constant expressions : /*empty*/ { $$ = new std::vector(); } @@ -2919,7 +2931,7 @@ delete $2; // Free the list... CHECK_FOR_ERROR } - | OptTailCall OptCallingConv ResultTypes ValueRef '(' ValueRefList ')' + | OptTailCall OptCallingConv ResultTypes ValueRef '(' ParamList ')' OptFuncAttrs { // Handle the short syntax @@ -2935,7 +2947,7 @@ Attrs.push_back(PAWI); } unsigned index = 1; - ValueRefList::iterator I = $6->begin(), E = $6->end(); + ParamList::iterator I = $6->begin(), E = $6->end(); for (; I != E; ++I, ++index) { const Type *Ty = I->Val->getType(); if (Ty == Type::VoidTy) @@ -2980,7 +2992,7 @@ // FunctionType::param_iterator I = Ty->param_begin(); FunctionType::param_iterator E = Ty->param_end(); - ValueRefList::iterator ArgI = $6->begin(), ArgE = $6->end(); + ParamList::iterator ArgI = $6->begin(), ArgE = $6->end(); for (; ArgI != ArgE && I != E; ++ArgI, ++I) { if (ArgI->Val->getType() != *I) Modified: llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp?rev=43734&r1=43733&r2=43734&view=diff ============================================================================== --- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (original) +++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp Mon Nov 5 15:20:28 2007 @@ -1506,7 +1506,10 @@ SmallVector Args; // Read the fixed params. for (unsigned i = 0, e = FTy->getNumParams(); i != e; ++i, ++OpNum) { - Args.push_back(getFnValueByID(Record[OpNum], FTy->getParamType(i))); + if (FTy->getParamType(i)->getTypeID()==Type::LabelTyID) + Args.push_back(getBasicBlock(Record[OpNum])); + else + Args.push_back(getFnValueByID(Record[OpNum], FTy->getParamType(i))); if (Args.back() == 0) return Error("Invalid CALL record"); } Modified: llvm/trunk/lib/CodeGen/AsmPrinter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter.cpp?rev=43734&r1=43733&r2=43734&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/AsmPrinter.cpp (original) +++ llvm/trunk/lib/CodeGen/AsmPrinter.cpp Mon Nov 5 15:20:28 2007 @@ -1188,13 +1188,18 @@ unsigned OpFlags = MI->getOperand(OpNo).getImmedValue(); ++OpNo; // Skip over the ID number. - AsmPrinter *AP = const_cast(this); - if ((OpFlags & 7) == 4 /*ADDR MODE*/) { - Error = AP->PrintAsmMemoryOperand(MI, OpNo, AsmPrinterVariant, - Modifier[0] ? Modifier : 0); - } else { - Error = AP->PrintAsmOperand(MI, OpNo, AsmPrinterVariant, - Modifier[0] ? Modifier : 0); + if (Modifier[0]=='l') // labels are target independent + printBasicBlockLabel(MI->getOperand(OpNo).getMachineBasicBlock(), + false, false); + else { + AsmPrinter *AP = const_cast(this); + if ((OpFlags & 7) == 4 /*ADDR MODE*/) { + Error = AP->PrintAsmMemoryOperand(MI, OpNo, AsmPrinterVariant, + Modifier[0] ? Modifier : 0); + } else { + Error = AP->PrintAsmOperand(MI, OpNo, AsmPrinterVariant, + Modifier[0] ? Modifier : 0); + } } } if (Error) { Modified: llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp?rev=43734&r1=43733&r2=43734&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp Mon Nov 5 15:20:28 2007 @@ -803,10 +803,13 @@ if (ConstantSDNode *CS = dyn_cast(Node->getOperand(i))) { MI->addImmOperand(CS->getValue()); - } else { - GlobalAddressSDNode *GA = - cast(Node->getOperand(i)); + } else if (GlobalAddressSDNode *GA = + dyn_cast(Node->getOperand(i))) { MI->addGlobalAddressOperand(GA->getGlobal(), GA->getOffset()); + } else { + BasicBlockSDNode *BB = + cast(Node->getOperand(i)); + MI->addMachineBasicBlockOperand(BB->getBasicBlock()); } } break; Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp?rev=43734&r1=43733&r2=43734&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Mon Nov 5 15:20:28 2007 @@ -3489,31 +3489,37 @@ } // If this is an input or an indirect output, process the call argument. + // BasicBlocks are labels, currently appearing only in asm's. if (OpInfo.CallOperandVal) { - OpInfo.CallOperand = getValue(OpInfo.CallOperandVal); - const Type *OpTy = OpInfo.CallOperandVal->getType(); - // If this is an indirect operand, the operand is a pointer to the - // accessed type. - if (OpInfo.isIndirect) - OpTy = cast(OpTy)->getElementType(); - - // If OpTy is not a first-class value, it may be a struct/union that we - // can tile with integers. - if (!OpTy->isFirstClassType() && OpTy->isSized()) { - unsigned BitSize = TD->getTypeSizeInBits(OpTy); - switch (BitSize) { - default: break; - case 1: - case 8: - case 16: - case 32: - case 64: - OpTy = IntegerType::get(BitSize); - break; + if (isa(OpInfo.CallOperandVal)) + OpInfo.CallOperand = + DAG.getBasicBlock(FuncInfo.MBBMap[cast(OpInfo.CallOperandVal)]); + else { + OpInfo.CallOperand = getValue(OpInfo.CallOperandVal); + const Type *OpTy = OpInfo.CallOperandVal->getType(); + // If this is an indirect operand, the operand is a pointer to the + // accessed type. + if (OpInfo.isIndirect) + OpTy = cast(OpTy)->getElementType(); + + // If OpTy is not a first-class value, it may be a struct/union that we + // can tile with integers. + if (!OpTy->isFirstClassType() && OpTy->isSized()) { + unsigned BitSize = TD->getTypeSizeInBits(OpTy); + switch (BitSize) { + default: break; + case 1: + case 8: + case 16: + case 32: + case 64: + OpTy = IntegerType::get(BitSize); + break; + } } + + OpVT = TLI.getValueType(OpTy, true); } - - OpVT = TLI.getValueType(OpTy, true); } OpInfo.ConstraintVT = OpVT; Modified: llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp?rev=43734&r1=43733&r2=43734&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp Mon Nov 5 15:20:28 2007 @@ -1396,10 +1396,15 @@ SelectionDAG &DAG) { switch (ConstraintLetter) { default: break; + case 'X': // Allows any operand; labels (basic block) use this. + if (Op.getOpcode() == ISD::BasicBlock) { + Ops.push_back(Op); + return; + } + // fall through case 'i': // Simple Integer or Relocatable Constant case 'n': // Simple Integer - case 's': // Relocatable Constant - case 'X': { // Allows any operand. + case 's': { // Relocatable Constant // These operands are interested in values of the form (GV+C), where C may // be folded in as an offset of GV, or it may be explicitly added. Also, it // is possible and fine if either GV or C are missing. Added: llvm/trunk/test/CodeGen/X86/asm-block-labels.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/asm-block-labels.ll?rev=43734&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/X86/asm-block-labels.ll (added) +++ llvm/trunk/test/CodeGen/X86/asm-block-labels.ll Mon Nov 5 15:20:28 2007 @@ -0,0 +1,41 @@ +; RUN: llvm-as < %s | opt -std-compile-opts | llc +; ModuleID = 'block12.c' +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" + +define void @bar() { +entry: + br label %"LASM$foo" + +"LASM$foo": ; preds = %entry + call void asm sideeffect ".file \22block12.c\22", "~{dirflag},~{fpsr},~{flags}"( ) + call void asm sideeffect ".line 1", "~{dirflag},~{fpsr},~{flags}"( ) + call void asm sideeffect "int $$1", "~{dirflag},~{fpsr},~{flags},~{memory}"( ) + call void asm sideeffect ".file \22block12.c\22", "~{dirflag},~{fpsr},~{flags}"( ) + call void asm sideeffect ".line 2", "~{dirflag},~{fpsr},~{flags}"( ) + call void asm sideeffect "brl ${0:l}", "X,~{dirflag},~{fpsr},~{flags},~{memory}"( label %"LASM$foo" ) + br label %return + +return: ; preds = %"LASM$foo" + ret void +} + +define void @baz() { +entry: + call void asm sideeffect ".file \22block12.c\22", "~{dirflag},~{fpsr},~{flags}"( ) + call void asm sideeffect ".line 3", "~{dirflag},~{fpsr},~{flags}"( ) + call void asm sideeffect "brl ${0:l}", "X,~{dirflag},~{fpsr},~{flags},~{memory}"( label %"LASM$foo" ) + call void asm sideeffect ".file \22block12.c\22", "~{dirflag},~{fpsr},~{flags}"( ) + call void asm sideeffect ".line 4", "~{dirflag},~{fpsr},~{flags}"( ) + call void asm sideeffect "int $$1", "~{dirflag},~{fpsr},~{flags},~{memory}"( ) + br label %"LASM$foo" + +"LASM$foo": ; preds = %entry + call void asm sideeffect ".file \22block12.c\22", "~{dirflag},~{fpsr},~{flags}"( ) + call void asm sideeffect ".line 5", "~{dirflag},~{fpsr},~{flags}"( ) + call void asm sideeffect "int $$1", "~{dirflag},~{fpsr},~{flags},~{memory}"( ) + br label %return + +return: ; preds = %"LASM$foo" + ret void +} From dalej at apple.com Mon Nov 5 15:26:34 2007 From: dalej at apple.com (Dale Johannesen) Date: Mon, 05 Nov 2007 21:26:34 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r43735 - in /llvm-gcc-4.0/trunk/gcc: c-common.c llvm-convert.cpp Message-ID: <200711052126.lA5LQYv5017952@zion.cs.uiuc.edu> Author: johannes Date: Mon Nov 5 15:26:34 2007 New Revision: 43735 URL: http://llvm.org/viewvc/llvm-project?rev=43735&view=rev Log: Make labels in asm blocks work. Modified: llvm-gcc-4.0/trunk/gcc/c-common.c llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Modified: llvm-gcc-4.0/trunk/gcc/c-common.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/c-common.c?rev=43735&r1=43734&r2=43735&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/c-common.c (original) +++ llvm-gcc-4.0/trunk/gcc/c-common.c Mon Nov 5 15:26:34 2007 @@ -7899,12 +7899,18 @@ tree iasm_label (tree labid, int atsign) { +/* LLVM LOCAL begin */ +/* Unused variables resulting from code change below. */ +#if 1 + tree stmt, label; +#else tree sexpr; tree inputs = NULL_TREE, outputs = NULL_TREE, clobbers = NULL_TREE; tree stmt; tree label, l; tree str, one; - +#endif +/* LLVM LOCAL end */ STRIP_NOPS (labid); if (iasm_buffer == NULL) @@ -7924,7 +7930,9 @@ iasm_buffer[0] = '\0'; label = iasm_get_label (labid); -#if 0 +/* LLVM LOCAL begin */ +#if 1 +/* LLVM LOCAL end */ /* Ideally I'd like to do this, but, it moves the label in: nop 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=43735&r1=43734&r2=43735&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Mon Nov 5 15:26:34 2007 @@ -4029,7 +4029,13 @@ Value *Op = 0; if (LLVMTy->isFirstClassType()) { - Op = Emit(Val, 0); + if (TREE_CODE(Val)==ADDR_EXPR && + TREE_CODE(TREE_OPERAND(Val,0))==LABEL_DECL) { + // Emit the label, but do not assume it is going to be the target + // of an indirect branch. + Op = getLabelDeclBlock(TREE_OPERAND(Val, 0)); + } else + Op = Emit(Val, 0); } else { LValue LV = EmitLV(Val); assert(!LV.isBitfield() && "Inline asm can't have bitfield operand"); From kremenek at apple.com Mon Nov 5 15:36:35 2007 From: kremenek at apple.com (Ted Kremenek) Date: Mon, 05 Nov 2007 21:36:35 -0000 Subject: [llvm-commits] [llvm] r43736 - in /llvm/trunk: include/llvm/Bitcode/Deserialize.h include/llvm/Bitcode/Serialize.h lib/Bitcode/Reader/Deserialize.cpp lib/Bitcode/Writer/Serialize.cpp Message-ID: <200711052136.lA5LaaxJ018390@zion.cs.uiuc.edu> Author: kremenek Date: Mon Nov 5 15:36:35 2007 New Revision: 43736 URL: http://llvm.org/viewvc/llvm-project?rev=43736&view=rev Log: Added support in serializer and deserializer to create arbitrary blocks. Added detection of end-of-stream in deserializer. Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h llvm/trunk/include/llvm/Bitcode/Serialize.h llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp llvm/trunk/lib/Bitcode/Writer/Serialize.cpp Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Deserialize.h?rev=43736&r1=43735&r2=43736&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Deserialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Deserialize.h Mon Nov 5 15:36:35 2007 @@ -153,6 +153,8 @@ void RegisterPtr(const void* Ptr) { RegisterPtr(ReadInt(),Ptr); } + + bool AtEnd(); private: void ReadRecord(); Modified: llvm/trunk/include/llvm/Bitcode/Serialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Serialize.h?rev=43736&r1=43735&r2=43736&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Serialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Serialize.h Mon Nov 5 15:36:35 2007 @@ -25,7 +25,7 @@ class Serializer { BitstreamWriter& Stream; SmallVector Record; - bool inBlock; + unsigned BlockLevel; typedef DenseMap MapTy; MapTy PtrMap; @@ -56,6 +56,9 @@ void Flush() { if (inRecord()) EmitRecord(); } + void EnterBlock(unsigned BlockID = 8, unsigned CodeLen = 3); + void ExitBlock(); + private: void EmitRecord(); inline bool inRecord() { return Record.size() > 0; } Modified: llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp?rev=43736&r1=43735&r2=43736&view=diff ============================================================================== --- llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp (original) +++ llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp Mon Nov 5 15:36:35 2007 @@ -47,10 +47,15 @@ // FIXME: Check if we haven't run off the edge of the stream. // FIXME: Handle abbreviations. + assert (Record.size() == 0); + unsigned Code; while (true) { + if (Stream.AtEndOfStream()) + return; + Code = Stream.ReadCode(); if (Code == bitc::ENTER_SUBBLOCK) { @@ -71,7 +76,16 @@ assert (Record.size() == 0); Stream.ReadRecord(Code,Record); - assert (Record.size() > 0); + assert (Record.size() > 0 || Stream.AtEndOfStream()); +} + +bool Deserializer::AtEnd() { + if (inRecord()) + return false; + + ReadRecord(); + + return Stream.AtEndOfStream(); } uint64_t Deserializer::ReadInt() { Modified: llvm/trunk/lib/Bitcode/Writer/Serialize.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Writer/Serialize.cpp?rev=43736&r1=43735&r2=43736&view=diff ============================================================================== --- llvm/trunk/lib/Bitcode/Writer/Serialize.cpp (original) +++ llvm/trunk/lib/Bitcode/Writer/Serialize.cpp Mon Nov 5 15:36:35 2007 @@ -17,16 +17,17 @@ using namespace llvm; Serializer::Serializer(BitstreamWriter& stream, unsigned BlockID) - : Stream(stream), inBlock(BlockID >= 8) { + : Stream(stream), BlockLevel(0) { - if (inBlock) Stream.EnterSubblock(8,3); + if (BlockID >= 8) + EnterBlock(8,3); } Serializer::~Serializer() { if (inRecord()) EmitRecord(); - if (inBlock) + while (BlockLevel > 0) Stream.ExitBlock(); Stream.FlushToWord(); @@ -38,7 +39,21 @@ Record.clear(); } +void Serializer::EnterBlock(unsigned BlockID,unsigned CodeLen) { + Flush(); + Stream.EnterSubblock(BlockID,CodeLen); + ++BlockLevel; +} + +void Serializer::ExitBlock() { + assert (BlockLevel > 0); + --BlockLevel; + Flush(); + Stream.ExitBlock(); +} + void Serializer::EmitInt(unsigned X) { + assert (BlockLevel > 0); Record.push_back(X); } @@ -71,6 +86,7 @@ else return I->second; } + #define INT_EMIT(TYPE)\ void SerializeTrait::Emit(Serializer&S, TYPE X) { S.EmitInt(X); } From dalej at apple.com Mon Nov 5 16:27:26 2007 From: dalej at apple.com (Dale Johannesen) Date: Mon, 05 Nov 2007 22:27:26 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43740 - in /llvm-gcc-4.2/trunk/gcc: c-common.c llvm-convert.cpp Message-ID: <200711052227.lA5MRQY6020890@zion.cs.uiuc.edu> Author: johannes Date: Mon Nov 5 16:27:26 2007 New Revision: 43740 URL: http://llvm.org/viewvc/llvm-project?rev=43740&view=rev Log: Make labels in asm blocks work. Modified: llvm-gcc-4.2/trunk/gcc/c-common.c llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Modified: llvm-gcc-4.2/trunk/gcc/c-common.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/c-common.c?rev=43740&r1=43739&r2=43740&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/c-common.c (original) +++ llvm-gcc-4.2/trunk/gcc/c-common.c Mon Nov 5 16:27:26 2007 @@ -8211,12 +8211,18 @@ tree iasm_label (tree labid, bool atsign) { - tree sexpr; - tree inputs = NULL_TREE, outputs = NULL_TREE, clobbers = NULL_TREE; - tree stmt; - tree label, l; - tree str, one; - +/* LLVM LOCAL begin */ +/* Unused variables resulting from code change below. */ +#if 1 + tree stmt, label; +#else + tree sexpr; + tree inputs = NULL_TREE, outputs = NULL_TREE, clobbers = NULL_TREE; + tree stmt; + tree label, l; + tree str, one; +#endif +/* LLVM LOCAL end */ STRIP_NOPS (labid); if (iasm_buffer == NULL) @@ -8236,7 +8242,9 @@ iasm_buffer[0] = '\0'; label = iasm_get_label (labid); -#if 0 +/* LLVM LOCAL begin */ +#if 1 +/* LLVM LOCAL end */ /* Ideally I'd like to do this, but, it moves the label in: nop 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=43740&r1=43739&r2=43740&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Mon Nov 5 16:27:26 2007 @@ -3593,7 +3593,14 @@ Value *Op = 0; if (LLVMTy->isFirstClassType()) { - Op = Emit(Val, 0); + if (TREE_CODE(Val)==ADDR_EXPR && + TREE_CODE(TREE_OPERAND(Val,0))==LABEL_DECL) { + // Emit the label, but do not assume it is going to be the target + // of an indirect branch. Having this logic here is a hack; there + // should be a bit in the label identifying it as in an asm. + Op = getLabelDeclBlock(TREE_OPERAND(Val, 0)); + } else + Op = Emit(Val, 0); } else { LValue LV = EmitLV(Val); assert(!LV.isBitfield() && "Inline asm can't have bitfield operand"); From rafael.espindola at gmail.com Mon Nov 5 17:12:22 2007 From: rafael.espindola at gmail.com (Rafael Espindola) Date: Mon, 05 Nov 2007 23:12:22 -0000 Subject: [llvm-commits] [llvm] r43742 - in /llvm/trunk: include/llvm/Target/TargetLowering.h include/llvm/Target/TargetSubtarget.h lib/CodeGen/SelectionDAG/TargetLowering.cpp lib/Target/ARM/ARMISelLowering.cpp lib/Target/ARM/ARMISelLowering.h lib/Target/X86/X86ISelLowering.cpp lib/Target/X86/X86ISelLowering.h Message-ID: <200711052312.lA5NCN90023471@zion.cs.uiuc.edu> Author: rafael Date: Mon Nov 5 17:12:20 2007 New Revision: 43742 URL: http://llvm.org/viewvc/llvm-project?rev=43742&view=rev Log: Move the LowerMEMCPY and LowerMEMCPYCall to a common place. Thanks for the suggestions Bill :-) Modified: llvm/trunk/include/llvm/Target/TargetLowering.h llvm/trunk/include/llvm/Target/TargetSubtarget.h llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp llvm/trunk/lib/Target/ARM/ARMISelLowering.h llvm/trunk/lib/Target/X86/X86ISelLowering.cpp llvm/trunk/lib/Target/X86/X86ISelLowering.h Modified: llvm/trunk/include/llvm/Target/TargetLowering.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetLowering.h?rev=43742&r1=43741&r2=43742&view=diff ============================================================================== --- llvm/trunk/include/llvm/Target/TargetLowering.h (original) +++ llvm/trunk/include/llvm/Target/TargetLowering.h Mon Nov 5 17:12:20 2007 @@ -41,6 +41,7 @@ class MachineBasicBlock; class MachineInstr; class VectorType; + class TargetSubtarget; //===----------------------------------------------------------------------===// /// TargetLowering - This class defines information used to lower LLVM code to @@ -845,6 +846,9 @@ public: + virtual const TargetSubtarget *getSubtarget() { + assert(0 && "Not Implemented"); + } //===--------------------------------------------------------------------===// // Lowering methods - These methods must be implemented by targets so that // the SelectionDAGLowering code knows how to lower these. @@ -878,6 +882,18 @@ bool isVarArg, unsigned CallingConv, bool isTailCall, SDOperand Callee, ArgListTy &Args, SelectionDAG &DAG); + + virtual SDOperand LowerMEMCPY(SDOperand Op, SelectionDAG &DAG); + virtual SDOperand LowerMEMCPYCall(SDOperand Chain, SDOperand Dest, + SDOperand Source, SDOperand Count, + SelectionDAG &DAG); + virtual SDOperand LowerMEMCPYInline(SDOperand Chain, SDOperand Dest, + SDOperand Source, unsigned Size, + unsigned Align, SelectionDAG &DAG) { + assert(0 && "Not Implemented"); + } + + /// LowerOperation - This callback is invoked for operations that are /// unsupported by the target, which are registered to use 'custom' lowering, /// and whose defined values are all legal. Modified: llvm/trunk/include/llvm/Target/TargetSubtarget.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetSubtarget.h?rev=43742&r1=43741&r2=43742&view=diff ============================================================================== --- llvm/trunk/include/llvm/Target/TargetSubtarget.h (original) +++ llvm/trunk/include/llvm/Target/TargetSubtarget.h Mon Nov 5 17:12:20 2007 @@ -28,6 +28,9 @@ protected: // Can only create subclasses... TargetSubtarget(); public: + /// getMaxInlineSizeThreshold - Returns the maximum memset / memcpy size + /// that still makes it profitable to inline the call. + virtual unsigned getMaxInlineSizeThreshold() const {return 0; } virtual ~TargetSubtarget(); }; Modified: llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp?rev=43742&r1=43741&r2=43742&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp Mon Nov 5 17:12:20 2007 @@ -12,6 +12,7 @@ //===----------------------------------------------------------------------===// #include "llvm/Target/TargetLowering.h" +#include "llvm/Target/TargetSubtarget.h" #include "llvm/Target/TargetData.h" #include "llvm/Target/TargetMachine.h" #include "llvm/Target/MRegisterInfo.h" @@ -21,6 +22,7 @@ #include "llvm/ADT/STLExtras.h" #include "llvm/Support/MathExtras.h" #include "llvm/Target/TargetAsmInfo.h" +#include "llvm/CallingConv.h" using namespace llvm; /// InitLibcallNames - Set default libcall names. @@ -194,6 +196,59 @@ TargetLowering::~TargetLowering() {} + +SDOperand TargetLowering::LowerMEMCPY(SDOperand Op, SelectionDAG &DAG) { + assert(getSubtarget() && "Subtarget not defined"); + SDOperand ChainOp = Op.getOperand(0); + SDOperand DestOp = Op.getOperand(1); + SDOperand SourceOp = Op.getOperand(2); + SDOperand CountOp = Op.getOperand(3); + SDOperand AlignOp = Op.getOperand(4); + SDOperand AlwaysInlineOp = Op.getOperand(5); + + bool AlwaysInline = (bool)cast(AlwaysInlineOp)->getValue(); + unsigned Align = (unsigned)cast(AlignOp)->getValue(); + if (Align == 0) Align = 1; + + // If size is unknown, call memcpy. + ConstantSDNode *I = dyn_cast(CountOp); + if (!I) { + assert(!AlwaysInline && "Cannot inline copy of unknown size"); + return LowerMEMCPYCall(ChainOp, DestOp, SourceOp, CountOp, DAG); + } + + // If not DWORD aligned or if size is more than threshold, then call memcpy. + // The libc version is likely to be faster for the following cases. It can + // use the address value and run time information about the CPU. + // With glibc 2.6.1 on a core 2, coping an array of 100M longs was 30% faster + unsigned Size = I->getValue(); + if (AlwaysInline || + (Size <= getSubtarget()->getMaxInlineSizeThreshold() && + (Align & 3) == 0)) + return LowerMEMCPYInline(ChainOp, DestOp, SourceOp, Size, Align, DAG); + return LowerMEMCPYCall(ChainOp, DestOp, SourceOp, CountOp, DAG); +} + + +SDOperand TargetLowering::LowerMEMCPYCall(SDOperand Chain, + SDOperand Dest, + SDOperand Source, + SDOperand Count, + SelectionDAG &DAG) { + MVT::ValueType IntPtr = getPointerTy(); + TargetLowering::ArgListTy Args; + TargetLowering::ArgListEntry Entry; + Entry.Ty = getTargetData()->getIntPtrType(); + Entry.Node = Dest; Args.push_back(Entry); + Entry.Node = Source; Args.push_back(Entry); + Entry.Node = Count; Args.push_back(Entry); + std::pair CallResult = + LowerCallTo(Chain, Type::VoidTy, false, false, CallingConv::C, false, + DAG.getExternalSymbol("memcpy", IntPtr), Args, DAG); + return CallResult.second; +} + + /// computeRegisterProperties - Once all of the register classes are added, /// this allows us to compute derived properties we expose. void TargetLowering::computeRegisterProperties() { Modified: llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp?rev=43742&r1=43741&r2=43742&view=diff ============================================================================== --- llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp (original) +++ llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp Mon Nov 5 17:12:20 2007 @@ -1287,55 +1287,6 @@ return DAG.getNode(ISD::BUILD_PAIR, MVT::i64, Lo, Hi); } -SDOperand ARMTargetLowering::LowerMEMCPY(SDOperand Op, SelectionDAG &DAG) { - SDOperand ChainOp = Op.getOperand(0); - SDOperand DestOp = Op.getOperand(1); - SDOperand SourceOp = Op.getOperand(2); - SDOperand CountOp = Op.getOperand(3); - SDOperand AlignOp = Op.getOperand(4); - SDOperand AlwaysInlineOp = Op.getOperand(5); - - bool AlwaysInline = (bool)cast(AlwaysInlineOp)->getValue(); - unsigned Align = (unsigned)cast(AlignOp)->getValue(); - if (Align == 0) Align = 1; - - // If size is unknown, call memcpy. - ConstantSDNode *I = dyn_cast(CountOp); - if (!I) { - assert(!AlwaysInline && "Cannot inline copy of unknown size"); - return LowerMEMCPYCall(ChainOp, DestOp, SourceOp, CountOp, DAG); - } - - // If not DWORD aligned or if size is more than threshold, then call memcpy. - // The libc version is likely to be faster for the these cases. It can - // use the address value and run time information about the CPU. - // With glibc 2.6.1 on a core 2, coping an array of 100M longs was 30% faster - unsigned Size = I->getValue(); - if (AlwaysInline || - (Size <= Subtarget->getMaxInlineSizeThreshold() && - (Align & 3) == 0)) - return LowerMEMCPYInline(ChainOp, DestOp, SourceOp, Size, Align, DAG); - return LowerMEMCPYCall(ChainOp, DestOp, SourceOp, CountOp, DAG); -} - -SDOperand ARMTargetLowering::LowerMEMCPYCall(SDOperand Chain, - SDOperand Dest, - SDOperand Source, - SDOperand Count, - SelectionDAG &DAG) { - MVT::ValueType IntPtr = getPointerTy(); - TargetLowering::ArgListTy Args; - TargetLowering::ArgListEntry Entry; - Entry.Ty = getTargetData()->getIntPtrType(); - Entry.Node = Dest; Args.push_back(Entry); - Entry.Node = Source; Args.push_back(Entry); - Entry.Node = Count; Args.push_back(Entry); - std::pair CallResult = - LowerCallTo(Chain, Type::VoidTy, false, false, CallingConv::C, false, - DAG.getExternalSymbol("memcpy", IntPtr), Args, DAG); - return CallResult.second; -} - SDOperand ARMTargetLowering::LowerMEMCPYInline(SDOperand Chain, SDOperand Dest, SDOperand Source, Modified: llvm/trunk/lib/Target/ARM/ARMISelLowering.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMISelLowering.h?rev=43742&r1=43741&r2=43742&view=diff ============================================================================== --- llvm/trunk/lib/Target/ARM/ARMISelLowering.h (original) +++ llvm/trunk/lib/Target/ARM/ARMISelLowering.h Mon Nov 5 17:12:20 2007 @@ -15,13 +15,13 @@ #ifndef ARMISELLOWERING_H #define ARMISELLOWERING_H +#include "ARMSubtarget.h" #include "llvm/Target/TargetLowering.h" #include "llvm/CodeGen/SelectionDAG.h" #include namespace llvm { class ARMConstantPoolValue; - class ARMSubtarget; namespace ARMISD { // ARM Specific DAG Nodes @@ -114,6 +114,11 @@ std::vector getRegClassForInlineAsmConstraint(const std::string &Constraint, MVT::ValueType VT) const; + + virtual const TargetSubtarget* getSubtarget() { + return static_cast(Subtarget); + } + private: /// Subtarget - Keep a pointer to the ARMSubtarget around so that we can /// make the right decision when generating code for different targets. @@ -134,10 +139,6 @@ SDOperand LowerGLOBAL_OFFSET_TABLE(SDOperand Op, SelectionDAG &DAG); SDOperand LowerFORMAL_ARGUMENTS(SDOperand Op, SelectionDAG &DAG); SDOperand LowerBR_JT(SDOperand Op, SelectionDAG &DAG); - SDOperand LowerMEMCPY(SDOperand Op, SelectionDAG &DAG); - SDOperand LowerMEMCPYCall(SDOperand Chain, SDOperand Dest, - SDOperand Source, SDOperand Count, - SelectionDAG &DAG); SDOperand LowerMEMCPYInline(SDOperand Chain, SDOperand Dest, SDOperand Source, unsigned Size, unsigned Align, SelectionDAG &DAG); Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=43742&r1=43741&r2=43742&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Mon Nov 5 17:12:20 2007 @@ -4481,55 +4481,6 @@ return Chain; } -SDOperand X86TargetLowering::LowerMEMCPY(SDOperand Op, SelectionDAG &DAG) { - SDOperand ChainOp = Op.getOperand(0); - SDOperand DestOp = Op.getOperand(1); - SDOperand SourceOp = Op.getOperand(2); - SDOperand CountOp = Op.getOperand(3); - SDOperand AlignOp = Op.getOperand(4); - SDOperand AlwaysInlineOp = Op.getOperand(5); - - bool AlwaysInline = (bool)cast(AlwaysInlineOp)->getValue(); - unsigned Align = (unsigned)cast(AlignOp)->getValue(); - if (Align == 0) Align = 1; - - // If size is unknown, call memcpy. - ConstantSDNode *I = dyn_cast(CountOp); - if (!I) { - assert(!AlwaysInline && "Cannot inline copy of unknown size"); - return LowerMEMCPYCall(ChainOp, DestOp, SourceOp, CountOp, DAG); - } - - // If not DWORD aligned or if size is more than threshold, then call memcpy. - // The libc version is likely to be faster for the following cases. It can - // use the address value and run time information about the CPU. - // With glibc 2.6.1 on a core 2, coping an array of 100M longs was 30% faster - unsigned Size = I->getValue(); - if (AlwaysInline || - (Size <= Subtarget->getMaxInlineSizeThreshold() && - (Align & 3) == 0)) - return LowerMEMCPYInline(ChainOp, DestOp, SourceOp, Size, Align, DAG); - return LowerMEMCPYCall(ChainOp, DestOp, SourceOp, CountOp, DAG); -} - -SDOperand X86TargetLowering::LowerMEMCPYCall(SDOperand Chain, - SDOperand Dest, - SDOperand Source, - SDOperand Count, - SelectionDAG &DAG) { - MVT::ValueType IntPtr = getPointerTy(); - TargetLowering::ArgListTy Args; - TargetLowering::ArgListEntry Entry; - Entry.Ty = getTargetData()->getIntPtrType(); - Entry.Node = Dest; Args.push_back(Entry); - Entry.Node = Source; Args.push_back(Entry); - Entry.Node = Count; Args.push_back(Entry); - std::pair CallResult = - LowerCallTo(Chain, Type::VoidTy, false, false, CallingConv::C, false, - DAG.getExternalSymbol("memcpy", IntPtr), Args, DAG); - return CallResult.second; -} - SDOperand X86TargetLowering::LowerMEMCPYInline(SDOperand Chain, SDOperand Dest, SDOperand Source, Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.h?rev=43742&r1=43741&r2=43742&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.h (original) +++ llvm/trunk/lib/Target/X86/X86ISelLowering.h Mon Nov 5 17:12:20 2007 @@ -386,6 +386,10 @@ SDOperand Ret, SelectionDAG &DAG) const; + virtual const TargetSubtarget* getSubtarget() { + return static_cast(Subtarget); + } + private: /// Subtarget - Keep a pointer to the X86Subtarget around so that we can /// make the right decision when generating code for different targets. @@ -454,10 +458,6 @@ SDOperand LowerMEMCPYInline(SDOperand Dest, SDOperand Source, SDOperand Chain, unsigned Size, unsigned Align, SelectionDAG &DAG); - SDOperand LowerMEMCPYCall(SDOperand ChainOp, SDOperand DestOp, - SDOperand SourceOp, SDOperand CountOp, - SelectionDAG &DAG); - SDOperand LowerMEMCPY(SDOperand Op, SelectionDAG &DAG); SDOperand LowerJumpTable(SDOperand Op, SelectionDAG &DAG); SDOperand LowerCALL(SDOperand Op, SelectionDAG &DAG); SDOperand LowerRET(SDOperand Op, SelectionDAG &DAG); From djg at cray.com Mon Nov 5 17:16:33 2007 From: djg at cray.com (Dan Gohman) Date: Mon, 05 Nov 2007 23:16:33 -0000 Subject: [llvm-commits] [llvm] r43743 - in /llvm/trunk: lib/Transforms/Scalar/InstructionCombining.cpp test/Transforms/InstCombine/vector-srem.ll Message-ID: <200711052316.lA5NGYbO023641@zion.cs.uiuc.edu> Author: djg Date: Mon Nov 5 17:16:33 2007 New Revision: 43743 URL: http://llvm.org/viewvc/llvm-project?rev=43743&view=rev Log: Fix an abort in instcombine when folding creates a vector rem instruction. Added: llvm/trunk/test/Transforms/InstCombine/vector-srem.ll Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp?rev=43743&r1=43742&r2=43743&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Mon Nov 5 17:16:33 2007 @@ -2622,6 +2622,7 @@ if (I.getType()->isInteger()) { APInt Mask(APInt::getSignBit(I.getType()->getPrimitiveSizeInBits())); if (MaskedValueIsZero(Op1, Mask) && MaskedValueIsZero(Op0, Mask)) { + // X sdiv Y -> X udiv Y, iff X and Y don't have sign bit set return BinaryOperator::createUDiv(Op0, Op1, I.getName()); } } @@ -2811,6 +2812,7 @@ Instruction *InstCombiner::visitSRem(BinaryOperator &I) { Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); + // Handle the integer rem common cases if (Instruction *common = commonIRemTransforms(I)) return common; @@ -2823,12 +2825,14 @@ return &I; } - // If the top bits of both operands are zero (i.e. we can prove they are + // If the sign bits of both operands are zero (i.e. we can prove they are // unsigned inputs), turn this into a urem. - APInt Mask(APInt::getSignBit(I.getType()->getPrimitiveSizeInBits())); - if (MaskedValueIsZero(Op1, Mask) && MaskedValueIsZero(Op0, Mask)) { - // X srem Y -> X urem Y, iff X and Y don't have sign bit set - return BinaryOperator::createURem(Op0, Op1, I.getName()); + if (I.getType()->isInteger()) { + APInt Mask(APInt::getSignBit(I.getType()->getPrimitiveSizeInBits())); + if (MaskedValueIsZero(Op1, Mask) && MaskedValueIsZero(Op0, Mask)) { + // X srem Y -> X urem Y, iff X and Y don't have sign bit set + return BinaryOperator::createURem(Op0, Op1, I.getName()); + } } return 0; Added: llvm/trunk/test/Transforms/InstCombine/vector-srem.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/vector-srem.ll?rev=43743&view=auto ============================================================================== --- llvm/trunk/test/Transforms/InstCombine/vector-srem.ll (added) +++ llvm/trunk/test/Transforms/InstCombine/vector-srem.ll Mon Nov 5 17:16:33 2007 @@ -0,0 +1,9 @@ +; RUN: llvm-as < %s | opt -instcombine | llvm-dis | grep {srem <4 x i32>} + +define <4 x i32> @foo(<4 x i32> %t, <4 x i32> %u) +{ + %k = sdiv <4 x i32> %t, %u + %l = mul <4 x i32> %k, %u + %m = sub <4 x i32> %t, %l + ret <4 x i32> %m +} From djg at cray.com Mon Nov 5 17:35:24 2007 From: djg at cray.com (Dan Gohman) Date: Mon, 05 Nov 2007 23:35:24 -0000 Subject: [llvm-commits] [llvm] r43744 - in /llvm/trunk: docs/LangRef.html lib/AsmParser/llvmAsmParser.y lib/CodeGen/SelectionDAG/LegalizeDAG.cpp test/CodeGen/X86/vector-rem.ll Message-ID: <200711052335.lA5NZOMc024408@zion.cs.uiuc.edu> Author: djg Date: Mon Nov 5 17:35:22 2007 New Revision: 43744 URL: http://llvm.org/viewvc/llvm-project?rev=43744&view=rev Log: Add support for vector remainder operations. Added: llvm/trunk/test/CodeGen/X86/vector-rem.ll Modified: llvm/trunk/docs/LangRef.html llvm/trunk/lib/AsmParser/llvmAsmParser.y llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Modified: llvm/trunk/docs/LangRef.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/LangRef.html?rev=43744&r1=43743&r2=43744&view=diff ============================================================================== --- llvm/trunk/docs/LangRef.html (original) +++ llvm/trunk/docs/LangRef.html Mon Nov 5 17:35:22 2007 @@ -2093,7 +2093,8 @@

        Arguments:

        The two arguments to the 'urem' instruction must be integer values. Both arguments must have identical -types.

        +types. This instruction can also take vector versions +of the values in which case the elements must be integers.

        Semantics:

        This instruction returns the unsigned integer remainder of a division. This instruction always performs an unsigned division to get the remainder, @@ -2112,7 +2113,10 @@

        Overview:

        The 'srem' instruction returns the remainder from the -signed division of its two operands.

        +signed division of its two operands. This instruction can also take +vector versions of the values in which case +the elements must be integers.

        +

        Arguments:

        The two arguments to the 'srem' instruction must be integer values. Both arguments must have identical @@ -2144,7 +2148,8 @@

        Arguments:

        The two arguments to the 'frem' instruction must be floating point values. Both arguments must have -identical types.

        +identical types. This instruction can also take vector +versions of floating point values.

        Semantics:

        This instruction returns the remainder of a division.

        Example:
        Modified: llvm/trunk/lib/AsmParser/llvmAsmParser.y URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/llvmAsmParser.y?rev=43744&r1=43743&r2=43744&view=diff ============================================================================== --- llvm/trunk/lib/AsmParser/llvmAsmParser.y (original) +++ llvm/trunk/lib/AsmParser/llvmAsmParser.y Mon Nov 5 17:35:22 2007 @@ -2812,11 +2812,6 @@ !isa((*$2).get())) GEN_ERROR( "Arithmetic operator requires integer, FP, or packed operands"); - if (isa((*$2).get()) && - ($1 == Instruction::URem || - $1 == Instruction::SRem || - $1 == Instruction::FRem)) - GEN_ERROR("Remainder not supported on vector types"); Value* val1 = getVal(*$2, $3); CHECK_FOR_ERROR Value* val2 = getVal(*$2, $5); Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=43744&r1=43743&r2=43744&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Mon Nov 5 17:35:22 2007 @@ -2925,6 +2925,8 @@ Result = DAG.getNode(DivOpc, VT, Tmp1, Tmp2); Result = DAG.getNode(ISD::MUL, VT, Result, Tmp2); Result = DAG.getNode(ISD::SUB, VT, Tmp1, Result); + } else if (MVT::isVector(VT)) { + Result = LegalizeOp(UnrollVectorOp(Op)); } else { assert(VT == MVT::i32 && "Cannot expand this binary operator!"); @@ -2933,13 +2935,17 @@ SDOperand Dummy; Result = ExpandLibCall(TLI.getLibcallName(LC), Node, isSigned, Dummy); } - } else { - // Floating point mod -> fmod libcall. - RTLIB::Libcall LC = VT == MVT::f32 - ? RTLIB::REM_F32 : RTLIB::REM_F64; - SDOperand Dummy; - Result = ExpandLibCall(TLI.getLibcallName(LC), Node, - false/*sign irrelevant*/, Dummy); + } else if (MVT::isFloatingPoint(VT)) { + if (MVT::isVector(VT)) { + Result = LegalizeOp(UnrollVectorOp(Op)); + } else { + // Floating point mod -> fmod libcall. + RTLIB::Libcall LC = VT == MVT::f32 + ? RTLIB::REM_F32 : RTLIB::REM_F64; + SDOperand Dummy; + Result = ExpandLibCall(TLI.getLibcallName(LC), Node, + false/*sign irrelevant*/, Dummy); + } } break; } Added: llvm/trunk/test/CodeGen/X86/vector-rem.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/vector-rem.ll?rev=43744&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/X86/vector-rem.ll (added) +++ llvm/trunk/test/CodeGen/X86/vector-rem.ll Mon Nov 5 17:35:22 2007 @@ -0,0 +1,15 @@ +; RUN: llvm-as < %s | llc -march=x86-64 | grep div | count 8 +; RUN: llvm-as < %s | llc -march=x86-64 | grep fmodf | count 4 + +define <4 x i32> @foo(<4 x i32> %t, <4 x i32> %u) { + %m = srem <4 x i32> %t, %u + ret <4 x i32> %m +} +define <4 x i32> @bar(<4 x i32> %t, <4 x i32> %u) { + %m = urem <4 x i32> %t, %u + ret <4 x i32> %m +} +define <4 x float> @qux(<4 x float> %t, <4 x float> %u) { + %m = frem <4 x float> %t, %u + ret <4 x float> %m +} From sabre at nondot.org Mon Nov 5 19:15:28 2007 From: sabre at nondot.org (Chris Lattner) Date: Tue, 06 Nov 2007 01:15:28 -0000 Subject: [llvm-commits] [llvm] r43745 - /llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Message-ID: <200711060115.lA61FSEn029195@zion.cs.uiuc.edu> Author: lattner Date: Mon Nov 5 19:15:27 2007 New Revision: 43745 URL: http://llvm.org/viewvc/llvm-project?rev=43745&view=rev Log: wrap long lines Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp?rev=43745&r1=43744&r2=43745&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Mon Nov 5 19:15:27 2007 @@ -7732,8 +7732,10 @@ NewPtrTy = PointerType::get(IntegerType::get(Size<<3)); if (NewPtrTy) { - Value *Src = InsertCastBefore(Instruction::BitCast, CI.getOperand(2), NewPtrTy, CI); - Value *Dest = InsertCastBefore(Instruction::BitCast, CI.getOperand(1), NewPtrTy, CI); + Value *Src = InsertCastBefore(Instruction::BitCast, CI.getOperand(2), + NewPtrTy, CI); + Value *Dest = InsertCastBefore(Instruction::BitCast, CI.getOperand(1), + NewPtrTy, CI); Value *L = new LoadInst(Src, "tmp", false, Align, &CI); Value *NS = new StoreInst(L, Dest, false, Align, &CI); CI.replaceAllUsesWith(NS); From resistor at mac.com Mon Nov 5 19:26:56 2007 From: resistor at mac.com (Owen Anderson) Date: Tue, 06 Nov 2007 01:26:56 -0000 Subject: [llvm-commits] [llvm] r43746 - /llvm/trunk/docs/tutorial/JITTutorial1.html Message-ID: <200711060126.lA61QuX8029612@zion.cs.uiuc.edu> Author: resistor Date: Mon Nov 5 19:26:56 2007 New Revision: 43746 URL: http://llvm.org/viewvc/llvm-project?rev=43746&view=rev Log: Add a missing #include. Modified: llvm/trunk/docs/tutorial/JITTutorial1.html Modified: llvm/trunk/docs/tutorial/JITTutorial1.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/JITTutorial1.html?rev=43746&r1=43745&r2=43746&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/JITTutorial1.html (original) +++ llvm/trunk/docs/tutorial/JITTutorial1.html Mon Nov 5 19:26:56 2007 @@ -57,6 +57,7 @@ #include <llvm/Module.h> #include <llvm/Function.h> #include <llvm/PassManager.h> +#include <llvm/CallingConv.h> #include <llvm/Analysis/Verifier.h> #include <llvm/Assembly/PrintModulePass.h> #include <llvm/Support/LLVMBuilder.h> From sabre at nondot.org Mon Nov 5 19:39:13 2007 From: sabre at nondot.org (Chris Lattner) Date: Tue, 06 Nov 2007 01:39:13 -0000 Subject: [llvm-commits] [llvm] r43747 - in /llvm/trunk/docs/tutorial: LangImpl1.html LangImpl2.html LangImpl3.html LangImpl4.html LangImpl5.html LangImpl6.html LangImpl7.html Message-ID: <200711060139.lA61dDUl030198@zion.cs.uiuc.edu> Author: lattner Date: Mon Nov 5 19:39:12 2007 New Revision: 43747 URL: http://llvm.org/viewvc/llvm-project?rev=43747&view=rev Log: fixes from Ryan Brown. Modified: llvm/trunk/docs/tutorial/LangImpl1.html llvm/trunk/docs/tutorial/LangImpl2.html llvm/trunk/docs/tutorial/LangImpl3.html llvm/trunk/docs/tutorial/LangImpl4.html llvm/trunk/docs/tutorial/LangImpl5.html llvm/trunk/docs/tutorial/LangImpl6.html llvm/trunk/docs/tutorial/LangImpl7.html Modified: llvm/trunk/docs/tutorial/LangImpl1.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl1.html?rev=43747&r1=43746&r2=43747&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl1.html (original) +++ llvm/trunk/docs/tutorial/LangImpl1.html Mon Nov 5 19:39:12 2007 @@ -232,7 +232,7 @@
        -

        We handle comments by skipping to the end of the line and then returning the +

        We handle comments by skipping to the end of the line and then return the next comment. Finally, if the input doesn't match one of the above cases, it is either an operator character like '+' or the end of the file. These are handled with this code:

        Modified: llvm/trunk/docs/tutorial/LangImpl2.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl2.html?rev=43747&r1=43746&r2=43747&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl2.html (original) +++ llvm/trunk/docs/tutorial/LangImpl2.html Mon Nov 5 19:39:12 2007 @@ -325,16 +325,18 @@ // Call. getNextToken(); // eat ( std::vector<ExprAST*> Args; - while (1) { - ExprAST *Arg = ParseExpression(); - if (!Arg) return 0; - Args.push_back(Arg); - - if (CurTok == ')') break; - - if (CurTok != ',') - return Error("Expected ')'"); - getNextToken(); + if (CurTok != ')') { + while (1) { + ExprAST *Arg = ParseExpression(); + if (!Arg) return 0; + Args.push_back(Arg); + + if (CurTok == ')') break; + + if (CurTok != ',') + return Error("Expected ')'"); + getNextToken(); + } } // Eat the ')'. @@ -985,16 +987,18 @@ // Call. getNextToken(); // eat ( std::vector<ExprAST*> Args; - while (1) { - ExprAST *Arg = ParseExpression(); - if (!Arg) return 0; - Args.push_back(Arg); - - if (CurTok == ')') break; - - if (CurTok != ',') - return Error("Expected ')'"); - getNextToken(); + if (CurTok != ')') { + while (1) { + ExprAST *Arg = ParseExpression(); + if (!Arg) return 0; + Args.push_back(Arg); + + if (CurTok == ')') break; + + if (CurTok != ',') + return Error("Expected ')'"); + getNextToken(); + } } // Eat the ')'. Modified: llvm/trunk/docs/tutorial/LangImpl3.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl3.html?rev=43747&r1=43746&r2=43747&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl3.html (original) +++ llvm/trunk/docs/tutorial/LangImpl3.html Mon Nov 5 19:39:12 2007 @@ -192,7 +192,7 @@ case '-': return Builder.CreateSub(L, R, "subtmp"); case '*': return Builder.CreateMul(L, R, "multmp"); case '<': - L = Builder.CreateFCmpULT(L, R, "multmp"); + L = Builder.CreateFCmpULT(L, R, "cmptmp"); // Convert bool 0/1 to double 0.0 or 1.0 return Builder.CreateUIToFP(L, Type::DoubleTy, "booltmp"); default: return ErrorV("invalid binary operator"); @@ -860,16 +860,18 @@ // Call. getNextToken(); // eat ( std::vector<ExprAST*> Args; - while (1) { - ExprAST *Arg = ParseExpression(); - if (!Arg) return 0; - Args.push_back(Arg); + if (CurTok != ')') { + while (1) { + ExprAST *Arg = ParseExpression(); + if (!Arg) return 0; + Args.push_back(Arg); - if (CurTok == ')') break; + if (CurTok == ')') break; - if (CurTok != ',') - return Error("Expected ')'"); - getNextToken(); + if (CurTok != ',') + return Error("Expected ')'"); + getNextToken(); + } } // Eat the ')'. @@ -1034,7 +1036,7 @@ case '-': return Builder.CreateSub(L, R, "subtmp"); case '*': return Builder.CreateMul(L, R, "multmp"); case '<': - L = Builder.CreateFCmpULT(L, R, "multmp"); + L = Builder.CreateFCmpULT(L, R, "cmptmp"); // Convert bool 0/1 to double 0.0 or 1.0 return Builder.CreateUIToFP(L, Type::DoubleTy, "booltmp"); default: return ErrorV("invalid binary operator"); Modified: llvm/trunk/docs/tutorial/LangImpl4.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl4.html?rev=43747&r1=43746&r2=43747&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl4.html (original) +++ llvm/trunk/docs/tutorial/LangImpl4.html Mon Nov 5 19:39:12 2007 @@ -715,16 +715,18 @@ // Call. getNextToken(); // eat ( std::vector<ExprAST*> Args; - while (1) { - ExprAST *Arg = ParseExpression(); - if (!Arg) return 0; - Args.push_back(Arg); - - if (CurTok == ')') break; - - if (CurTok != ',') - return Error("Expected ')'"); - getNextToken(); + if (CurTok != ')') { + while (1) { + ExprAST *Arg = ParseExpression(); + if (!Arg) return 0; + Args.push_back(Arg); + + if (CurTok == ')') break; + + if (CurTok != ',') + return Error("Expected ')'"); + getNextToken(); + } } // Eat the ')'. @@ -890,7 +892,7 @@ case '-': return Builder.CreateSub(L, R, "subtmp"); case '*': return Builder.CreateMul(L, R, "multmp"); case '<': - L = Builder.CreateFCmpULT(L, R, "multmp"); + L = Builder.CreateFCmpULT(L, R, "cmptmp"); // Convert bool 0/1 to double 0.0 or 1.0 return Builder.CreateUIToFP(L, Type::DoubleTy, "booltmp"); default: return ErrorV("invalid binary operator"); Modified: llvm/trunk/docs/tutorial/LangImpl5.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl5.html?rev=43747&r1=43746&r2=43747&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl5.html (original) +++ llvm/trunk/docs/tutorial/LangImpl5.html Mon Nov 5 19:39:12 2007 @@ -319,7 +319,7 @@ value of "calltmp". If control comes from the "else" block, it gets the value of "calltmp1".

        -

        At this point, you are probably starting to think "on no! this means my +

        At this point, you are probably starting to think "oh no! this means my simple and elegant front-end will have to start generating SSA form in order to use LLVM!". Fortunately, this is not the case, and we strongly advise not implementing an SSA construction algorithm in your front-end @@ -679,8 +679,8 @@ %nextvar = add double %i, 1.000000e+00 ; termination test - %multmp = fcmp ult double %i, %n - %booltmp = uitofp i1 %multmp to double + %cmptmp = fcmp ult double %i, %n + %booltmp = uitofp i1 %cmptmp to double %loopcond = fcmp one double %booltmp, 0.000000e+00 br i1 %loopcond, label %loop, label %afterloop @@ -871,7 +871,8 @@ the tutorial. We added two control flow constructs, and used them to motivate a couple of aspects of the LLVM IR that are important for front-end implementors to know. In the next chapter of our saga, we will get a bit crazier and add -operator overloading to our poor innocent language.

        +user-defined operators to our poor innocent +language.

    @@ -1378,7 +1379,7 @@ case '-': return Builder.CreateSub(L, R, "subtmp"); case '*': return Builder.CreateMul(L, R, "multmp"); case '<': - L = Builder.CreateFCmpULT(L, R, "multmp"); + L = Builder.CreateFCmpULT(L, R, "cmptmp"); // Convert bool 0/1 to double 0.0 or 1.0 return Builder.CreateUIToFP(L, Type::DoubleTy, "booltmp"); default: return ErrorV("invalid binary operator"); Modified: llvm/trunk/docs/tutorial/LangImpl6.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl6.html?rev=43747&r1=43746&r2=43747&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl6.html (original) +++ llvm/trunk/docs/tutorial/LangImpl6.html Mon Nov 5 19:39:12 2007 @@ -280,7 +280,7 @@ case '-': return Builder.CreateSub(L, R, "subtmp"); case '*': return Builder.CreateMul(L, R, "multmp"); case '<': - L = Builder.CreateFCmpULT(L, R, "multmp"); + L = Builder.CreateFCmpULT(L, R, "cmptmp"); // Convert bool 0/1 to double 0.0 or 1.0 return Builder.CreateUIToFP(L, Type::DoubleTy, "booltmp"); default: break; @@ -1396,7 +1396,7 @@ case '-': return Builder.CreateSub(L, R, "subtmp"); case '*': return Builder.CreateMul(L, R, "multmp"); case '<': - L = Builder.CreateFCmpULT(L, R, "multmp"); + L = Builder.CreateFCmpULT(L, R, "cmptmp"); // Convert bool 0/1 to double 0.0 or 1.0 return Builder.CreateUIToFP(L, Type::DoubleTy, "booltmp"); default: break; Modified: llvm/trunk/docs/tutorial/LangImpl7.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl7.html?rev=43747&r1=43746&r2=43747&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl7.html (original) +++ llvm/trunk/docs/tutorial/LangImpl7.html Mon Nov 5 19:39:12 2007 @@ -546,8 +546,8 @@ %x1 = alloca double store double %x, double* %x1 %x2 = load double* %x1 - %multmp = fcmp ult double %x2, 3.000000e+00 - %booltmp = uitofp i1 %multmp to double + %cmptmp = fcmp ult double %x2, 3.000000e+00 + %booltmp = uitofp i1 %cmptmp to double %ifcond = fcmp one double %booltmp, 0.000000e+00 br i1 %ifcond, label %then, label %else @@ -585,8 +585,8 @@
     define double @fib(double %x) {
     entry:
    -	%multmp = fcmp ult double %x, 3.000000e+00
    -	%booltmp = uitofp i1 %multmp to double
    +	%cmptmp = fcmp ult double %x, 3.000000e+00
    +	%booltmp = uitofp i1 %cmptmp to double
     	%ifcond = fcmp one double %booltmp, 0.000000e+00
     	br i1 %ifcond, label %then, label %else
     
    @@ -618,8 +618,8 @@
     
     define double @fib(double %x) {
     entry:
    -	%multmp = fcmp ult double %x, 3.000000e+00
    -	%booltmp = uitofp i1 %multmp to double
    +	%cmptmp = fcmp ult double %x, 3.000000e+00
    +	%booltmp = uitofp i1 %cmptmp to double
     	%ifcond = fcmp ueq double %booltmp, 0.000000e+00
     	br i1 %ifcond, label %else, label %ifcont
     
    @@ -1674,7 +1674,7 @@
       case '-': return Builder.CreateSub(L, R, "subtmp");
       case '*': return Builder.CreateMul(L, R, "multmp");
       case '<':
    -    L = Builder.CreateFCmpULT(L, R, "multmp");
    +    L = Builder.CreateFCmpULT(L, R, "cmptmp");
         // Convert bool 0/1 to double 0.0 or 1.0
         return Builder.CreateUIToFP(L, Type::DoubleTy, "booltmp");
       default: break;
    
    
    
    
    From sabre at nondot.org  Mon Nov  5 19:40:47 2007
    From: sabre at nondot.org (Chris Lattner)
    Date: Tue, 06 Nov 2007 01:40:47 -0000
    Subject: [llvm-commits] [llvm] r43748 -
    	/llvm/trunk/docs/tutorial/LangImpl8.html
    Message-ID: <200711060140.lA61elAZ030275@zion.cs.uiuc.edu>
    
    Author: lattner
    Date: Mon Nov  5 19:40:41 2007
    New Revision: 43748
    
    URL: http://llvm.org/viewvc/llvm-project?rev=43748&view=rev
    Log:
    typo from Ryan Brown.
    
    Modified:
        llvm/trunk/docs/tutorial/LangImpl8.html
    
    Modified: llvm/trunk/docs/tutorial/LangImpl8.html
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl8.html?rev=43748&r1=43747&r2=43748&view=diff
    
    ==============================================================================
    --- llvm/trunk/docs/tutorial/LangImpl8.html (original)
    +++ llvm/trunk/docs/tutorial/LangImpl8.html Mon Nov  5 19:40:41 2007
    @@ -280,7 +280,7 @@
     

    Third, it is certainly possible to add language-specific optimizations, and you have a number of choices in how to do it. As one trivial example, it is possible to add language-specific optimization passes that -"known" things about code compiled for a language. In the case of the C family, +"know" things about code compiled for a language. In the case of the C family, there is an optimziation pass that "knows" about the standard C library functions. If you call "exit(0)" in main(), it knows that it is safe to optimize that into "return 0;" for example, because C specifies what the 'exit' From clattner at apple.com Mon Nov 5 19:47:29 2007 From: clattner at apple.com (Chris Lattner) Date: Mon, 5 Nov 2007 17:47:29 -0800 Subject: [llvm-commits] [llvm-testresults] sabre-ppc32 Power Macintosh nightly tester results In-Reply-To: <27A3B3CD-4DBB-4422-94F5-2330874E08E2@apple.com> References: <200711051314.lA5DEBvs024598@zion.cs.uiuc.edu> <27A3B3CD-4DBB-4422-94F5-2330874E08E2@apple.com> Message-ID: <53CB9B8E-A6D9-4489-BAEB-6EFC7927A095@apple.com> On Nov 5, 2007, at 5:36 PM, Evan Cheng wrote: > I dunno. Haven't looked into it. Bugpoint claims that pointer_method is being miscompiled by - scalarrepl. Anyone have any ideas? -Chris > Evan > > On Nov 5, 2007, at 5:32 PM, Chris Lattner wrote: > >> Any idea who broke these? >> >> pointer_method is very small, it could be a good place to start. >> >> -Chris >> >> Begin forwarded message: >> >>> >>> New Test Failures: >>> Applications/kimwitu++/kc [LLC compile, LLC-BETA compile, JIT >>> codegen, CBE, LLC, LLC-BETA, JIT] >>> Benchmarks/McCat/09-vor/vor [LLC compile, LLC-BETA compile, JIT >>> codegen, CBE, LLC, LLC-BETA, JIT] >>> Regression/C++/pointer_method [LLC compile, LLC-BETA compile, JIT >>> codegen, CBE, LLC, LLC-BETA, JIT] >>> SPEC/CFP2006/447.dealII/447.dealII [LLC compile, LLC-BETA >>> compile, JIT codegen, , LLC, LLC-BETA] >>> SPEC/CINT2000/255.vortex/255.vortex [LLC compile, LLC-BETA >>> compile, JIT codegen, CBE, LLC, LLC-BETA, JIT] >>> SPEC/CINT2006/462.libquantum/462.libquantum [LLC compile, LLC- >>> BETA compile, JIT codegen, CBE, LLC, LLC-BETA, JIT] >> > From bruno.cardoso at gmail.com Mon Nov 5 21:15:23 2007 From: bruno.cardoso at gmail.com (Bruno Cardoso Lopes) Date: Tue, 06 Nov 2007 03:15:23 -0000 Subject: [llvm-commits] [llvm] r43749 - in /llvm/trunk/lib/Target/Mips: Mips.td MipsSubtarget.cpp Message-ID: <200711060315.lA63FNR8002500@zion.cs.uiuc.edu> Author: bruno Date: Mon Nov 5 21:15:20 2007 New Revision: 43749 URL: http://llvm.org/viewvc/llvm-project?rev=43749&view=rev Log: Better processor definition Modified: llvm/trunk/lib/Target/Mips/Mips.td llvm/trunk/lib/Target/Mips/MipsSubtarget.cpp Modified: llvm/trunk/lib/Target/Mips/Mips.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/Mips.td?rev=43749&r1=43748&r2=43749&view=diff ============================================================================== --- llvm/trunk/lib/Target/Mips/Mips.td (original) +++ llvm/trunk/lib/Target/Mips/Mips.td Mon Nov 5 21:15:20 2007 @@ -33,6 +33,7 @@ // CPU Directives // //===----------------------------------------------------------------------===// +// Not currently supported, but work as SubtargetFeature placeholder. def FeatureMipsIII : SubtargetFeature<"mips3", "IsMipsIII", "true", "MipsIII ISA Support">; @@ -40,8 +41,9 @@ // Mips processors supported. //===----------------------------------------------------------------------===// -def : Processor<"generic", MipsGenericItineraries, []>; -//def : Processor<"r4000", MipsR4000Itineraries, [FeatureMipsIII]>; +def : Processor<"mips1", MipsGenericItineraries, []>; +def : Processor<"r2000", MipsGenericItineraries, []>; +def : Processor<"r3000", MipsGenericItineraries, []>; def Mips : Target { let InstructionSet = MipsInstrInfo; Modified: llvm/trunk/lib/Target/Mips/MipsSubtarget.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsSubtarget.cpp?rev=43749&r1=43748&r2=43749&view=diff ============================================================================== --- llvm/trunk/lib/Target/Mips/MipsSubtarget.cpp (original) +++ llvm/trunk/lib/Target/Mips/MipsSubtarget.cpp Mon Nov 5 21:15:20 2007 @@ -20,7 +20,7 @@ const std::string &FS) : IsMipsIII(false) { - std::string CPU = "generic"; + std::string CPU = "mips1"; // Parse features string. ParseSubtargetFeatures(FS, CPU); From evan.cheng at apple.com Mon Nov 5 21:35:59 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Mon, 5 Nov 2007 19:35:59 -0800 Subject: [llvm-commits] [llvm-testresults] sabre-ppc32 Power Macintosh nightly tester results In-Reply-To: <53CB9B8E-A6D9-4489-BAEB-6EFC7927A095@apple.com> References: <200711051314.lA5DEBvs024598@zion.cs.uiuc.edu> <27A3B3CD-4DBB-4422-94F5-2330874E08E2@apple.com> <53CB9B8E-A6D9-4489-BAEB-6EFC7927A095@apple.com> Message-ID: <7552771B-E0E0-488C-9B91-C40B0C4ECA49@apple.com> 09-vor also failing due to scalarrepl. It's due to Duncan's changes: 43672, 43688, 43691, and 43720. Evan On Nov 5, 2007, at 5:47 PM, Chris Lattner wrote: > On Nov 5, 2007, at 5:36 PM, Evan Cheng wrote: >> I dunno. Haven't looked into it. > > Bugpoint claims that pointer_method is being miscompiled by - > scalarrepl. Anyone have any ideas? > > -Chris > > >> Evan >> >> On Nov 5, 2007, at 5:32 PM, Chris Lattner wrote: >> >>> Any idea who broke these? >>> >>> pointer_method is very small, it could be a good place to start. >>> >>> -Chris >>> >>> Begin forwarded message: >>> >>>> >>>> New Test Failures: >>>> Applications/kimwitu++/kc [LLC compile, LLC-BETA compile, JIT >>>> codegen, CBE, LLC, LLC-BETA, JIT] >>>> Benchmarks/McCat/09-vor/vor [LLC compile, LLC-BETA compile, JIT >>>> codegen, CBE, LLC, LLC-BETA, JIT] >>>> Regression/C++/pointer_method [LLC compile, LLC-BETA compile, JIT >>>> codegen, CBE, LLC, LLC-BETA, JIT] >>>> SPEC/CFP2006/447.dealII/447.dealII [LLC compile, LLC-BETA >>>> compile, JIT codegen, , LLC, LLC-BETA] >>>> SPEC/CINT2000/255.vortex/255.vortex [LLC compile, LLC-BETA >>>> compile, JIT codegen, CBE, LLC, LLC-BETA, JIT] >>>> SPEC/CINT2006/462.libquantum/462.libquantum [LLC compile, LLC- >>>> BETA compile, JIT codegen, CBE, LLC, LLC-BETA, JIT] >>> >> > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From resistor at mac.com Mon Nov 5 22:49:44 2007 From: resistor at mac.com (Owen Anderson) Date: Tue, 06 Nov 2007 04:49:44 -0000 Subject: [llvm-commits] [llvm] r43751 - /llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Message-ID: <200711060449.lA64niHt008855@zion.cs.uiuc.edu> Author: resistor Date: Mon Nov 5 22:49:43 2007 New Revision: 43751 URL: http://llvm.org/viewvc/llvm-project?rev=43751&view=rev Log: StrongPHIElimination requires LiveVariables. Modified: llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Modified: llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp?rev=43751&r1=43750&r2=43751&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp (original) +++ llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Mon Nov 5 22:49:43 2007 @@ -37,23 +37,22 @@ static char ID; // Pass identification, replacement for typeid StrongPHIElimination() : MachineFunctionPass((intptr_t)&ID) {} - bool runOnMachineFunction(MachineFunction &Fn) { - computeDFS(Fn); - - - return false; - } - + bool runOnMachineFunction(MachineFunction &Fn); + virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.addPreserved(); AU.addPreservedID(PHIEliminationID); AU.addRequired(); + AU.addRequired(); + AU.setPreservesAll(); MachineFunctionPass::getAnalysisUsage(AU); } virtual void releaseMemory() { preorder.clear(); maxpreorder.clear(); + + waiting.clear(); } private: @@ -72,15 +71,23 @@ parent->addChild(this); } - MachineInstr* getInstr() { return instr; } + ~DomForestNode() { + for (iterator I = begin(), E = end(); I != E; ++I) + delete *I; + } - DomForestNode::iterator begin() { return children.begin(); } - DomForestNode::iterator end() { return children.end(); } + inline MachineInstr* getInstr() { return instr; } + + inline DomForestNode::iterator begin() { return children.begin(); } + inline DomForestNode::iterator end() { return children.end(); } }; DenseMap preorder; DenseMap maxpreorder; + DenseMap > waiting; + + void computeDFS(MachineFunction& MF); std::vector @@ -198,3 +205,10 @@ ret.insert(ret.end(), VirtualRoot->begin(), VirtualRoot->end()); return ret; } + +bool StrongPHIElimination::runOnMachineFunction(MachineFunction &Fn) { + computeDFS(Fn); + + + return false; +} From sabre at nondot.org Mon Nov 5 23:02:52 2007 From: sabre at nondot.org (Chris Lattner) Date: Tue, 06 Nov 2007 05:02:52 -0000 Subject: [llvm-commits] [llvm] r43752 - in /llvm/trunk/docs/tutorial: LangImpl1.html index.html Message-ID: <200711060502.lA652qHE009340@zion.cs.uiuc.edu> Author: lattner Date: Mon Nov 5 23:02:48 2007 New Revision: 43752 URL: http://llvm.org/viewvc/llvm-project?rev=43752&view=rev Log: Add a real intro to the series. Modified: llvm/trunk/docs/tutorial/LangImpl1.html llvm/trunk/docs/tutorial/index.html Modified: llvm/trunk/docs/tutorial/LangImpl1.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl1.html?rev=43752&r1=43751&r2=43752&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl1.html (original) +++ llvm/trunk/docs/tutorial/LangImpl1.html Mon Nov 5 23:02:48 2007 @@ -3,7 +3,7 @@ - Kaleidoscope: The basic language, with its lexer + Kaleidoscope: Tutorial Introduction and the Lexer @@ -11,7 +11,7 @@ -

    Kaleidoscope: The basic language, with its lexer
    +
    Kaleidoscope: Tutorial Introduction and the Lexer
    • Up to Tutorial Index
    • @@ -36,12 +36,88 @@

      Welcome to the "Implementing a language with LLVM" tutorial. This tutorial -will run the through implementation of a simple language, showing how fun and +runs through the implementation of a simple language, showing how fun and easy it can be. This tutorial will get you up and started as well as help to -build a framework you can extend to other languages. You can also use this -tutorial to help you start playing with other LLVM specific things. +build a framework you can extend to other languages, allowing you to use this +as a way to start playing with other LLVM specific things.

      +

      +The goal of this tutorial is to progressively unveil our language, describing +how it is built up over time. This will let us cover a fairly broad range of +language design and LLVM-specific usage issues, showing and explaining the code +for it all along the way, without overwhelming you with tons of details up +front.

      + +

      It is useful to point out ahead of time that this tutorial is really about +teaching compiler techniques and LLVM specifically, not about teaching +modern and sane software engineering principles. In practice, this means that +we'll take a number of shortcuts to simplify the exposition. For example, the +code leaks memory, uses global variables all over the place, doesn't use nice +design patterns like visitors, etc... but it is very simple. If you dig in and +use the code as a basis for future projects, fixing these deficiencies shouldn't +be hard.

      + +

      I've tried to put this tutorial together in a way that makes chapters easy to +skip over if you are already familiar or are uninterested with various pieces. +The structure of the tutorial is: +

      + +
        +
      • Chapter #1: Introduction to the Kaleidoscope +language, and the definition of its Lexer - This shows where we are going +and the basic functionality that we want it to do. In order to make this +tutorial maximally understandable and hackable, we choose to implement +everything in C++ instead of using lexer and parser generators. LLVM obviously +works just fine with such tools, feel free to use one if you prefer.
      • +
      • Chapter #2: Implementing a Parser and +AST - With the lexer in place, we can talk about parsing techniques and +basic AST construction. This tutorial describes recursive descent parsing and +operator precedence parsing. Nothing in Chapters 1 or 2 is LLVM-specific, +the code doesn't even link in LLVM at this point. :)
      • +
      • Chapter #3: Code generation to LLVM IR - +With the AST ready, we can show off how easy generation of LLVM IR really +is.
      • +
      • Chapter #4: Adding JIT and Optimizer +Support - Because a lot of people are interested in using LLVM as a JIT, +we'll dive right into it and show you the 3 lines it takes to add JIT support. +LLVM is also useful in many other ways, but this is one simple and "sexy" way +that shows off its power. :)
      • +
      • Chapter #5: Extending the Language: Control +Flow - With the language up and running, we show how to extend it with +control flow operations (if/then/else and a for loop). This gives us a chance +to talk about simple SSA construction and control flow.
      • +
      • Chapter #6: Extending the Language: +User-defined Operators - This is a silly but fun chapter that talks about +extending the language to let the user program define their own arbitrary +unary and binary operators (with assignable precedence!). This lets us build a +significant piece of the "language" as library routines.
      • +
      • Chapter #7: Extending the Language: Mutable +Variables - This chapter talks about adding user-defined local variables +along with variable assignment operator. The interesting part about this is how +easy and trivial it is to construct SSA form in LLVM (no, LLVM does not +require your front-end to construct SSA form!).
      • +
      • Chapter #8: Conclusion and other useful LLVM +tidbits - This chapter wraps up the series by talking about potential +ways to extend the language, but also includes a bunch of pointers to info about +"special topics" like adding garbage collection support, exceptions, debugging, +support for "spaghetti stacks", and a bunch of other tips and tricks.
      • + +
      + +

      By the end of the tutorial, we'll have written about 700 lines of +non-comment, non-blank lines of code. With this small amount of code, we'll +have built up a very reasonable compiler for a non-trivial language including +a hand-written lexer, parser, AST, as well as code generation support with a JIT +compiler. While other systems may have interesting "hello world" tutorials, +I think the breadth of this tutorial is a great testament to the strengths of +LLVM and why you should consider it if you're interested in language or compiler +design.

      + +

      A note about this tutorial: we expect you to extend the language and play +with it on your own. Take the code and go crazy hacking away at it. It can be +a lot of fun to play with languages! In any case, lets get into the code!

      +
      @@ -93,20 +169,9 @@
    -

    In the first incarnation of the language, we will only support basic -arithmetic: if/then/else will be added in a future installment. Another -interesting aspect of the first implementation is that it is a completely -functional language, which does not allow you to have side-effects, etc. We -will eventually add side effects for those who prefer them.

    - -

    In order to make this tutorial -maximally understandable and hackable, we choose to implement everything in C++ -instead of using lexer and parser generators. LLVM obviously works just fine -with such tools, and making use of them doesn't impact the overall design.

    - -

    A note about this tutorial: we expect you to extend the language and play -with it on your own. Take the code and go crazy hacking away at it. It can be -a lot of fun to play with languages!

    +

    A more interesting example is included in Chapter 6 where we show the code +used to implement a Mandelbrot Set viewer +in Kaleidoscope.

    Modified: llvm/trunk/docs/tutorial/index.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/index.html?rev=43752&r1=43751&r2=43752&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/index.html (original) +++ llvm/trunk/docs/tutorial/index.html Mon Nov 5 23:02:48 2007 @@ -27,7 +27,7 @@
  • Implementing a language with LLVM: Kaleidoscope
      -
    1. The basic language, with its lexer
    2. +
    3. Tutorial Introduction and the Lexer
    4. Implementing a Parser and AST
    5. Implementing Code Generation to LLVM IR
    6. Adding JIT and Optimizer Support
    7. From sabre at nondot.org Mon Nov 5 23:07:31 2007 From: sabre at nondot.org (Chris Lattner) Date: Tue, 06 Nov 2007 05:07:31 -0000 Subject: [llvm-commits] [llvm] r43753 - /llvm/trunk/docs/tutorial/LangImpl3.html Message-ID: <200711060507.lA657V1r009752@zion.cs.uiuc.edu> Author: lattner Date: Mon Nov 5 23:07:30 2007 New Revision: 43753 URL: http://llvm.org/viewvc/llvm-project?rev=43753&view=rev Log: clarify what proto is. Modified: llvm/trunk/docs/tutorial/LangImpl3.html Modified: llvm/trunk/docs/tutorial/LangImpl3.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl3.html?rev=43753&r1=43752&r2=43753&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl3.html (original) +++ llvm/trunk/docs/tutorial/LangImpl3.html Mon Nov 5 23:07:30 2007 @@ -418,9 +418,10 @@
  • Code generation for function definitions starts out simply enough: first we -codegen the prototype and verify that it is ok. We also clear out the +codegen the prototype (Proto) and verify that it is ok. We also clear out the NamedValues map to make sure that there isn't anything in it from the -last function we compiled.

    +last function we compiled. Code generation of the prototype ensures that there +is an LLVM Function object that is ready to go for us.

    
    
    
    
    From resistor at mac.com  Mon Nov  5 23:22:43 2007
    From: resistor at mac.com (Owen Anderson)
    Date: Tue, 06 Nov 2007 05:22:43 -0000
    Subject: [llvm-commits] [llvm] r43754 -
    	/llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp
    Message-ID: <200711060522.lA65Mh3q010715@zion.cs.uiuc.edu>
    
    Author: resistor
    Date: Mon Nov  5 23:22:43 2007
    New Revision: 43754
    
    URL: http://llvm.org/viewvc/llvm-project?rev=43754&view=rev
    Log:
    DomForest is a forest of registers, not instructions.
    
    Modified:
        llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp
    
    Modified: llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp?rev=43754&r1=43753&r2=43754&view=diff
    
    ==============================================================================
    --- llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp (original)
    +++ llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Mon Nov  5 23:22:43 2007
    @@ -59,14 +59,14 @@
         struct DomForestNode {
         private:
           std::vector children;
    -      MachineInstr* instr;
    +      unsigned reg;
           
           void addChild(DomForestNode* DFN) { children.push_back(DFN); }
           
         public:
           typedef std::vector::iterator iterator;
           
    -      DomForestNode(MachineInstr* MI, DomForestNode* parent) : instr(MI) {
    +      DomForestNode(unsigned r, DomForestNode* parent) : reg(r) {
             if (parent)
               parent->addChild(this);
           }
    @@ -76,7 +76,7 @@
               delete *I;
           }
           
    -      inline MachineInstr* getInstr() { return instr; }
    +      inline unsigned getReg() { return reg; }
           
           inline DomForestNode::iterator begin() { return children.begin(); }
           inline DomForestNode::iterator end() { return children.end(); }
    @@ -89,9 +89,9 @@
         
         
         void computeDFS(MachineFunction& MF);
    +    void processPHI(MachineInstr* P);
         
    -    std::vector
    -      computeDomForest(SmallPtrSet& instrs);
    +    std::vector computeDomForest(std::set& instrs);
         
       };
     
    @@ -149,51 +149,60 @@
     class PreorderSorter {
     private:
       DenseMap& preorder;
    +  LiveVariables& LV;
       
     public:
    -  PreorderSorter(DenseMap& p) : preorder(p) { }
    +  PreorderSorter(DenseMap& p,
    +                LiveVariables& L) : preorder(p), LV(L) { }
       
    -  bool operator()(MachineInstr* A, MachineInstr* B) {
    +  bool operator()(unsigned A, unsigned B) {
         if (A == B)
           return false;
         
    -    if (preorder[A->getParent()] < preorder[B->getParent()])
    +    MachineBasicBlock* ABlock = LV.getVarInfo(A).DefInst->getParent();
    +    MachineBasicBlock* BBlock = LV.getVarInfo(A).DefInst->getParent();
    +    
    +    if (preorder[ABlock] < preorder[BBlock])
           return true;
    -    else if (preorder[A->getParent()] > preorder[B->getParent()])
    +    else if (preorder[ABlock] > preorder[BBlock])
           return false;
         
    -    if (A->getOpcode() == TargetInstrInfo::PHI &&
    -        B->getOpcode() == TargetInstrInfo::PHI)
    -      return A < B;
    -    
    -    MachineInstr* begin = A->getParent()->begin();
    -    return std::distance(begin, A) < std::distance(begin, B);
    +    assert(0 && "Error sorting by dominance!");
    +    return false;
       }
     };
     
     std::vector
    -StrongPHIElimination::computeDomForest(SmallPtrSet& instrs) {
    +StrongPHIElimination::computeDomForest(std::set& regs) {
    +  LiveVariables& LV = getAnalysis();
    +  
       DomForestNode* VirtualRoot = new DomForestNode(0, 0);
       maxpreorder.insert(std::make_pair((MachineBasicBlock*)0, ~0UL));
       
    -  std::vector worklist;
    -  worklist.reserve(instrs.size());
    -  for (SmallPtrSet::iterator I = instrs.begin(),
    -       E = instrs.end(); I != E; ++I)
    +  std::vector worklist;
    +  worklist.reserve(regs.size());
    +  for (std::set::iterator I = regs.begin(), E = regs.end();
    +       I != E; ++I)
         worklist.push_back(*I);
    -  PreorderSorter PS(preorder);
    +  
    +  PreorderSorter PS(preorder, LV);
       std::sort(worklist.begin(), worklist.end(), PS);
       
       DomForestNode* CurrentParent = VirtualRoot;
       std::vector stack;
       stack.push_back(VirtualRoot);
       
    -  for (std::vector::iterator I = worklist.begin(),
    -       E = worklist.end(); I != E; ++I) {
    -    while (preorder[(*I)->getParent()] >
    -           maxpreorder[CurrentParent->getInstr()->getParent()]) {
    +  for (std::vector::iterator I = worklist.begin(), E = worklist.end();
    +       I != E; ++I) {
    +    unsigned pre = preorder[LV.getVarInfo(*I).DefInst->getParent()];
    +    MachineBasicBlock* parentBlock =
    +      LV.getVarInfo(CurrentParent->getReg()).DefInst->getParent();
    +    
    +    while (pre > maxpreorder[parentBlock]) {
           stack.pop_back();
           CurrentParent = stack.back();
    +      
    +      parentBlock = LV.getVarInfo(CurrentParent->getReg()).DefInst->getParent();
         }
         
         DomForestNode* child = new DomForestNode(*I, CurrentParent);
    @@ -206,9 +215,22 @@
       return ret;
     }
     
    +void StrongPHIElimination::processPHI(MachineInstr* P) {
    +  
    +}
    +
     bool StrongPHIElimination::runOnMachineFunction(MachineFunction &Fn) {
       computeDFS(Fn);
       
    +  for (MachineFunction::iterator I = Fn.begin(), E = Fn.end(); I != E; ++I) {
    +    for (MachineBasicBlock::iterator BI = I->begin(), BE = I->end(); BI != BE;
    +         ++BI) {
    +      if (BI->getOpcode() == TargetInstrInfo::PHI)
    +        processPHI(BI);
    +      else
    +        break;
    +    }
    +  }
       
       return false;
     }
    
    
    
    
    From resistor at mac.com  Mon Nov  5 23:26:02 2007
    From: resistor at mac.com (Owen Anderson)
    Date: Tue, 06 Nov 2007 05:26:02 -0000
    Subject: [llvm-commits] [llvm] r43755 -
    	/llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp
    Message-ID: <200711060526.lA65Q2DI010898@zion.cs.uiuc.edu>
    
    Author: resistor
    Date: Mon Nov  5 23:26:02 2007
    New Revision: 43755
    
    URL: http://llvm.org/viewvc/llvm-project?rev=43755&view=rev
    Log:
    Add a few comments.
    
    Modified:
        llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp
    
    Modified: llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp?rev=43755&r1=43754&r2=43755&view=diff
    
    ==============================================================================
    --- llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp (original)
    +++ llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Mon Nov  5 23:26:02 2007
    @@ -146,6 +146,8 @@
       }
     }
     
    +/// PreorderSorter - a helper class that is used to sort registers
    +/// according to the preorder number of their defining blocks
     class PreorderSorter {
     private:
       DenseMap& preorder;
    @@ -172,6 +174,8 @@
       }
     };
     
    +/// computeDomForest - compute the subforest of the DomTree corresponding
    +/// to the defining blocks of the registers in question
     std::vector
     StrongPHIElimination::computeDomForest(std::set& regs) {
       LiveVariables& LV = getAnalysis();
    @@ -215,6 +219,7 @@
       return ret;
     }
     
    +/// processPHI - Eliminate the given PHI node
     void StrongPHIElimination::processPHI(MachineInstr* P) {
       
     }
    
    
    
    
    From sabre at nondot.org  Mon Nov  5 23:58:43 2007
    From: sabre at nondot.org (Chris Lattner)
    Date: Tue, 06 Nov 2007 05:58:43 -0000
    Subject: [llvm-commits] [llvm] r43756 - in /llvm/trunk:
     lib/Analysis/BasicAliasAnalysis.cpp
     test/Analysis/BasicAA/2007-11-05-SizeCrash.ll
    Message-ID: <200711060558.lA65whvD012625@zion.cs.uiuc.edu>
    
    Author: lattner
    Date: Mon Nov  5 23:58:42 2007
    New Revision: 43756
    
    URL: http://llvm.org/viewvc/llvm-project?rev=43756&view=rev
    Log:
    Fix PR1774 and BasicAA/2007-11-05-SizeCrash.ll
    
    
    Added:
        llvm/trunk/test/Analysis/BasicAA/2007-11-05-SizeCrash.ll
    Modified:
        llvm/trunk/lib/Analysis/BasicAliasAnalysis.cpp
    
    Modified: llvm/trunk/lib/Analysis/BasicAliasAnalysis.cpp
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/BasicAliasAnalysis.cpp?rev=43756&r1=43755&r2=43756&view=diff
    
    ==============================================================================
    --- llvm/trunk/lib/Analysis/BasicAliasAnalysis.cpp (original)
    +++ llvm/trunk/lib/Analysis/BasicAliasAnalysis.cpp Mon Nov  5 23:58:42 2007
    @@ -753,9 +753,8 @@
               //
               if (const ArrayType *AT = dyn_cast(BasePtr1Ty))
                 GEP1Ops[i] = ConstantInt::get(Type::Int64Ty,AT->getNumElements()-1);
    -          else if (const VectorType *PT = dyn_cast(BasePtr1Ty))
    -            GEP1Ops[i] = ConstantInt::get(Type::Int64Ty,PT->getNumElements()-1);
    -
    +          else if (const VectorType *VT = dyn_cast(BasePtr1Ty))
    +            GEP1Ops[i] = ConstantInt::get(Type::Int64Ty,VT->getNumElements()-1);
             }
           }
     
    @@ -765,8 +764,8 @@
               if (const ArrayType *AT = dyn_cast(BasePtr1Ty)) {
                 if (Op2C->getZExtValue() >= AT->getNumElements())
                   return MayAlias;  // Be conservative with out-of-range accesses
    -          } else if (const VectorType *PT = dyn_cast(BasePtr1Ty)) {
    -            if (Op2C->getZExtValue() >= PT->getNumElements())
    +          } else if (const VectorType *VT = dyn_cast(BasePtr1Ty)) {
    +            if (Op2C->getZExtValue() >= VT->getNumElements())
                   return MayAlias;  // Be conservative with out-of-range accesses
               }
             } else {  // Conservatively assume the minimum value for this index
    @@ -795,8 +794,13 @@
           getTargetData().getIndexedOffset(GEPPointerTy, GEP1Ops, NumGEP1Ops);
         int64_t Offset2 = 
           getTargetData().getIndexedOffset(GEPPointerTy, GEP2Ops, NumGEP2Ops);
    -    assert(Offset1 Offset2)
    +      std::swap(Offset1, Offset2);
    +    
         if ((uint64_t)(Offset2-Offset1) >= SizeMax) {
           //cerr << "Determined that these two GEP's don't alias ["
           //     << SizeMax << " bytes]: \n" << *GEP1 << *GEP2;
    
    Added: llvm/trunk/test/Analysis/BasicAA/2007-11-05-SizeCrash.ll
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/BasicAA/2007-11-05-SizeCrash.ll?rev=43756&view=auto
    
    ==============================================================================
    --- llvm/trunk/test/Analysis/BasicAA/2007-11-05-SizeCrash.ll (added)
    +++ llvm/trunk/test/Analysis/BasicAA/2007-11-05-SizeCrash.ll Mon Nov  5 23:58:42 2007
    @@ -0,0 +1,34 @@
    +; RUN: llvm-as < %s | opt -gvn -disable-output
    +; PR1774
    +
    +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
    +target triple = "x86_64-unknown-linux-gnu"
    +        %struct.device = type { [20 x i8] }
    +        %struct.pci_device_id = type { i32, i32, i32, i32, i32, i32, i64 }
    +        %struct.usb_bus = type { %struct.device* }
    +        %struct.usb_hcd = type { %struct.usb_bus, i64, [0 x i64] }
    + at uhci_pci_ids = external constant [1 x %struct.pci_device_id]           ; <[1 x %struct.pci_device_id]*> [#uses=1]
    +
    + at __mod_pci_device_table = alias [1 x %struct.pci_device_id]* @uhci_pci_ids     
    +        ; <[1 x %struct.pci_device_id]*> [#uses=0]
    +
    +define i32 @uhci_suspend(%struct.usb_hcd* %hcd) {
    +entry:
    +        %tmp17 = getelementptr %struct.usb_hcd* %hcd, i32 0, i32 2, i64 1      
    +        ;  [#uses=1]
    +        %tmp1718 = bitcast i64* %tmp17 to i32*          ;  [#uses=1]
    +        %tmp19 = load i32* %tmp1718, align 4            ;  [#uses=0]
    +        br i1 false, label %cond_true34, label %done_okay
    +
    +cond_true34:            ; preds = %entry
    +        %tmp631 = getelementptr %struct.usb_hcd* %hcd, i32 0, i32 2, i64
    +2305843009213693950            ;  [#uses=1]
    +        %tmp70 = bitcast i64* %tmp631 to %struct.device**               ;
    +
    +        %tmp71 = load %struct.device** %tmp70, align 8          ;
    +
    +        ret i32 undef
    +
    +done_okay:              ; preds = %entry
    +        ret i32 undef
    +}
    
    
    
    
    From sabre at nondot.org  Tue Nov  6 00:32:18 2007
    From: sabre at nondot.org (Chris Lattner)
    Date: Tue, 06 Nov 2007 06:32:18 -0000
    Subject: [llvm-commits] [llvm] r43758 -
    	/llvm/trunk/docs/tutorial/LangImpl1.html
    Message-ID: <200711060632.lA66WJn5014174@zion.cs.uiuc.edu>
    
    Author: lattner
    Date: Tue Nov  6 00:32:18 2007
    New Revision: 43758
    
    URL: http://llvm.org/viewvc/llvm-project?rev=43758&view=rev
    Log:
    edits
    
    Modified:
        llvm/trunk/docs/tutorial/LangImpl1.html
    
    Modified: llvm/trunk/docs/tutorial/LangImpl1.html
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl1.html?rev=43758&r1=43757&r2=43758&view=diff
    
    ==============================================================================
    --- llvm/trunk/docs/tutorial/LangImpl1.html (original)
    +++ llvm/trunk/docs/tutorial/LangImpl1.html Tue Nov  6 00:32:18 2007
    @@ -38,8 +38,8 @@
     

    Welcome to the "Implementing a language with LLVM" tutorial. This tutorial runs through the implementation of a simple language, showing how fun and easy it can be. This tutorial will get you up and started as well as help to -build a framework you can extend to other languages, allowing you to use this -as a way to start playing with other LLVM specific things. +build a framework you can extend to other languages. The code in this tutorial +can also be used as a playground to hack on other LLVM specific things.

    @@ -59,8 +59,8 @@ be hard.

    I've tried to put this tutorial together in a way that makes chapters easy to -skip over if you are already familiar or are uninterested with various pieces. -The structure of the tutorial is: +skip over if you are already familiar with or are uninterested in the various +pieces. The structure of the tutorial is:

      @@ -82,10 +82,10 @@ Support - Because a lot of people are interested in using LLVM as a JIT, we'll dive right into it and show you the 3 lines it takes to add JIT support. LLVM is also useful in many other ways, but this is one simple and "sexy" way -that shows off its power. :) +to shows off its power. :)
    • Chapter #5: Extending the Language: Control Flow - With the language up and running, we show how to extend it with -control flow operations (if/then/else and a for loop). This gives us a chance +control flow operations (if/then/else and a 'for' loop). This gives us a chance to talk about simple SSA construction and control flow.
    • Chapter #6: Extending the Language: User-defined Operators - This is a silly but fun chapter that talks about @@ -94,9 +94,9 @@ significant piece of the "language" as library routines.
    • Chapter #7: Extending the Language: Mutable Variables - This chapter talks about adding user-defined local variables -along with variable assignment operator. The interesting part about this is how -easy and trivial it is to construct SSA form in LLVM (no, LLVM does not -require your front-end to construct SSA form!).
    • +along with an assignment operator. The interesting part about this is how +easy and trivial it is to construct SSA form in LLVM: no, LLVM does not +require your front-end to construct SSA form!
    • Chapter #8: Conclusion and other useful LLVM tidbits - This chapter wraps up the series by talking about potential ways to extend the language, but also includes a bunch of pointers to info about @@ -105,8 +105,8 @@
    -

    By the end of the tutorial, we'll have written about 700 lines of -non-comment, non-blank lines of code. With this small amount of code, we'll +

    By the end of the tutorial, we'll have written a bit less than 700 lines of +non-comment, non-blank, lines of code. With this small amount of code, we'll have built up a very reasonable compiler for a non-trivial language including a hand-written lexer, parser, AST, as well as code generation support with a JIT compiler. While other systems may have interesting "hello world" tutorials, @@ -115,8 +115,9 @@ design.

    A note about this tutorial: we expect you to extend the language and play -with it on your own. Take the code and go crazy hacking away at it. It can be -a lot of fun to play with languages! In any case, lets get into the code!

    +with it on your own. Take the code and go crazy hacking away at it, compilers +don't need to be scary creatures - it can be a lot of fun to play with +languages!

    @@ -127,7 +128,8 @@

    This tutorial will be illustrated with a toy language that we'll call -"Kaleidoscope". +"Kaleidoscope" (derived +from "meaning beautiful, form, and view"). Kaleidoscope is a procedural language that allows you to define functions, use conditionals, math, etc. Over the course of the tutorial, we'll extend Kaleidoscope to support the if/then/else construct, a for loop, user defined @@ -169,9 +171,11 @@

    -

    A more interesting example is included in Chapter 6 where we show the code -used to implement a Mandelbrot Set viewer -in Kaleidoscope.

    +

    A more interesting example is included in Chapter 6 where we write a little +Kaleidoscope application that displays +a Mandelbrot Set at various levels of magnification.

    + +

    Lets dive into the implementation of this language!

    @@ -210,7 +214,7 @@

    Each token returned by our lexer will either be one of the Token enum values -or it will be an 'unknown' character like '+', which is returned as its ascii +or it will be an 'unknown' character like '+', which is returned as its ASCII value. If the current token is an identifier, the IdentifierStr global variable holds the name of the identifier. If the current token is a numeric literal (like 1.0), NumVal holds its value. Note that we use @@ -298,9 +302,9 @@

    We handle comments by skipping to the end of the line and then return the -next comment. Finally, if the input doesn't match one of the above cases, it is -either an operator character like '+' or the end of the file. These are handled with -this code:

    +next token. Finally, if the input doesn't match one of the above cases, it is +either an operator character like '+' or the end of the file. These are handled +with this code:

    
    
    
    
    From isanbard at gmail.com  Tue Nov  6 00:41:58 2007
    From: isanbard at gmail.com (Bill Wendling)
    Date: Tue, 06 Nov 2007 06:41:58 -0000
    Subject: [llvm-commits] [llvm-gcc-4.2] r43759 - /llvm-gcc-4.2/trunk/build_gcc
    Message-ID: <200711060641.lA66fw9v014502@zion.cs.uiuc.edu>
    
    Author: void
    Date: Tue Nov  6 00:41:57 2007
    New Revision: 43759
    
    URL: http://llvm.org/viewvc/llvm-project?rev=43759&view=rev
    Log:
    A long time ago, and yet somehow in the future...
    
                                Chapter IV
    
    It was a dark time in the Subversion tree. The Federation, headed by
    the dark Sith Lord Vader, managed to break into the Subversion tree of
    the small band of rebels and submit a patch to build_gcc under the
    pseudonym "void".
    
    All was not lost! Jedi Devang noticed this breach and informed our
    hero that this was in error! And that the LLVM core was to be compiled
    separately from the LLVM-GCC front-ends.
    
    The patch will hence be reverted...plus a couple of new things to help
    it along...
    
    [Cue star field and space ship]
    
    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=43759&r1=43758&r2=43759&view=diff
    
    ==============================================================================
    --- llvm-gcc-4.2/trunk/build_gcc (original)
    +++ llvm-gcc-4.2/trunk/build_gcc Tue Nov  6 00:41:57 2007
    @@ -22,22 +22,10 @@
     # installed.
     TARGETS=`echo $2 | $TRANSLATE_ARCH`
     
    -# LLVM LOCAL begin
    -# LLVM does not require host name translation. 
    -LLVM_HOSTS=$1
    -# LLVM target list is comma separated list. 
    -#FIXME : Hard code targets. See LLVMTARGETOBJ comment in gcc/Makefile.in
    -LLVM_TARGETS="x86,powerpc"
    -# LLVm LOCAL end
    -
     # The GNU makefile target ('bootstrap' by default).
     BOOTSTRAP=${BOOTSTRAP-bootstrap}
    -if [ "x$LLVM_DEBUG" == "x" ]; then
    -    if [ "$BOOTSTRAP" != bootstrap ]; then
    -	bootstrap=--disable-bootstrap
    -    fi
    -else
    -    BOOTSTRAP=
    +if [ "$BOOTSTRAP" != bootstrap ]; then
    +    bootstrap=--disable-bootstrap
     fi
     
     # The B&I build srcript (~rc/bin/buildit) accepts an '-othercflags'
    @@ -45,13 +33,7 @@
     # $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
    +CFLAGS="-g -O2 ${RC_NONARCH_CFLAGS/-pipe/}"
     
     # This isn't a parameter; it is the architecture of the current machine.
     BUILD=`arch | $TRANSLATE_ARCH`
    @@ -86,20 +68,10 @@
     # The nineth parameter is the subversion number of the submission, e.g. 03.
     LLVM_GCC_SUBMIT_SUBVERSION="$9"
     
    -# The tenth parameter is a yes/no that indicates whether assertions should be
    -# enabled in the LLVM libs/tools.
    -LLVM_ASSERTIONS="${10}"
    -
     # LLVM_INSTALL_PREFIX - This is the prefix where LLVM tools/headers/libraries
     # and the llvm-gcc/llvm-g++ symlinks get installed.
     LLVM_INSTALL_PREFIX=/usr/local
     
    -# LLVM_ARCHS - This tells us which architectures we'd like the libraries to be
    -# build for. The default is 4-way.
    -if [ "x$LLVM_ARCHS" == "x" ]; then
    -    LLVM_ARCHS="ppc i386 ppc64 x86_64"
    -fi
    -# APPLE LOCAL end LLVM
     
     # The current working directory is where the build will happen.
     # It may already contain a partial result of an interrupted build,
    @@ -125,12 +97,6 @@
     fi
     # LLVM LOCAL end
     
    -# APPLE LOCAL begin ARM ARM_CONFIGFLAGS
    -# For ARM, grab all system files from an SDK.
    -ARM_SYSROOT="/Developer/SDKs/Extra"
    -ARM_CONFIGFLAGS="--with-sysroot=\"$ARM_SYSROOT\""
    -# APPLE LOCAL end ARM ARM_CONFIGFLAGS
    -
     # This is the libstdc++ version to use.
     LIBSTDCXX_VERSION=4.0.0
     
    @@ -157,17 +123,10 @@
     rm -f /usr/lib/gcc/*/4.0.0/specs
     
     # These are the configure and build flags that are used.
    -# APPLE LOCAL begin LLVM  Support for non /usr $DEST_ROOT, use libstdc++
    -
    -if [ "x$LLVM_DEBUG" == "x" ]; then
    -    CHECKING_FLAGS="--disable-checking --enable-werror"
    -else
    -    CHECKING_FLAGS="--enable-checking"
    -fi
    -
    -CONFIGFLAGS="$CHECKING_FLAGS \
    +CONFIGFLAGS="--disable-checking -enable-werror \
    +  --disable-multilib \
       --prefix=$DEST_ROOT \
    -  --mandir=$LLVM_INSTALL_PREFIX/share/man \
    +  --mandir=\${prefix}/share/man \
       --enable-languages=c,objc,c++,obj-c++ \
       --program-transform-name=/^[cg][^.-]*$/s/$/-$MAJ_VERS/ \
       --with-gxx-include-dir=\${prefix}/include/c++/$LIBSTDCXX_VERSION \
    @@ -176,38 +135,8 @@
     
     # LLVM LOCAL begin
     if [ "$ENABLE_LLVM" == true ]; then
    -    CONFIGFLAGS="$CONFIGFLAGS --enable-llvm=$DIR/obj-llvm"
    -
    -    # Build the LLVM tree universal.
    -    LLVMCONFIGFLAGS="--prefix=$DEST_DIR$LLVM_INSTALL_PREFIX \
    -                     --enable-targets=$LLVM_TARGETS \
    -                     --enable-assertions=$LLVM_ASSERTIONS"
    -    mkdir -p $DIR/obj-llvm || exit 1
    -    cd $DIR/obj-llvm || exit 1
    -    if [ \! -f Makefile.config ]; then
    -	$SRC_DIR/llvm/configure $LLVMCONFIGFLAGS || exit 1
    -    fi
    -
    -    if [ "x$LLVM_SUBMIT_SUBVERSION" = "x00" -o "x$LLVM_SUBMIT_SUBVERSION" = "x0" ]; then
    -	LLVM_VERSION="$LLVM_SUBMIT_VERSION"
    -    else
    -	LLVM_VERSION="$LLVM_SUBMIT_VERSION-$LLVM_SUBMIT_SUBVERSION"
    -    fi
    -
    -    # Note: Don't pass -jN here.  Building universal already has
    -    # parallelism and we don't want to make the builders hit swap by
    -    # firing off too many gcc's at the same time.
    -    ## FIXME: Remove -O2 when rdar://4560645 is fixed.
    -    make $OPTIMIZE_OPTS UNIVERSAL=1 UNIVERSAL_ARCH="$LLVM_ARCHS" \
    -         OPTIMIZE_OPTION='-O2' \
    -	 CXXFLAGS="-DLLVM_VERSION_INFO='\" Apple Build #$LLVM_VERSION\"'"
    -
    -    if ! test $? == 0 ; then
    -	echo "error: LLVM 'make' failed!"
    -	exit 1
    -    fi 
    +  CONFIGFLAGS="$CONFIGFLAGS --enable-llvm=/usr/local"
     fi
    -# LLVM LOCAL end
     
     # Figure out how many make processes to run.
     SYSCTL=`sysctl -n hw.activecpu`
    @@ -232,10 +161,6 @@
       # Build llvm-gcc in 'dylib mode'.
       MAKEFLAGS="$MAKEFLAGS BUILD_LLVM_INTO_A_DYLIB=1"
       MAKEFLAGS="$MAKEFLAGS LLVM_VERSION_INFO=$LLVM_GCC_SUBMIT_VERSION"
    -
    -  if [ "$LLVM_ASSERTIONS" == no ]; then
    -    MAKEFLAGS="$MAKEFLAGS DISABLE_LLVMASSERTIONS=1"
    -  fi
     fi
     # LLVM LOCAL end
     
    @@ -248,10 +173,8 @@
        --host=$BUILD-apple-darwin$DARWIN_VERS --target=$BUILD-apple-darwin$DARWIN_VERS || exit 1
     fi
     # Unset RC_DEBUG_OPTIONS because it causes the bootstrap to fail.
    -# Also keep unset for cross compilers so that the cross built libraries are
    -# comparable to the native built libraries.
    -unset RC_DEBUG_OPTIONS
    -make $MAKEFLAGS CFLAGS="$CFLAGS" CXXFLAGS="$CFLAGS" || exit 1
    +RC_DEBUG_OPTIONS= \
    +  make $MAKEFLAGS CFLAGS="$CFLAGS" CXXFLAGS="$CFLAGS" || exit 1
     make $MAKEFLAGS html CFLAGS="$CFLAGS" CXXFLAGS="$CFLAGS" || exit 1
     make $MAKEFLAGS DESTDIR=$DIR/dst-$BUILD-$BUILD install-gcc install-target \
       CFLAGS="$CFLAGS" CXXFLAGS="$CFLAGS" || exit 1
    @@ -295,12 +218,7 @@
       mkdir -p $DIR/obj-$BUILD-$t $DIR/dst-$BUILD-$t || exit 1
        cd $DIR/obj-$BUILD-$t || exit 1
        if [ \! -f Makefile ]; then
    -     if [ "x$LLVM_DEBUG" == "x" ]; then
    -       WERROR_FLAGS="--enable-werror-always"
    -     else
    -       WERROR_FLAGS=""
    -     fi
    -     $SRC_DIR/configure $CONFIGFLAGS $WERROR_FLAGS \
    +    $SRC_DIR/configure $CONFIGFLAGS --enable-werror-always \
           --program-prefix=$t-apple-darwin$DARWIN_VERS- \
           --host=$BUILD-apple-darwin$DARWIN_VERS --target=$t-apple-darwin$DARWIN_VERS || exit 1
        fi
    @@ -365,16 +283,15 @@
     
     # LLVM LOCAL Don't install HTML docs.
     if [ "$ENABLE_LLVM" == false ]; then
    -  # HTML documentation
    -  HTMLDIR="/Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.DeveloperTools.docset/Contents/Resources/Documents/documentation/DeveloperTools"
    -  mkdir -p ".$HTMLDIR" || exit 1
    -  cp -Rp $DIR/obj-$BUILD-$BUILD/gcc/HTML/* ".$HTMLDIR/" || exit 1
    +# HTML documentation
    +HTMLDIR="/Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.DeveloperTools.docset/Contents/Resources/Documents/documentation/DeveloperTools"
    +mkdir -p ".$HTMLDIR" || exit 1
    +cp -Rp $DIR/obj-$BUILD-$BUILD/gcc/HTML/* ".$HTMLDIR/" || exit 1
     fi
     
     # Manual pages
    -mkdir -p .$LLVM_INSTALL_PREFIX/share || exit 1
    -# LLVM LOCAL build_gcc bug with non-/usr $DEST_ROOT
    -cp -Rp $DIR/dst-$BUILD-$BUILD$LLVM_INSTALL_PREFIX/share/man .$LLVM_INSTALL_PREFIX/share/ \
    +mkdir -p .$DEST_ROOT/share || exit 1
    +cp -Rp $DIR/dst-$BUILD-$BUILD$DEST_ROOT/share/man .$DEST_ROOT/share/ \
       || exit 1
     # exclude fsf-funding.7 gfdl.7 gpl.7 as they are currently built in
     # the gcc project
    @@ -432,6 +349,9 @@
     
     # And copy libgomp stuff by hand...
     for t in $TARGETS ; do
    +    if [ ! -d .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ ]; then
    +	mkdir -p .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ || exit 1
    +    fi
         for h in $HOSTS ; do
     	if [ $h = $t ] ; then
     	    cp -p $DIR/dst-$h-$t$DEST_ROOT/lib/libgomp.a \
    @@ -439,11 +359,17 @@
     	    cp -p $DIR/dst-$h-$t$DEST_ROOT/lib/libgomp.spec \
     		.$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ || exit 1
     	    if [ $h = 'powerpc' ] ; then
    +		if [ ! -d .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ppc64/ ]; then
    +		    mkdir -p .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ppc64/ || exit 1
    +		fi
     		cp -p $DIR/dst-$h-$t$DEST_ROOT/lib/ppc64/libgomp.a \
     		    .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ppc64/ || exit 1
     		cp -p $DIR/dst-$h-$t$DEST_ROOT/lib/ppc64/libgomp.spec \
     		    .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ppc64/ || exit 1
     	    elif [ $h = 'i686' ] ; then
    +		if [ ! -d .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/x86_64/ ]; then
    +		    mkdir -p .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/x86_64/ || exit 1
    +		fi
     		cp -p $DIR/dst-$h-$t$DEST_ROOT/lib/x86_64/libgomp.a \
     		    .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/x86_64/ || exit 1
     		cp -p $DIR/dst-$h-$t$DEST_ROOT/lib/x86_64/libgomp.spec \
    @@ -485,7 +411,7 @@
     done
     
     # Add extra man page symlinks for 'c++' and for arch-specific names.
    -MDIR=$DEST_DIR$LLVM_INSTALL_PREFIX/share/man/man1
    +MDIR=$DEST_DIR$DEST_ROOT/share/man/man1
     ln -f $MDIR/g++-$MAJ_VERS.1 $MDIR/c++-$MAJ_VERS.1 || exit 1
     for t in $TARGETS ; do
       ln -f $MDIR/gcc-$MAJ_VERS.1 $MDIR/$t-apple-darwin$DARWIN_VERS-gcc-$VERS.1 \
    @@ -557,77 +483,6 @@
       | xargs strip || exit 1
     find $DEST_DIR -name \*.a -print | xargs strip -SX || exit 1
     find $DEST_DIR -name \*.a -print | xargs ranlib || exit 1
    -
    -# LLVM LOCAL begin
    -# Install LLVM libraries/headers/tools.
    -if [ "$ENABLE_LLVM" == true ]; then
    -  cd $DIR/obj-llvm || exit 1
    -
    -  ## Install the tree into the destination directory.
    -  make $MAKEFLAGS $OPTIMIZE_OPTS UNIVERSAL=1 OPTIMIZE_OPTION='-O2' install
    -
    -  if ! test $? == 0 ; then
    -      echo "error: LLVM 'make install' failed!"
    -      exit 1
    -  fi 
    -
    -  ## Install Version.h
    -  if [ "x$LLVM_SUBMIT_SUBVERSION" = "x00" -o "x$LLVM_SUBMIT_SUBVERSION" = "x0" ]; then
    -      RC_ProjectSourceSubversion=0
    -  else
    -      case "$LLVM_SUBMIT_SUBVERSION" in
    -          01) RC_ProjectSourceSubversion=1 ;;
    -          02) RC_ProjectSourceSubversion=2 ;;
    -          03) RC_ProjectSourceSubversion=3 ;;
    -          04) RC_ProjectSourceSubversion=4 ;;
    -          05) RC_ProjectSourceSubversion=5 ;;
    -          06) RC_ProjectSourceSubversion=6 ;;
    -          07) RC_ProjectSourceSubversion=7 ;;
    -          08) RC_ProjectSourceSubversion=8 ;;
    -          09) RC_ProjectSourceSubversion=9 ;;
    -          *)  RC_ProjectSourceSubversion=$LLVM_SUBMIT_SUBVERSION ;;
    -      esac
    -  fi
    -
    -  echo "#define LLVM_VERSION ${RC_ProjectSourceVersion}" > $DEST_DIR$LLVM_INSTALL_PREFIX/include/llvm/Version.h
    -  echo "#define LLVM_MINOR_VERSION ${RC_ProjectSourceSubversion}" >> $DEST_DIR$LLVM_INSTALL_PREFIX/include/llvm/Version.h
    -
    -  ## Strip local symbols from llvm libraries.
    -  strip -S $DEST_DIR$LLVM_INSTALL_PREFIX/lib/*.[oa]
    -  strip -Sx $DEST_DIR$LLVM_INSTALL_PREFIX/lib/*.so
    -
    -  # Remove .dir files 
    -  cd $DEST_DIR$LLVM_INSTALL_PREFIX/
    -  rm bin/.dir etc/llvm/.dir lib/.dir
    -
    -  # Remove PPC64 fat slices.
    -  cd $DEST_DIR$LLVM_INSTALL_PREFIX/bin
    -  if [ $MACOSX_DEPLOYMENT_TARGET = "10.4" ]; then
    -    find . -perm 755 -type f -exec lipo -extract ppc -extract i386 {} -output {} \;
    -  else
    -    find . -perm 755 -type f -exec lipo -extract ppc7400 -extract i386 {} -output {} \;
    -  fi
    -  cd $DEST_DIR$LLVM_INSTALL_PREFIX
    -  lipo -extract ppc -extract i386 lib/LLVMlto.0.0.0.so -output lib/LLVMlto.0.0.0.so
    -
    -  # Set up the llvm-gcc/llvm-g++ symlinks.
    -  cd $DEST_DIR$LLVM_INSTALL_PREFIX/bin
    -  ln -s -f ../../../$DEST_ROOT/bin/gcc-$MAJ_VERS llvm-gcc || exit 1
    -  ln -s -f ../../../$DEST_ROOT/bin/g++-$MAJ_VERS llvm-g++ || exit 1
    -
    -  # Copy one of the libllvmgcc.dylib's up to libexec/gcc.
    -  cp $DEST_DIR/$DEST_ROOT/libexec/gcc/$BUILD-apple-darwin$DARWIN_VERS/$VERS/libllvmgcc.dylib \
    -     $DEST_DIR/$DEST_ROOT/libexec/gcc/
    -
    -  # Replace the installed ones with symlinks to the common one.
    -  for t in $TARGETS ; do
    -    cd $DEST_DIR/$DEST_ROOT/libexec/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/
    -    rm libllvmgcc.dylib
    -    ln -s ../../libllvmgcc.dylib
    -  done
    -fi
    -# LLVM LOCAL end
    -
     find $DEST_DIR -name \*.dSYM -print | xargs rm -r || exit 1
     chgrp -h -R wheel $DEST_DIR
     chgrp -R wheel $DEST_DIR
    
    
    
    
    From sabre at nondot.org  Tue Nov  6 01:16:22 2007
    From: sabre at nondot.org (Chris Lattner)
    Date: Tue, 06 Nov 2007 07:16:22 -0000
    Subject: [llvm-commits] [llvm] r43760 -
    	/llvm/trunk/docs/tutorial/LangImpl2.html
    Message-ID: <200711060716.lA67GNGE016103@zion.cs.uiuc.edu>
    
    Author: lattner
    Date: Tue Nov  6 01:16:22 2007
    New Revision: 43760
    
    URL: http://llvm.org/viewvc/llvm-project?rev=43760&view=rev
    Log:
    chapter 2 edits
    
    Modified:
        llvm/trunk/docs/tutorial/LangImpl2.html
    
    Modified: llvm/trunk/docs/tutorial/LangImpl2.html
    URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl2.html?rev=43760&r1=43759&r2=43760&view=diff
    
    ==============================================================================
    --- llvm/trunk/docs/tutorial/LangImpl2.html (original)
    +++ llvm/trunk/docs/tutorial/LangImpl2.html Tue Nov  6 01:16:22 2007
    @@ -45,7 +45,7 @@
     with LLVM" tutorial.  This chapter shows you how to use the Lexer built in Chapter 1 to build a full parser for
    -our Kaleidoscope language and build an Abstract Syntax 
     Tree (AST).

    @@ -53,7 +53,7 @@ href="http://en.wikipedia.org/wiki/Recursive_descent_parser">Recursive Descent Parsing and Operator-Precedence -Parsing to parse the Kaleidoscope language (the later for binary expression +Parsing to parse the Kaleidoscope language (the latter for binary expression and the former for everything else). Before we get to parsing though, lets talk about the output of the parser: the Abstract Syntax Tree.

    @@ -144,7 +144,8 @@
     /// PrototypeAST - This class represents the "prototype" for a function,
    -/// which captures its argument names as well as if it is an operator.
    +/// which captures its name, and its argument names (thus implicitly the number
    +/// of arguments the function takes).
     class PrototypeAST {
       std::string Name;
       std::vector<std::string> Args;
    @@ -165,9 +166,9 @@
     

    In Kaleidoscope, functions are typed with just a count of their arguments. -Since all values are double precision floating point, this fact doesn't need to -be captured anywhere. In a more aggressive and realistic language, the -"ExprAST" class would probably have a type field.

    +Since all values are double precision floating point, the type of each argument +doesn't need to be stored anywhere. In a more aggressive and realistic +language, the "ExprAST" class would probably have a type field.

    With this scaffolding, we can now talk about parsing expressions and function bodies in Kaleidoscope.

    @@ -213,10 +214,6 @@ our parser will assume that CurTok is the current token that needs to be parsed.

    -

    Again, we define these with global variables; it would be better design to -wrap the entire parser in a class and use instance variables for these. -

    -
     
    @@ -293,7 +290,7 @@
     

    This function illustrates a number of interesting things about the parser: 1) it shows how we use the Error routines. When called, this function expects that the current token is a '(' token, but after parsing the subexpression, it -is possible that there is not a ')' waiting. For example, if the user types in +is possible that there is no ')' waiting. For example, if the user types in "(4 x" instead of "(4)", the parser should emit an error. Because errors can occur, the parser needs a way to indicate that they happened: in our parser, we return null on an error.

    @@ -357,10 +354,11 @@

    Now that we have all of our simple expression parsing logic in place, we can -define a helper function to wrap them up in a class. We call this class of -expressions "primary" expressions, for reasons that will become more clear -later. In order to parse a primary expression, we need to determine what sort -of expression it is:

    +define a helper function to wrap it together into one entry-point. We call this +class of expressions "primary" expressions, for reasons that will become more +clear later in the tutorial. In order to +parse an arbitrary primary expression, we need to determine what sort of +specific expression it is:

    @@ -438,12 +436,13 @@
     

    For the basic form of Kaleidoscope, we will only support 4 binary operators -(this can obviously be extended by you, the reader). The +(this can obviously be extended by you, our brave and intrepid reader). The GetTokPrecedence function returns the precedence for the current token, or -1 if the token is not a binary operator. Having a map makes it easy to add new operators and makes it clear that the algorithm doesn't depend on the specific operators involved, but it would be easy enough to eliminate the map -and do the comparisons in the GetTokPrecedence function.

    +and do the comparisons in the GetTokPrecedence function (or just use +a fixed-size array).

    With the helper above defined, we can now start parsing binary expressions. The basic idea of operator precedence parsing is to break down an expression @@ -578,8 +577,8 @@ // the pending operator take RHS as its LHS. int NextPrec = GetTokPrecedence(); if (TokPrec < NextPrec) { - RHS = ParseBinOpRHS(TokPrec+1, RHS); - if (RHS == 0) return 0; + RHS = ParseBinOpRHS(TokPrec+1, RHS); + if (RHS == 0) return 0; } // Merge LHS/RHS. LHS = new BinaryExprAST(BinOp, LHS, RHS); @@ -600,6 +599,8 @@

    Finally, on the next iteration of the while loop, the "+g" piece is parsed. and added to the AST. With this little bit of code (14 non-trivial lines), we correctly handle fully general binary expression parsing in a very elegant way. +This was a whirlwind tour of this code, and it is somewhat subtle. I recommend +running through it with a few tough examples to see how it works.

    This wraps up handling of expressions. At this point, we can point the @@ -616,7 +617,7 @@

    -The first basic thing missing is that of function prototypes. In Kaleidoscope, +The next thing missing is handling of function prototypes. In Kaleidoscope, these are used both for 'extern' function declarations as well as function body definitions. The code to do this is straight-forward and not very interesting (once you've survived expressions): @@ -636,6 +637,7 @@ if (CurTok != '(') return ErrorP("Expected '(' in prototype"); + // Read the list of argument names. std::vector<std::string> ArgNames; while (getNextToken() == tok_identifier) ArgNames.push_back(IdentifierStr); @@ -750,25 +752,26 @@

    -

    With just under 400 lines of commented code, we fully defined our minimal -language, including a lexer, parser and AST builder. With this done, the -executable will validate code and tell us if it is gramatically invalid. For +

    With just under 400 lines of commented code (240 lines of non-comment, +non-blank code), we fully defined our minimal language, including a lexer, +parser and AST builder. With this done, the executable will validate +Kaleidoscope code and tell us if it is gramatically invalid. For example, here is a sample interaction:

    -$ ./a.out 
    -ready> def foo(x y) x+foo(y, 4.0);
    -ready> Parsed a function definition.
    -ready> def foo(x y) x+y y;
    -ready> Parsed a function definition.
    -ready> Parsed a top-level expr
    -ready> def foo(x y) x+y );
    -ready> Parsed a function definition.
    -ready> Error: unknown token when expecting an expression
    -ready> extern sin(a);
    +$ ./a.out
    +ready> def foo(x y) x+foo(y, 4.0);
    +Parsed a function definition.
    +ready> def foo(x y) x+y y;
    +Parsed a function definition.
    +Parsed a top-level expr
    +ready> def foo(x y) x+y );
    +Parsed a function definition.
    +Error: unknown token when expecting an expression
    +ready> extern sin(a);
     ready> Parsed an extern
    -ready> ^D
    +ready> ^D
     $ 
     
    @@ -794,7 +797,7 @@
        # Compile
    -   g++ -g toy.cpp 
    +   g++ -g -O3 toy.cpp 
        # Run
        ./a.out 
     
    @@ -919,7 +922,8 @@ }; /// PrototypeAST - This class represents the "prototype" for a function, -/// which captures its argument names as well as if it is an operator. +/// which captures its name, and its argument names (thus implicitly the number +/// of arguments the function takes). class PrototypeAST { std::string Name; std::vector< Args; From sabre at nondot.org Tue Nov 6 01:26:32 2007 From: sabre at nondot.org (Chris Lattner) Date: Tue, 06 Nov 2007 07:26:32 -0000 Subject: [llvm-commits] [llvm] r43761 - /llvm/trunk/docs/tutorial/LangImpl3.html Message-ID: <200711060726.lA67QWsS016898@zion.cs.uiuc.edu> Author: lattner Date: Tue Nov 6 01:26:32 2007 New Revision: 43761 URL: http://llvm.org/viewvc/llvm-project?rev=43761&view=rev Log: edits for chapter 3 Modified: llvm/trunk/docs/tutorial/LangImpl3.html Modified: llvm/trunk/docs/tutorial/LangImpl3.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl3.html?rev=43761&r1=43760&r2=43761&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl3.html (original) +++ llvm/trunk/docs/tutorial/LangImpl3.html Tue Nov 6 01:26:32 2007 @@ -18,7 +18,7 @@
  • Chapter 3
    1. Chapter 3 Introduction
    2. -
    3. Code Generation setup
    4. +
    5. Code Generation Setup
    6. Expression Code Generation
    7. Function Code Generation
    8. Driver Changes and Closing Thoughts
    9. @@ -44,13 +44,13 @@ href="LangImpl2.html">Abstract Syntax Tree built in Chapter 2 into LLVM IR. This will teach you a little bit about how LLVM does things, as well as demonstrate how easy it is to use. It's much more work to build a lexer and -parser than it is to generate LLVM IR code. +parser than it is to generate LLVM IR code. :)

  • - +
    @@ -119,11 +119,12 @@

    The Builder object is a helper object that makes it easy to generate LLVM instructions. Instances of the LLVMBuilder -class keeps track of the current place to +class keep track of the current place to insert instructions and has methods to create new instructions.

    The NamedValues map keeps track of which values are defined in the -current scope and what their LLVM representation is. In this form of +current scope and what their LLVM representation is (in other words, it is a +symbol table for the code). In this form of Kaleidoscope, the only things that can be referenced are function parameters. As such, function parameters will be in this map when generating code for their function body.

    @@ -161,7 +162,7 @@ constants of Arbitrary Precision). This code basically just creates and returns a ConstantFP. Note that in the LLVM IR that constants are all uniqued together and shared. For this reason, the API -uses "the foo::get(..)" idiom instead of "new foo(..)" or "foo::create(..).

    +uses "the foo::get(..)" idiom instead of "new foo(..)" or "foo::create(..)".

    @@ -173,12 +174,15 @@
     
    -

    References to variables is also quite simple here. In the simple version +

    References to variables are also quite simple here. In the simple version of Kaleidoscope, we assume that the variable has already been emited somewhere and its value is available. In practice, the only values that can be in the NamedValues map are function arguments. This code simply checks to see that the specified name is in the map (if not, an -unknown variable is being referenced) and returns the value for it.

    +unknown variable is being referenced) and returns the value for it. In future +chapters, we'll add support for loop induction +variables in the symbol table, and for local variables.

    @@ -209,7 +213,7 @@
     
     

    In this example, the LLVM builder class is starting to show its value. Because it knows where to insert the newly created instruction, you just have to -specificy what instruction to create (e.g. with CreateAdd), which +specify what instruction to create (e.g. with CreateAdd), which operands to use (L and R here) and optionally provide a name for the generated instruction. One nice thing about LLVM is that the name is just a hint: if there are multiple additions in a single function, the first @@ -217,12 +221,12 @@ giving it a name like "addtmp42". Local value names for instructions are purely optional, but it makes it much easier to read the IR dumps.

    -

    LLVM instructions are constrained to -have very strict type properties: for example, the Left and Right operators of +

    LLVM instructions are constrained with +strict rules: for example, the Left and Right operators of an add instruction have to have the same -type, and that the result of the add matches the operands. Because all values -in Kaleidoscope are doubles, this makes for very simple code for add, sub and -mul.

    +type, and that the result type of the add must match the operand types. Because +all values in Kaleidoscope are doubles, this makes for very simple code for add, +sub and mul.

    On the other hand, LLVM specifies that the fcmp instruction always returns an 'i1' value From evan.cheng at apple.com Tue Nov 6 02:44:59 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 06 Nov 2007 08:44:59 -0000 Subject: [llvm-commits] [llvm] r43762 - in /llvm/trunk: lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp test/CodeGen/X86/2007-11-06-InstrSched.ll Message-ID: <200711060844.lA68ixlQ027646@zion.cs.uiuc.edu> Author: evancheng Date: Tue Nov 6 02:44:59 2007 New Revision: 43762 URL: http://llvm.org/viewvc/llvm-project?rev=43762&view=rev Log: Add pseudo dependency to force two-address instruction to be scheduled after other uses. There was a overly restricted check that prevented some obvious cases. Added: llvm/trunk/test/CodeGen/X86/2007-11-06-InstrSched.ll Modified: llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp?rev=43762&r1=43761&r2=43762&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp Tue Nov 6 02:44:59 2007 @@ -1308,8 +1308,11 @@ // plus it may increase register pressures. if (SuccSU == SU || SuccSU->hasPhysRegDefs) continue; - // Be conservative. Ignore if nodes aren't at the same depth. - if (SuccSU->Depth != SU->Depth) + // Be conservative. Ignore if nodes aren't at roughly the same + // depth and height. + if (SuccSU->Height < SU->Height && (SU->Height - SuccSU->Height) > 1) + continue; + if (SuccSU->Depth > SU->Depth && (SuccSU->Depth - SU->Depth) > 1) continue; if (!SuccSU->Node || !SuccSU->Node->isTargetOpcode()) continue; Added: llvm/trunk/test/CodeGen/X86/2007-11-06-InstrSched.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2007-11-06-InstrSched.ll?rev=43762&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/X86/2007-11-06-InstrSched.ll (added) +++ llvm/trunk/test/CodeGen/X86/2007-11-06-InstrSched.ll Tue Nov 6 02:44:59 2007 @@ -0,0 +1,25 @@ +; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 | not grep lea + +define float @foo(i32* %x, float* %y, i32 %c) { +entry: + %tmp2132 = icmp eq i32 %c, 0 ; [#uses=1] + br i1 %tmp2132, label %bb23, label %bb18 + +bb18: ; preds = %bb18, %entry + %i.0.reg2mem.0 = phi i32 [ 0, %entry ], [ %tmp17, %bb18 ] ; [#uses=3] + %res.0.reg2mem.0 = phi float [ 0.000000e+00, %entry ], [ %tmp14, %bb18 ] ; [#uses=1] + %tmp3 = getelementptr i32* %x, i32 %i.0.reg2mem.0 ; [#uses=1] + %tmp4 = load i32* %tmp3, align 4 ; [#uses=1] + %tmp45 = sitofp i32 %tmp4 to float ; [#uses=1] + %tmp8 = getelementptr float* %y, i32 %i.0.reg2mem.0 ; [#uses=1] + %tmp9 = load float* %tmp8, align 4 ; [#uses=1] + %tmp11 = mul float %tmp9, %tmp45 ; [#uses=1] + %tmp14 = add float %tmp11, %res.0.reg2mem.0 ; [#uses=2] + %tmp17 = add i32 %i.0.reg2mem.0, 1 ; [#uses=2] + %tmp21 = icmp ult i32 %tmp17, %c ; [#uses=1] + br i1 %tmp21, label %bb18, label %bb23 + +bb23: ; preds = %bb18, %entry + %res.0.reg2mem.1 = phi float [ 0.000000e+00, %entry ], [ %tmp14, %bb18 ] ; [#uses=1] + ret float %res.0.reg2mem.1 +} From evan.cheng at apple.com Tue Nov 6 02:50:44 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 06 Nov 2007 08:50:44 -0000 Subject: [llvm-commits] [llvm] r43763 - /llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp Message-ID: <200711060850.lA68oiIs027922@zion.cs.uiuc.edu> Author: evancheng Date: Tue Nov 6 02:50:44 2007 New Revision: 43763 URL: http://llvm.org/viewvc/llvm-project?rev=43763&view=rev Log: Fix a bug where a def use operand isn't being detected as a sub-register use. Modified: llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp Modified: llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp?rev=43763&r1=43762&r2=43763&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp (original) +++ llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp Tue Nov 6 02:50:44 2007 @@ -19,7 +19,6 @@ #include "llvm/CodeGen/LiveIntervalAnalysis.h" #include "VirtRegMap.h" #include "llvm/Value.h" -#include "llvm/Analysis/LoopInfo.h" #include "llvm/CodeGen/LiveVariables.h" #include "llvm/CodeGen/MachineFrameInfo.h" #include "llvm/CodeGen/MachineInstr.h" @@ -57,7 +56,6 @@ AU.addPreservedID(PHIEliminationID); AU.addRequiredID(PHIEliminationID); AU.addRequiredID(TwoAddressInstructionPassID); - AU.addRequired(); MachineFunctionPass::getAnalysisUsage(AU); } @@ -378,8 +376,13 @@ bool HasUse = mop.isUse(); bool HasDef = mop.isDef(); for (unsigned j = i+1, e = MI->getNumOperands(); j != e; ++j) { - if (MI->getOperand(j).isRegister() && - MI->getOperand(j).getReg() == li.reg) { + if (!MI->getOperand(j).isRegister()) + continue; + unsigned RegJ = MI->getOperand(j).getReg(); + if (RegJ != 0 && MRegisterInfo::isVirtualRegister(RegJ) && + RegMap->isSubRegister(RegJ)) + RegJ = RegMap->getSuperRegister(RegJ); + if (RegJ == li.reg) { MI->getOperand(j).setReg(NewVReg); HasUse |= MI->getOperand(j).isUse(); HasDef |= MI->getOperand(j).isDef(); From evan.cheng at apple.com Tue Nov 6 02:52:22 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 06 Nov 2007 08:52:22 -0000 Subject: [llvm-commits] [llvm] r43764 - in /llvm/trunk/lib/CodeGen: SimpleRegisterCoalescing.cpp SimpleRegisterCoalescing.h Message-ID: <200711060852.lA68qMR9028010@zion.cs.uiuc.edu> Author: evancheng Date: Tue Nov 6 02:52:21 2007 New Revision: 43764 URL: http://llvm.org/viewvc/llvm-project?rev=43764&view=rev Log: First step towards moving the coalescer to priority_queue based machinery. Modified: llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.h Modified: llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp?rev=43764&r1=43763&r2=43764&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp (original) +++ llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp Tue Nov 6 02:52:21 2007 @@ -47,6 +47,11 @@ cl::desc("Coalesce copies (default=true)"), cl::init(true)); + static cl::opt + NewHeuristic("new-coalescer-heuristic", + cl::desc("Use new coalescer heuristic"), + cl::init(false)); + RegisterPass X("simple-register-coalescing", "Simple Register Coalescing"); @@ -177,9 +182,6 @@ if (UIdx != -1) ValLREndInst->getOperand(UIdx).unsetIsKill(); - // Finally, delete the copy instruction. - li_->RemoveMachineInstrFromMaps(CopyMI); - CopyMI->eraseFromParent(); ++numPeep; return true; } @@ -195,22 +197,51 @@ } } +/// isBackEdgeCopy - Returns true if CopyMI is a back edge copy. +/// +bool SimpleRegisterCoalescing::isBackEdgeCopy(MachineInstr *CopyMI, + unsigned DstReg) { + MachineBasicBlock *MBB = CopyMI->getParent(); + const BasicBlock *BB = MBB->getBasicBlock(); + const Loop *L = loopInfo->getLoopFor(BB); + if (!L) + return false; + if (BB != L->getLoopLatch()) + return false; + + DstReg = rep(DstReg); + LiveInterval &LI = li_->getInterval(DstReg); + unsigned DefIdx = li_->getInstructionIndex(CopyMI); + LiveInterval::const_iterator DstLR = + LI.FindLiveRangeContaining(li_->getDefIndex(DefIdx)); + if (DstLR == LI.end()) + return false; + unsigned KillIdx = li_->getInstructionIndex(&MBB->back()) + InstrSlots::NUM-1; + if (DstLR->valno->kills.size() == 1 && DstLR->valno->kills[0] == KillIdx) + return true; + return false; +} + /// JoinCopy - Attempt to join intervals corresponding to SrcReg/DstReg, /// which are the src/dst of the copy instruction CopyMI. This returns true /// if the copy was successfully coalesced away. If it is not currently /// possible to coalesce this interval, but it may be possible if other /// things get coalesced, then it returns true by reference in 'Again'. -bool SimpleRegisterCoalescing::JoinCopy(MachineInstr *CopyMI, - unsigned SrcReg, unsigned DstReg, - bool &Again) { +bool SimpleRegisterCoalescing::JoinCopy(CopyRec TheCopy, bool &Again) { + MachineInstr *CopyMI = TheCopy.MI; + + Again = false; + if (JoinedCopies.count(CopyMI)) + return false; // Already done. + DOUT << li_->getInstructionIndex(CopyMI) << '\t' << *CopyMI; // Get representative registers. + unsigned SrcReg = TheCopy.SrcReg; + unsigned DstReg = TheCopy.DstReg; unsigned repSrcReg = rep(SrcReg); unsigned repDstReg = rep(DstReg); - Again = false; - // If they are already joined we continue. if (repSrcReg == repDstReg) { DOUT << "\tCopy already coalesced.\n"; @@ -362,6 +393,8 @@ unsigned JoinPReg = SrcIsPhys ? repSrcReg : repDstReg; const TargetRegisterClass *RC = mf_->getSSARegMap()->getRegClass(JoinVReg); unsigned Threshold = allocatableRCRegs_[RC].count(); + if (TheCopy.isBackEdge) + Threshold *= 2; // Favors back edge copies. // If the virtual register live interval is long but it has low use desity, // do not join them, instead mark the physical register as its allocation @@ -411,8 +444,10 @@ // Coalescing failed. // If we can eliminate the copy without merging the live ranges, do so now. - if (!isExtSubReg && AdjustCopiesBackFrom(SrcInt, DstInt, CopyMI)) + if (!isExtSubReg && AdjustCopiesBackFrom(SrcInt, DstInt, CopyMI)) { + JoinedCopies.insert(CopyMI); return true; + } // Otherwise, we are unable to join the intervals. DOUT << "Interference!\n"; @@ -490,6 +525,24 @@ AddSubRegIdxPairs(repSrcReg, SubIdx); } + if (NewHeuristic) { + for (LiveInterval::const_vni_iterator i = ResSrcInt->vni_begin(), + e = ResSrcInt->vni_end(); i != e; ++i) { + const VNInfo *vni = *i; + if (vni->def && vni->def != ~1U && vni->def != ~0U) { + MachineInstr *CopyMI = li_->getInstructionFromIndex(vni->def); + unsigned SrcReg, DstReg; + if (CopyMI && tii_->isMoveInstr(*CopyMI, SrcReg, DstReg) && + JoinedCopies.count(CopyMI) == 0) { + unsigned LoopDepth = + loopInfo->getLoopDepth(CopyMI->getParent()->getBasicBlock()); + JoinQueue->push(CopyRec(CopyMI, SrcReg, DstReg, LoopDepth, + isBackEdgeCopy(CopyMI, DstReg))); + } + } + } + } + DOUT << "\n\t\tJoined. Result = "; ResDstInt->print(DOUT, mri_); DOUT << "\n"; @@ -500,8 +553,7 @@ r2rRevMap_[repDstReg].push_back(repSrcReg); // Finally, delete the copy instruction. - li_->RemoveMachineInstrFromMaps(CopyMI); - CopyMI->eraseFromParent(); + JoinedCopies.insert(CopyMI); ++numPeep; ++numJoins; return true; @@ -956,12 +1008,62 @@ }; } +/// getRepIntervalSize - Returns the size of the interval that represents the +/// specified register. +template +unsigned JoinPriorityQueue::getRepIntervalSize(unsigned Reg) { + return Rc->getRepIntervalSize(Reg); +} + +/// CopyRecSort::operator - Join priority queue sorting function. +/// +bool CopyRecSort::operator()(CopyRec left, CopyRec right) const { + // Inner loops first. + if (left.LoopDepth > right.LoopDepth) + return false; + else if (left.LoopDepth == right.LoopDepth) { + if (left.isBackEdge && !right.isBackEdge) + return false; + else if (left.isBackEdge == right.isBackEdge) { + // Join virtuals to physical registers first. + bool LDstIsPhys = MRegisterInfo::isPhysicalRegister(left.DstReg); + bool LSrcIsPhys = MRegisterInfo::isPhysicalRegister(left.SrcReg); + bool LIsPhys = LDstIsPhys || LSrcIsPhys; + bool RDstIsPhys = MRegisterInfo::isPhysicalRegister(right.DstReg); + bool RSrcIsPhys = MRegisterInfo::isPhysicalRegister(right.SrcReg); + bool RIsPhys = RDstIsPhys || RSrcIsPhys; + if (LIsPhys && !RIsPhys) + return false; + else if (LIsPhys == RIsPhys) { + // Join shorter intervals first. + unsigned LSize = 0; + unsigned RSize = 0; + if (LIsPhys) { + LSize = LDstIsPhys ? 0 : JPQ->getRepIntervalSize(left.DstReg); + LSize += LSrcIsPhys ? 0 : JPQ->getRepIntervalSize(left.SrcReg); + RSize = RDstIsPhys ? 0 : JPQ->getRepIntervalSize(right.DstReg); + RSize += RSrcIsPhys ? 0 : JPQ->getRepIntervalSize(right.SrcReg); + } else { + LSize = std::min(JPQ->getRepIntervalSize(left.DstReg), + JPQ->getRepIntervalSize(left.SrcReg)); + RSize = std::min(JPQ->getRepIntervalSize(right.DstReg), + JPQ->getRepIntervalSize(right.SrcReg)); + } + if (LSize < RSize) + return false; + } + } + } + return true; +} + void SimpleRegisterCoalescing::CopyCoalesceInMBB(MachineBasicBlock *MBB, std::vector &TryAgain) { DOUT << ((Value*)MBB->getBasicBlock())->getName() << ":\n"; - + std::vector VirtCopies; std::vector PhysCopies; + unsigned LoopDepth = loopInfo->getLoopDepth(MBB->getBasicBlock()); for (MachineBasicBlock::iterator MII = MBB->begin(), E = MBB->end(); MII != E;) { MachineInstr *Inst = MII++; @@ -978,24 +1080,32 @@ unsigned repDstReg = rep(DstReg); bool SrcIsPhys = MRegisterInfo::isPhysicalRegister(repSrcReg); bool DstIsPhys = MRegisterInfo::isPhysicalRegister(repDstReg); - if (SrcIsPhys || DstIsPhys) - PhysCopies.push_back(getCopyRec(Inst, SrcReg, DstReg)); - else - VirtCopies.push_back(getCopyRec(Inst, SrcReg, DstReg)); + if (NewHeuristic) { + JoinQueue->push(CopyRec(Inst, SrcReg, DstReg, LoopDepth, + isBackEdgeCopy(Inst, DstReg))); + } else { + if (SrcIsPhys || DstIsPhys) + PhysCopies.push_back(CopyRec(Inst, SrcReg, DstReg, 0, false)); + else + VirtCopies.push_back(CopyRec(Inst, SrcReg, DstReg, 0, false)); + } } + if (NewHeuristic) + return; + // Try coalescing physical register + virtual register first. for (unsigned i = 0, e = PhysCopies.size(); i != e; ++i) { CopyRec &TheCopy = PhysCopies[i]; bool Again = false; - if (!JoinCopy(TheCopy.MI, TheCopy.SrcReg, TheCopy.DstReg, Again)) + if (!JoinCopy(TheCopy, Again)) if (Again) TryAgain.push_back(TheCopy); } for (unsigned i = 0, e = VirtCopies.size(); i != e; ++i) { CopyRec &TheCopy = VirtCopies[i]; bool Again = false; - if (!JoinCopy(TheCopy.MI, TheCopy.SrcReg, TheCopy.DstReg, Again)) + if (!JoinCopy(TheCopy, Again)) if (Again) TryAgain.push_back(TheCopy); } @@ -1004,12 +1114,14 @@ void SimpleRegisterCoalescing::joinIntervals() { DOUT << "********** JOINING INTERVALS ***********\n"; + if (NewHeuristic) + JoinQueue = new JoinPriorityQueue(this); + JoinedLIs.resize(li_->getNumIntervals()); JoinedLIs.reset(); std::vector TryAgainList; - const LoopInfo &LI = getAnalysis(); - if (LI.begin() == LI.end()) { + if (loopInfo->begin() == loopInfo->end()) { // If there are no loops in the function, join intervals in function order. for (MachineFunction::iterator I = mf_->begin(), E = mf_->end(); I != E; ++I) @@ -1023,7 +1135,8 @@ // registers with virtual registers before the intervals got too long. std::vector > MBBs; for (MachineFunction::iterator I = mf_->begin(), E = mf_->end(); I != E;++I) - MBBs.push_back(std::make_pair(LI.getLoopDepth(I->getBasicBlock()), I)); + MBBs.push_back(std::make_pair(loopInfo-> + getLoopDepth(I->getBasicBlock()), I)); // Sort by loop depth. std::sort(MBBs.begin(), MBBs.end(), DepthMBBCompare()); @@ -1035,18 +1148,42 @@ // Joining intervals can allow other intervals to be joined. Iteratively join // until we make no progress. - bool ProgressMade = true; - while (ProgressMade) { - ProgressMade = false; - - for (unsigned i = 0, e = TryAgainList.size(); i != e; ++i) { - CopyRec &TheCopy = TryAgainList[i]; - if (TheCopy.MI) { + if (NewHeuristic) { + SmallVector TryAgain; + bool ProgressMade = true; + while (ProgressMade) { + ProgressMade = false; + while (!JoinQueue->empty()) { + CopyRec R = JoinQueue->pop(); bool Again = false; - bool Success = JoinCopy(TheCopy.MI,TheCopy.SrcReg,TheCopy.DstReg,Again); - if (Success || !Again) { - TheCopy.MI = 0; // Mark this one as done. + bool Success = JoinCopy(R, Again); + if (Success) ProgressMade = true; + else if (Again) + TryAgain.push_back(R); + } + + if (ProgressMade) { + while (!TryAgain.empty()) { + JoinQueue->push(TryAgain.back()); + TryAgain.pop_back(); + } + } + } + } else { + bool ProgressMade = true; + while (ProgressMade) { + ProgressMade = false; + + for (unsigned i = 0, e = TryAgainList.size(); i != e; ++i) { + CopyRec &TheCopy = TryAgainList[i]; + if (TheCopy.MI) { + bool Again = false; + bool Success = JoinCopy(TheCopy, Again); + if (Success || !Again) { + TheCopy.MI = 0; // Mark this one as done. + ProgressMade = true; + } } } } @@ -1072,6 +1209,9 @@ } RegNum = JoinedLIs.find_next(RegNum); } + + if (NewHeuristic) + delete JoinQueue; DOUT << "*** Register mapping ***\n"; for (unsigned i = 0, e = r2rMap_.size(); i != e; ++i) @@ -1213,6 +1353,7 @@ r2rMap_.clear(); JoinedLIs.clear(); SubRegIdxes.clear(); + JoinedCopies.clear(); } static bool isZeroLengthInterval(LiveInterval *li) { @@ -1230,6 +1371,7 @@ tii_ = tm_->getInstrInfo(); li_ = &getAnalysis(); lv_ = &getAnalysis(); + loopInfo = &getAnalysis(); DOUT << "********** SIMPLE REGISTER COALESCING **********\n" << "********** Function: " @@ -1253,6 +1395,13 @@ DOUT << "\n"; } + // Delete all coalesced copies. + for (SmallPtrSet::iterator I = JoinedCopies.begin(), + E = JoinedCopies.end(); I != E; ++I) { + li_->RemoveMachineInstrFromMaps(*I); + (*I)->eraseFromParent(); + } + // Transfer sub-registers info to SSARegMap now that coalescing information // is complete. while (!SubRegIdxes.empty()) { @@ -1264,12 +1413,10 @@ // perform a final pass over the instructions and compute spill // weights, coalesce virtual registers and remove identity moves. - const LoopInfo &loopInfo = getAnalysis(); - for (MachineFunction::iterator mbbi = mf_->begin(), mbbe = mf_->end(); mbbi != mbbe; ++mbbi) { MachineBasicBlock* mbb = mbbi; - unsigned loopDepth = loopInfo.getLoopDepth(mbb->getBasicBlock()); + unsigned loopDepth = loopInfo->getLoopDepth(mbb->getBasicBlock()); for (MachineBasicBlock::iterator mii = mbb->begin(), mie = mbb->end(); mii != mie; ) { Modified: llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.h?rev=43764&r1=43763&r2=43764&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.h (original) +++ llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.h Tue Nov 6 02:52:21 2007 @@ -20,13 +20,61 @@ #include "llvm/CodeGen/RegisterCoalescer.h" #include "llvm/ADT/BitVector.h" #include "llvm/ADT/IndexedMap.h" +#include namespace llvm { - + class SimpleRegisterCoalescing; class LiveVariables; class MRegisterInfo; class TargetInstrInfo; class VirtRegMap; + class LoopInfo; + + /// CopyRec - Representation for copy instructions in coalescer queue. + /// + struct CopyRec { + MachineInstr *MI; + unsigned SrcReg, DstReg; + unsigned LoopDepth; + bool isBackEdge; + CopyRec(MachineInstr *mi, unsigned src, unsigned dst, unsigned depth, + bool be) + : MI(mi), SrcReg(src), DstReg(dst), LoopDepth(depth), isBackEdge(be) {}; + }; + + template class JoinPriorityQueue; + + /// CopyRecSort - Sorting function for coalescer queue. + /// + struct CopyRecSort : public std::binary_function { + JoinPriorityQueue *JPQ; + CopyRecSort(JoinPriorityQueue *jpq) : JPQ(jpq) {} + CopyRecSort(const CopyRecSort &RHS) : JPQ(RHS.JPQ) {} + bool operator()(CopyRec left, CopyRec right) const; + }; + + /// JoinQueue - A priority queue of copy instructions the coalescer is + /// going to process. + template + class JoinPriorityQueue { + SimpleRegisterCoalescing *Rc; + std::priority_queue, SF> Queue; + + public: + JoinPriorityQueue(SimpleRegisterCoalescing *rc) : Rc(rc), Queue(SF(this)) {} + + bool empty() const { return Queue.empty(); } + void push(CopyRec R) { Queue.push(R); } + CopyRec pop() { + if (empty()) return CopyRec(0, 0, 0, 0, false); + CopyRec R = Queue.top(); + Queue.pop(); + return R; + } + + // Callbacks to SimpleRegisterCoalescing. + unsigned getRepIntervalSize(unsigned Reg); + }; class SimpleRegisterCoalescing : public MachineFunctionPass, public RegisterCoalescer { @@ -36,6 +84,7 @@ const TargetInstrInfo* tii_; LiveIntervals *li_; LiveVariables *lv_; + const LoopInfo* loopInfo; BitVector allocatableRegs_; DenseMap allocatableRCRegs_; @@ -48,6 +97,10 @@ /// the registers it represent. IndexedMap > r2rRevMap_; + /// JoinQueue - A priority queue of copy instructions the coalescer is + /// going to process. + JoinPriorityQueue *JoinQueue; + /// JoinedLIs - Keep track which register intervals have been coalesced /// with other intervals. BitVector JoinedLIs; @@ -64,17 +117,6 @@ static char ID; // Pass identifcation, replacement for typeid SimpleRegisterCoalescing() : MachineFunctionPass((intptr_t)&ID) {} - struct CopyRec { - MachineInstr *MI; - unsigned SrcReg, DstReg; - }; - CopyRec getCopyRec(MachineInstr *MI, unsigned SrcReg, unsigned DstReg) { - CopyRec R; - R.MI = MI; - R.SrcReg = SrcReg; - R.DstReg = DstReg; - return R; - } struct InstrSlots { enum { LOAD = 0, @@ -93,16 +135,25 @@ bool coalesceFunction(MachineFunction &mf, RegallocQuery &) { // This runs as an independent pass, so don't do anything. - return(false); + return false; }; + /// getRepIntervalSize - Called from join priority queue sorting function. + /// It returns the size of the interval that represent the given register. + unsigned getRepIntervalSize(unsigned Reg) { + Reg = rep(Reg); + if (!li_->hasInterval(Reg)) + return 0; + return li_->getInterval(Reg).getSize(); + } + /// print - Implement the dump method. virtual void print(std::ostream &O, const Module* = 0) const; void print(std::ostream *O, const Module* M = 0) const { if (O) print(*O, M); } - private: + private: /// joinIntervals - join compatible live intervals void joinIntervals(); @@ -116,8 +167,7 @@ /// if the copy was successfully coalesced away. If it is not currently /// possible to coalesce this interval, but it may be possible if other /// things get coalesced, then it returns true by reference in 'Again'. - bool JoinCopy(MachineInstr *CopyMI, unsigned SrcReg, unsigned DstReg, - bool &Again); + bool JoinCopy(CopyRec TheCopy, bool &Again); /// JoinIntervals - Attempt to join these two intervals. On failure, this /// returns false. Otherwise, if one of the intervals being joined is a @@ -146,6 +196,10 @@ /// shallow. void AddSubRegIdxPairs(unsigned Reg, unsigned SubIdx); + /// isBackEdgeCopy - Returns true if CopyMI is a back edge copy. + /// + bool isBackEdgeCopy(MachineInstr *CopyMI, unsigned DstReg); + /// lastRegisterUse - Returns the last use of the specific register between /// cycles Start and End. It also returns the use operand by reference. It /// returns NULL if there are no uses. From evan.cheng at apple.com Tue Nov 6 02:54:04 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 06 Nov 2007 08:54:04 -0000 Subject: [llvm-commits] [test-suite] r43765 - /test-suite/trunk/Makefile.programs Message-ID: <200711060854.lA68s49G028097@zion.cs.uiuc.edu> Author: evancheng Date: Tue Nov 6 02:54:04 2007 New Revision: 43765 URL: http://llvm.org/viewvc/llvm-project?rev=43765&view=rev Log: Use -new-coalescer-heuristic=true as x86 llcbeta. 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=43765&r1=43764&r2=43765&view=diff ============================================================================== --- test-suite/trunk/Makefile.programs (original) +++ test-suite/trunk/Makefile.programs Tue Nov 6 02:54:04 2007 @@ -221,7 +221,8 @@ LLCBETAOPTION := -sched=simple endif ifeq ($(ARCH),x86) -LLCBETAOPTION := -tailcallopt +LLCBETAOPTION := -new-coalescer-heuristic=true +#-tailcallopt #-regalloc=local -fast #-disable-rematerialization #-disable-fp-elim From isanbard at gmail.com Tue Nov 6 03:36:35 2007 From: isanbard at gmail.com (Bill Wendling) Date: Tue, 06 Nov 2007 09:36:35 -0000 Subject: [llvm-commits] [llvm] r43766 - /llvm/trunk/docs/CodingStandards.html Message-ID: <200711060936.lA69aZEk029956@zion.cs.uiuc.edu> Author: void Date: Tue Nov 6 03:36:34 2007 New Revision: 43766 URL: http://llvm.org/viewvc/llvm-project?rev=43766&view=rev Log: Clarify some of the iostreams stuff. Modified: llvm/trunk/docs/CodingStandards.html Modified: llvm/trunk/docs/CodingStandards.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/CodingStandards.html?rev=43766&r1=43765&r2=43766&view=diff ============================================================================== --- llvm/trunk/docs/CodingStandards.html (original) +++ llvm/trunk/docs/CodingStandards.html Tue Nov 6 03:36:34 2007 @@ -505,14 +505,14 @@

    1. The time to run the static c'tors impacts startup time of - applications—a critical time for gui apps.
    2. + applications—a critical time for GUI apps.
    3. The static c'tors cause the app to pull many extra pages of memory off the - disk: both the code for the static c'tors in each .o file and the small - amount of data that gets touched. In addition, touched/dirty pages put - more pressure on the VM system on low-memory machines.
    4. + disk: both the code for the static c'tors in each .o file and the + small amount of data that gets touched. In addition, touched/dirty pages + put more pressure on the VM system on low-memory machines.
    -
    +
    @@ -527,7 +527,7 @@ +DEBUG(dump(DOUT)); @@ -557,17 +557,17 @@ -
    DEBUG(std::cerr << ...);
     DEBUG(dump(std::cerr));
    DOUT << ...;
    -dump(DOUT);
    std::cerr << "Hello world\n";
    void print(std::ostream &Out);
     // ...
     print(std::cerr);
    void print(std::ostream &Out);
    -void print(std::ostream *Out) { if (Out) print(*Out) }
    +      
    void print(llvm::OStream Out);1
     // ...
     print(llvm::cerr);
    +
    +
    +
    -N.B. The second print method is called by the print -expression. It prevents the execution of the first print method if the -stream is cnull.
    - - +

    1llvm::OStream is a light-weight class so it should never +be passed by reference. This is important because in some configurations, +DOUT is an rvalue.

    From baldrick at free.fr Tue Nov 6 03:44:16 2007 From: baldrick at free.fr (Duncan Sands) Date: Tue, 6 Nov 2007 10:44:16 +0100 Subject: [llvm-commits] [llvm-testresults] sabre-ppc32 Power Macintosh nightly tester results In-Reply-To: <7552771B-E0E0-488C-9B91-C40B0C4ECA49@apple.com> References: <200711051314.lA5DEBvs024598@zion.cs.uiuc.edu> <53CB9B8E-A6D9-4489-BAEB-6EFC7927A095@apple.com> <7552771B-E0E0-488C-9B91-C40B0C4ECA49@apple.com> Message-ID: <200711061044.17062.baldrick@free.fr> On Tuesday 6 November 2007 04:35:59 Evan Cheng wrote: > 09-vor also failing due to scalarrepl. > > It's due to Duncan's changes: 43672, 43688, 43691, and 43720. Sorry about that - I will try to take a look tonight. Is this problem also showing on little-endian machines (I made a change to sroa that only effects big-endian machines)? Ciao, Duncan. From baldrick at free.fr Tue Nov 6 04:25:44 2007 From: baldrick at free.fr (Duncan Sands) Date: Tue, 6 Nov 2007 11:25:44 +0100 Subject: [llvm-commits] [llvm-testresults] sabre-ppc32 Power Macintosh nightly tester results In-Reply-To: <7552771B-E0E0-488C-9B91-C40B0C4ECA49@apple.com> References: <200711051314.lA5DEBvs024598@zion.cs.uiuc.edu> <53CB9B8E-A6D9-4489-BAEB-6EFC7927A095@apple.com> <7552771B-E0E0-488C-9B91-C40B0C4ECA49@apple.com> Message-ID: <200711061125.51309.baldrick@free.fr> > > Bugpoint claims that pointer_method is being miscompiled by - > > scalarrepl. Anyone have any ideas? None of the little-endian machines are showing these failures, which confirms my suspicions. Can someone for which they fail please send me (reduced) bitcode. Thanks, Duncan. From clattner at apple.com Tue Nov 6 10:44:47 2007 From: clattner at apple.com (Chris Lattner) Date: Tue, 6 Nov 2007 08:44:47 -0800 Subject: [llvm-commits] [llvm-testresults] sabre-ppc32 Power Macintosh nightly tester results In-Reply-To: <200711061125.51309.baldrick@free.fr> References: <200711051314.lA5DEBvs024598@zion.cs.uiuc.edu> <53CB9B8E-A6D9-4489-BAEB-6EFC7927A095@apple.com> <7552771B-E0E0-488C-9B91-C40B0C4ECA49@apple.com> <200711061125.51309.baldrick@free.fr> Message-ID: <8F95320D-7BE0-453F-9431-849B1CDC4EAE@apple.com> On Nov 6, 2007, at 2:25 AM, Duncan Sands wrote: >>> Bugpoint claims that pointer_method is being miscompiled by - >>> scalarrepl. Anyone have any ideas? > > None of the little-endian machines are showing these failures, > which confirms my suspicions. Can someone for which they fail > please send me (reduced) bitcode. Sure, thanks duncan: > opt -scalarrepl foo.bc -------------- next part -------------- A non-text attachment was scrubbed... Name: bugpoint-tooptimize.bc Type: application/octet-stream Size: 1180 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20071106/ee5076c6/attachment.obj -------------- next part -------------- -Chris From sabre at nondot.org Tue Nov 6 12:13:34 2007 From: sabre at nondot.org (Chris Lattner) Date: Tue, 06 Nov 2007 18:13:34 -0000 Subject: [llvm-commits] [llvm] r43767 - /llvm/trunk/docs/tutorial/LangImpl2.html Message-ID: <200711061813.lA6IDYQ8021712@zion.cs.uiuc.edu> Author: lattner Date: Tue Nov 6 12:13:32 2007 New Revision: 43767 URL: http://llvm.org/viewvc/llvm-project?rev=43767&view=rev Log: fixes from Kelly Wilson. Modified: llvm/trunk/docs/tutorial/LangImpl2.html Modified: llvm/trunk/docs/tutorial/LangImpl2.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl2.html?rev=43767&r1=43766&r2=43767&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl2.html (original) +++ llvm/trunk/docs/tutorial/LangImpl2.html Tue Nov 6 12:13:32 2007 @@ -42,8 +42,8 @@

    Welcome to Chapter 2 of the "Implementing a language -with LLVM" tutorial. This chapter shows you how to use the Lexer built in Chapter 1 to build a full " tutorial. This chapter shows you how to use the lexer, built in +Chapter 1, to build a full parser for our Kaleidoscope language. Once we have a parser, we'll define and build an Abstract Syntax @@ -53,9 +53,10 @@ href="http://en.wikipedia.org/wiki/Recursive_descent_parser">Recursive Descent Parsing and Operator-Precedence -Parsing to parse the Kaleidoscope language (the latter for binary expression -and the former for everything else). Before we get to parsing though, lets talk -about the output of the parser: the Abstract Syntax Tree.

    +Parsing to parse the Kaleidoscope language (the latter for +binary expressions and the former for everything else). Before we get to +parsing though, lets talk about the output of the parser: the Abstract Syntax +Tree.

    @@ -65,7 +66,7 @@
    -

    The AST for a program captures its behavior in a way that it is easy for +

    The AST for a program captures its behavior in such a way that it is easy for later stages of the compiler (e.g. code generation) to interpret. We basically want one object for each construct in the language, and the AST should closely model the language. In Kaleidoscope, we have expressions, a prototype, and a @@ -89,9 +90,10 @@

    The code above shows the definition of the base ExprAST class and one -subclass which we use for numeric literals. The important thing about this is -that the NumberExprAST class captures the numeric value of the literal in the -class, so that later phases of the compiler can know what it is.

    +subclass which we use for numeric literals. The important thing to note about +this code is that the NumberExprAST class captures the numeric value of the +literal as an instance variable. This allows later phases of the compiler to +know what the stored numeric value is.

    Right now we only create the AST, so there are no useful accessor methods on them. It would be very easy to add a virtual method to pretty print the code, @@ -130,10 +132,10 @@

    This is all (intentially) rather straight-forward: variables capture the variable name, binary operators capture their opcode (e.g. '+'), and calls -capture a function name and list of argument expressions. One thing that is -nice about our AST is that it captures the language features without talking -about the syntax of the language. Note that there is no discussion about -precedence of binary operators, lexical structure etc.

    +capture a function name as well as a list of any argument expressions. One thing +that is nice about our AST is that it captures the language features without +talking about the syntax of the language. Note that there is no discussion about +precedence of binary operators, lexical structure, etc.

    For our basic language, these are all of the expression nodes we'll define. Because it doesn't have conditional control flow, it isn't Turing-complete; @@ -231,8 +233,8 @@ routines make it easier to handle errors in routines that have various return types: they always return null.

    -

    With these basic helper functions implemented, we can implement the first -piece of our grammar: we'll start with numeric literals.

    +

    With these basic helper functions, we can implement the first +piece of our grammar: numeric literals.

    @@ -261,10 +263,10 @@

    This routine is very simple: it expects to be called when the current token is a tok_number token. It takes the current number value, creates -a NumberExprAST node, advances the lexer to the next token, then +a NumberExprAST node, advances the lexer to the next token and finally returns.

    -

    There are some interesting aspects of this. The most important one is that +

    There are some interesting aspects to this. The most important one is that this routine eats all of the tokens that correspond to the production, and returns the lexer buffer with the next token (which is not part of the grammar production) ready to go. This is a fairly standard way to go for recursive @@ -287,7 +289,10 @@

    -

    This function illustrates a number of interesting things about the parser: +

    This function illustrates a number of interesting things about the +parser:

    + +

    1) it shows how we use the Error routines. When called, this function expects that the current token is a '(' token, but after parsing the subexpression, it is possible that there is no ')' waiting. For example, if the user types in @@ -295,13 +300,14 @@ occur, the parser needs a way to indicate that they happened: in our parser, we return null on an error.

    -

    Another interesting aspect of this function is that it uses recursion by +

    2) Another interesting aspect of this function is that it uses recursion by calling ParseExpression (we will soon see that ParseExpression can call ParseParenExpr). This is powerful because it allows us to handle recursive grammars, and keeps each production very simple. Note that parentheses do not cause construction of AST nodes themselves. While we could -do this, the most important role of parens are to guide the parser and provide -grouping. Once the parser constructs the AST, parens are not needed.

    +do it this way, the most important role of parens are to guide the parser and +provide grouping. Once the parser constructs the AST, parens are not +needed.

    The next simple production is for handling variable references and function calls:

    @@ -474,8 +480,8 @@

    ParseBinOpRHS is the function that parses the sequence of pairs for -us. It takes a precedence and a pointer to an expression for the part parsed -so far. Note that "x" is a perfectly valid expression: As such, "binoprhs" is +us. It takes a precedence and a pointer to an expression for the part that has been +parsed so far. Note that "x" is a perfectly valid expression: As such, "binoprhs" is allowed to be empty, in which case it returns the expression that is passed into it. In our example above, the code passes the expression for "a" into ParseBinOpRHS and the current token is "+".

    @@ -522,7 +528,7 @@

    As such, this code eats (and remembers) the binary operator and then parses -the following primary expression. This builds up the whole pair, the first of +the primary expression that follows. This builds up the whole pair, the first of which is [+, b] for the running example.

    Now that we parsed the left-hand side of an expression and one pair of the @@ -542,8 +548,8 @@

    If the precedence of the binop to the right of "RHS" is lower or equal to the precedence of our current operator, then we know that the parentheses associate -as "(a+b) binop ...". In our example, since the next operator is "+" and so is -our current one, we know that they have the same precedence. In this case we'll +as "(a+b) binop ...". In our example, the current operator is "+" and the next +operator is "+", we know that they have the same precedence. In this case we'll create the AST node for "a+b", and then continue parsing:

    @@ -559,10 +565,10 @@

    In our example above, this will turn "a+b+" into "(a+b)" and execute the next -iteration of the loop, with "+" as the current token. The code above will eat -and remember it and parse "(c+d)" as the primary expression, which makes the -current pair be [+, (c+d)]. It will then enter the 'if' above with "*" as the -binop to the right of the primary. In this case, the precedence of "*" is +iteration of the loop, with "+" as the current token. The code above will eat, +remember, and parse "(c+d)" as the primary expression, which makes the +current pair equal to [+, (c+d)]. It will then evaluate the 'if' conditional above with +"*" as the binop to the right of the primary. In this case, the precedence of "*" is higher than the precedence of "+" so the if condition will be entered.

    The critical question left here is "how can the if condition parse the right @@ -596,7 +602,7 @@ it to return the AST node for "(c+d)*e*f" as RHS, which is then set as the RHS of the '+' expression.

    -

    Finally, on the next iteration of the while loop, the "+g" piece is parsed. +

    Finally, on the next iteration of the while loop, the "+g" piece is parsed and added to the AST. With this little bit of code (14 non-trivial lines), we correctly handle fully general binary expression parsing in a very elegant way. This was a whirlwind tour of this code, and it is somewhat subtle. I recommend @@ -604,9 +610,9 @@

    This wraps up handling of expressions. At this point, we can point the -parser at an arbitrary token stream and build an expression from them, stopping +parser at an arbitrary token stream and build an expression from it, stopping at the first token that is not part of the expression. Next up we need to -handle function definitions etc.

    +handle function definitions, etc.

    @@ -671,7 +677,7 @@

    In addition, we support 'extern' to declare functions like 'sin' and 'cos' as -well as to support forward declaration of user functions. 'externs' are just +well as to support forward declaration of user functions. These 'extern's are just prototypes with no body:

    @@ -738,8 +744,8 @@

    The most interesting part of this is that we ignore top-level semi colons. Why is this, you ask? The basic reason is that if you type "4 + 5" at the -command line, the parser doesn't know that that is the end of what you will -type. For example, on the next line you could type "def foo..." in which case +command line, the parser doesn't know whether that is the end of what you will type +or not. For example, on the next line you could type "def foo..." in which case 4+5 is the end of a top-level expression. Alternatively you could type "* 6", which would continue the expression. Having top-level semicolons allows you to type "4+5;" and the parser will know you are done.

    @@ -778,7 +784,8 @@

    There is a lot of room for extension here. You can define new AST nodes, extend the language in many ways, etc. In the next -installment, we will describe how to generate LLVM IR from the AST.

    +installment, we will describe how to generate LLVM Intermediate +Representation (IR) from the AST.

    From dalej at apple.com Tue Nov 6 12:35:44 2007 From: dalej at apple.com (Dale Johannesen) Date: Tue, 06 Nov 2007 18:35:44 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r43768 - /llvm-gcc-4.0/trunk/gcc/objc/objc-act.c Message-ID: <200711061835.lA6IZiGD022537@zion.cs.uiuc.edu> Author: johannes Date: Tue Nov 6 12:35:43 2007 New Revision: 43768 URL: http://llvm.org/viewvc/llvm-project?rev=43768&view=rev Log: Fix for PR 1654. 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=43768&r1=43767&r2=43768&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/objc/objc-act.c (original) +++ llvm-gcc-4.0/trunk/gcc/objc/objc-act.c Tue Nov 6 12:35:43 2007 @@ -13148,13 +13148,8 @@ && TREE_TYPE (receiver) == objc_class_type)) check_for_nil = false; - if (!targetm.calls.struct_value_rtx (0, 0) - && (TREE_CODE (ret_type) == RECORD_TYPE - || TREE_CODE (ret_type) == UNION_TYPE) - /* APPLE LOCAL begin radar 5080710 */ - && (TREE_ADDRESSABLE (ret_type) - || targetm.calls.return_in_memory (ret_type, 0))) - /* APPLE LOCAL end radar 5080710 */ + /* LLVM LOCAL pr 1654 */ + if (aggregate_value_p (ret_type, 0)) { if (super) message_func_decl = umsg_id_super2_stret_fixup_decl; @@ -13290,14 +13285,9 @@ argument, then change which messenger entry point this expr will call. NB: Note that sender_cast remains unchanged (it already has a struct return type). */ - if (!targetm.calls.struct_value_rtx (0, 0) - && (TREE_CODE (ret_type) == RECORD_TYPE - || TREE_CODE (ret_type) == UNION_TYPE) - /* APPLE LOCAL begin radar 5080710 */ - && (TREE_ADDRESSABLE (ret_type) - || targetm.calls.return_in_memory (ret_type, 0))) - /* APPLE LOCAL end radar 5080710 */ - sender = (super_flag ? umsg_super_stret_decl : + /* LLVM LOCAL pr 1654 */ + if (aggregate_value_p (ret_type, 0)) + sender = (super_flag ? umsg_super_stret_decl : flag_nil_receivers ? umsg_stret_decl : umsg_nonnil_stret_decl); /* APPLE LOCAL begin radar 4280641 */ else if (!super_flag && targetm.calls.objc_fpreturn_msgcall (ret_type, true)) From dalej at apple.com Tue Nov 6 12:36:15 2007 From: dalej at apple.com (Dale Johannesen) Date: Tue, 06 Nov 2007 18:36:15 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43769 - /llvm-gcc-4.2/trunk/gcc/objc/objc-act.c Message-ID: <200711061836.lA6IaFcP022571@zion.cs.uiuc.edu> Author: johannes Date: Tue Nov 6 12:36:14 2007 New Revision: 43769 URL: http://llvm.org/viewvc/llvm-project?rev=43769&view=rev Log: Fix PR 1654. 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=43769&r1=43768&r2=43769&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/objc/objc-act.c (original) +++ llvm-gcc-4.2/trunk/gcc/objc/objc-act.c Tue Nov 6 12:36:14 2007 @@ -13048,13 +13048,8 @@ && TREE_TYPE (receiver) == objc_class_type)) check_for_nil = false; - if (!targetm.calls.struct_value_rtx (0, 0) - && (TREE_CODE (ret_type) == RECORD_TYPE - || TREE_CODE (ret_type) == UNION_TYPE) - /* APPLE LOCAL begin radar 5080710 */ - && (TREE_ADDRESSABLE (ret_type) - || targetm.calls.return_in_memory (ret_type, 0))) - /* APPLE LOCAL end radar 5080710 */ + /* LLVM LOCAL pr 1654 */ + if (aggregate_value_p (ret_type, 0)) { if (super) message_func_decl = umsg_id_super2_stret_fixup_decl; @@ -13188,13 +13183,8 @@ argument, then change which messenger entry point this expr will call. NB: Note that sender_cast remains unchanged (it already has a struct return type). */ - if (!targetm.calls.struct_value_rtx (0, 0) - && (TREE_CODE (ret_type) == RECORD_TYPE - || TREE_CODE (ret_type) == UNION_TYPE) - /* APPLE LOCAL begin radar 5080710 */ - && (TREE_ADDRESSABLE (ret_type) - || targetm.calls.return_in_memory (ret_type, 0))) - /* APPLE LOCAL end radar 5080710 */ + /* LLVM LOCAL pr 1654 */ + if (aggregate_value_p (ret_type, 0)) sender = (super_flag ? umsg_super_stret_decl : flag_nil_receivers ? umsg_stret_decl : umsg_nonnil_stret_decl); /* APPLE LOCAL begin radar 4280641 */ From kremenek at apple.com Tue Nov 6 13:49:16 2007 From: kremenek at apple.com (Ted Kremenek) Date: Tue, 06 Nov 2007 19:49:16 -0000 Subject: [llvm-commits] [llvm] r43771 - in /llvm/trunk: include/llvm/Bitcode/Deserialize.h lib/Bitcode/Reader/Deserialize.cpp Message-ID: <200711061949.lA6JnGul029049@zion.cs.uiuc.edu> Author: kremenek Date: Tue Nov 6 13:49:16 2007 New Revision: 43771 URL: http://llvm.org/viewvc/llvm-project?rev=43771&view=rev Log: Added support for processing abbreviations in the Deserializer. Added some #ifdef-controlled messages for debugging backpatching. Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Deserialize.h?rev=43771&r1=43770&r2=43771&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Deserialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Deserialize.h Tue Nov 6 13:49:16 2007 @@ -156,9 +156,9 @@ bool AtEnd(); + bool inRecord(); private: void ReadRecord(); - bool inRecord(); uintptr_t ReadInternalRefPtr(); static inline bool HasFinalPtr(MapTy::value_type& V) { Modified: llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp?rev=43771&r1=43770&r2=43771&view=diff ============================================================================== --- llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp (original) +++ llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp Tue Nov 6 13:49:16 2007 @@ -13,6 +13,10 @@ #include "llvm/Bitcode/Deserialize.h" +#ifdef DEBUG_BACKPATCH +#include "llvm/Support/Streams.h" +#endif + using namespace llvm; Deserializer::Deserializer(BitstreamReader& stream) @@ -71,6 +75,11 @@ continue; } + if (Code == bitc::DEFINE_ABBREV) { + Stream.ReadAbbrevRecord(); + continue; + } + break; } @@ -136,6 +145,10 @@ assert (!HasFinalPtr(E) && "Pointer already registered."); +#ifdef DEBUG_BACKPATCH + llvm::cerr << "RegisterPtr: " << PtrId << " => " << Ptr << "\n"; +#endif + SetPtr(E,Ptr); } @@ -145,8 +158,12 @@ if (PtrId == 0) { PtrRef = 0; return; - } - + } + +#ifdef DEBUG_BACKPATCH + llvm::cerr << "ReadUintPtr: " << PtrId << "\n"; +#endif + MapTy::value_type& E = BPatchMap.FindAndConstruct(BPKey(PtrId)); if (HasFinalPtr(E)) From kremenek at apple.com Tue Nov 6 13:49:50 2007 From: kremenek at apple.com (Ted Kremenek) Date: Tue, 06 Nov 2007 19:49:50 -0000 Subject: [llvm-commits] [llvm] r43772 - in /llvm/trunk: include/llvm/Bitcode/Serialize.h lib/Bitcode/Writer/Serialize.cpp Message-ID: <200711061949.lA6JnoKp029119@zion.cs.uiuc.edu> Author: kremenek Date: Tue Nov 6 13:49:50 2007 New Revision: 43772 URL: http://llvm.org/viewvc/llvm-project?rev=43772&view=rev Log: Renamed "Flush()" to "FlushRecord()". Modified: llvm/trunk/include/llvm/Bitcode/Serialize.h llvm/trunk/lib/Bitcode/Writer/Serialize.cpp Modified: llvm/trunk/include/llvm/Bitcode/Serialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Serialize.h?rev=43772&r1=43771&r2=43772&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Serialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Serialize.h Tue Nov 6 13:49:50 2007 @@ -54,7 +54,7 @@ if (ptr) SerializeTrait::Emit(*this,*ptr); } - void Flush() { if (inRecord()) EmitRecord(); } + void FlushRecord() { if (inRecord()) EmitRecord(); } void EnterBlock(unsigned BlockID = 8, unsigned CodeLen = 3); void ExitBlock(); Modified: llvm/trunk/lib/Bitcode/Writer/Serialize.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Writer/Serialize.cpp?rev=43772&r1=43771&r2=43772&view=diff ============================================================================== --- llvm/trunk/lib/Bitcode/Writer/Serialize.cpp (original) +++ llvm/trunk/lib/Bitcode/Writer/Serialize.cpp Tue Nov 6 13:49:50 2007 @@ -29,7 +29,7 @@ while (BlockLevel > 0) Stream.ExitBlock(); - + Stream.FlushToWord(); } @@ -40,7 +40,7 @@ } void Serializer::EnterBlock(unsigned BlockID,unsigned CodeLen) { - Flush(); + FlushRecord(); Stream.EnterSubblock(BlockID,CodeLen); ++BlockLevel; } @@ -48,7 +48,7 @@ void Serializer::ExitBlock() { assert (BlockLevel > 0); --BlockLevel; - Flush(); + FlushRecord(); Stream.ExitBlock(); } From baldrick at free.fr Tue Nov 6 14:39:12 2007 From: baldrick at free.fr (Duncan Sands) Date: Tue, 06 Nov 2007 20:39:12 -0000 Subject: [llvm-commits] [llvm] r43775 - /llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp Message-ID: <200711062039.lA6KdCpn032327@zion.cs.uiuc.edu> Author: baldrick Date: Tue Nov 6 14:39:11 2007 New Revision: 43775 URL: http://llvm.org/viewvc/llvm-project?rev=43775&view=rev Log: At the point of calculating the shift amount, the type of SV has changed from what it originally was. However we need the store width of the original. Modified: llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp Modified: llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp?rev=43775&r1=43774&r2=43775&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp Tue Nov 6 14:39:11 2007 @@ -1179,6 +1179,8 @@ // here. unsigned SrcWidth = TD.getTypeSizeInBits(SV->getType()); unsigned DestWidth = TD.getTypeSizeInBits(AllocaType); + unsigned SrcStoreWidth = TD.getTypeStoreSizeInBits(SV->getType()); + unsigned DestStoreWidth = TD.getTypeStoreSizeInBits(AllocaType); if (SV->getType()->isFloatingPoint()) SV = new BitCastInst(SV, IntegerType::get(SrcWidth), SV->getName(), SI); @@ -1196,8 +1198,7 @@ // On big-endian machines, the lowest bit is stored at the bit offset // from the pointer given by getTypeStoreSizeInBits. This matters for // integers with a bitwidth that is not a multiple of 8. - ShAmt = TD.getTypeStoreSizeInBits(AllocaType) - - TD.getTypeStoreSizeInBits(SV->getType()) - Offset; + ShAmt = DestStoreWidth - SrcStoreWidth - Offset; } else { ShAmt = Offset; } From baldrick at free.fr Tue Nov 6 14:42:23 2007 From: baldrick at free.fr (Duncan Sands) Date: Tue, 6 Nov 2007 21:42:23 +0100 Subject: [llvm-commits] [llvm-testresults] sabre-ppc32 Power Macintosh nightly tester results In-Reply-To: <8F95320D-7BE0-453F-9431-849B1CDC4EAE@apple.com> References: <200711051314.lA5DEBvs024598@zion.cs.uiuc.edu> <200711061125.51309.baldrick@free.fr> <8F95320D-7BE0-453F-9431-849B1CDC4EAE@apple.com> Message-ID: <200711062142.23609.baldrick@free.fr> On Tuesday 6 November 2007 17:44:47 Chris Lattner wrote: > > On Nov 6, 2007, at 2:25 AM, Duncan Sands wrote: > > >>> Bugpoint claims that pointer_method is being miscompiled by - > >>> scalarrepl. Anyone have any ideas? > > > > None of the little-endian machines are showing these failures, > > which confirms my suspicions. Can someone for which they fail > > please send me (reduced) bitcode. > > Sure, thanks duncan: > > > opt -scalarrepl foo.bc Does this http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20071105/055213.html fix it? Ciao, Duncan. From clattner at apple.com Tue Nov 6 14:54:21 2007 From: clattner at apple.com (Chris Lattner) Date: Tue, 6 Nov 2007 12:54:21 -0800 Subject: [llvm-commits] [llvm-testresults] sabre-ppc32 Power Macintosh nightly tester results In-Reply-To: <200711062142.23609.baldrick@free.fr> References: <200711051314.lA5DEBvs024598@zion.cs.uiuc.edu> <200711061125.51309.baldrick@free.fr> <8F95320D-7BE0-453F-9431-849B1CDC4EAE@apple.com> <200711062142.23609.baldrick@free.fr> Message-ID: <7311A6FD-2832-4A8C-862C-7F41EBA5A952@apple.com> On Nov 6, 2007, at 12:42 PM, Duncan Sands wrote: > On Tuesday 6 November 2007 17:44:47 Chris Lattner wrote: >> >> On Nov 6, 2007, at 2:25 AM, Duncan Sands wrote: >> >>>>> Bugpoint claims that pointer_method is being miscompiled by - >>>>> scalarrepl. Anyone have any ideas? >>> >>> None of the little-endian machines are showing these failures, >>> which confirms my suspicions. Can someone for which they fail >>> please send me (reduced) bitcode. >> >> Sure, thanks duncan: >> >>> opt -scalarrepl foo.bc > > Does this > > http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of- > Mon-20071105/055213.html pointer_method works great, I'll let the nightly tester verify the others. Thanks Duncan! -chris From evan.cheng at apple.com Tue Nov 6 15:12:10 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 06 Nov 2007 21:12:10 -0000 Subject: [llvm-commits] [llvm] r43776 - /llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp Message-ID: <200711062112.lA6LCAxV001921@zion.cs.uiuc.edu> Author: evancheng Date: Tue Nov 6 15:12:10 2007 New Revision: 43776 URL: http://llvm.org/viewvc/llvm-project?rev=43776&view=rev Log: When the allocator rewrite a spill register with new virtual register, it replaces other operands of the same register. Watch out for situations where only some of the operands are sub-register uses. Modified: llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp Modified: llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp?rev=43776&r1=43775&r2=43776&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp (original) +++ llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp Tue Nov 6 15:12:10 2007 @@ -379,10 +379,19 @@ if (!MI->getOperand(j).isRegister()) continue; unsigned RegJ = MI->getOperand(j).getReg(); - if (RegJ != 0 && MRegisterInfo::isVirtualRegister(RegJ) && - RegMap->isSubRegister(RegJ)) + if (RegJ == 0 || MRegisterInfo::isPhysicalRegister(RegJ)) + continue; + bool isSubRegJ = RegMap->isSubRegister(RegJ); + if (isSubRegJ) { + assert(!isSubReg || RegMap->getSubRegisterIndex(RegJ) == SubIdx); RegJ = RegMap->getSuperRegister(RegJ); - if (RegJ == li.reg) { + } + // Important to check "isSubRegJ == isSubReg". + // e.g. %reg1024 = MOVSX32rr16 %reg1025. It's possible that both + // registers are coalesced to the same register but only %reg1025 is + // a sub-register use. They should not be rewritten to the same + // register. + if (RegJ == li.reg && isSubRegJ == isSubReg) { MI->getOperand(j).setReg(NewVReg); HasUse |= MI->getOperand(j).isUse(); HasDef |= MI->getOperand(j).isDef(); From sabre at nondot.org Tue Nov 6 15:52:08 2007 From: sabre at nondot.org (Chris Lattner) Date: Tue, 06 Nov 2007 21:52:08 -0000 Subject: [llvm-commits] [llvm] r43777 - in /llvm/trunk: lib/Transforms/Scalar/InstructionCombining.cpp test/Transforms/InstCombine/phi-merge.ll Message-ID: <200711062152.lA6Lq8rh003843@zion.cs.uiuc.edu> Author: lattner Date: Tue Nov 6 15:52:06 2007 New Revision: 43777 URL: http://llvm.org/viewvc/llvm-project?rev=43777&view=rev Log: Implement PR1777 by detecting dependent phis that all compute the same value. Added: llvm/trunk/test/Transforms/InstCombine/phi-merge.ll Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp?rev=43777&r1=43776&r2=43777&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Tue Nov 6 15:52:06 2007 @@ -8551,6 +8551,34 @@ return false; } +/// PHIsEqualValue - Return true if this phi node is always equal to +/// NonPhiInVal. This happens with mutually cyclic phi nodes like: +/// z = some value; x = phi (y, z); y = phi (x, z) +static bool PHIsEqualValue(PHINode *PN, Value *NonPhiInVal, + SmallPtrSet &ValueEqualPHIs) { + // See if we already saw this PHI node. + if (!ValueEqualPHIs.insert(PN)) + return true; + + // Don't scan crazily complex things. + if (ValueEqualPHIs.size() == 16) + return false; + + // Scan the operands to see if they are either phi nodes or are equal to + // the value. + for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) { + Value *Op = PN->getIncomingValue(i); + if (PHINode *OpPN = dyn_cast(Op)) { + if (!PHIsEqualValue(OpPN, NonPhiInVal, ValueEqualPHIs)) + return false; + } else if (Op != NonPhiInVal) + return false; + } + + return true; +} + + // PHINode simplification // Instruction *InstCombiner::visitPHINode(PHINode &PN) { @@ -8592,6 +8620,40 @@ } } + // We sometimes end up with phi cycles that non-obviously end up being the + // same value, for example: + // z = some value; x = phi (y, z); y = phi (x, z) + // where the phi nodes don't necessarily need to be in the same block. Do a + // quick check to see if the PHI node only contains a single non-phi value, if + // so, scan to see if the phi cycle is actually equal to that value. + { + unsigned InValNo = 0, NumOperandVals = PN.getNumIncomingValues(); + // Scan for the first non-phi operand. + while (InValNo != NumOperandVals && + isa(PN.getIncomingValue(InValNo))) + ++InValNo; + + if (InValNo != NumOperandVals) { + Value *NonPhiInVal = PN.getOperand(InValNo); + + // Scan the rest of the operands to see if there are any conflicts, if so + // there is no need to recursively scan other phis. + for (++InValNo; InValNo != NumOperandVals; ++InValNo) { + Value *OpVal = PN.getIncomingValue(InValNo); + if (OpVal != NonPhiInVal && !isa(OpVal)) + break; + } + + // If we scanned over all operands, then we have one unique value plus + // phi values. Scan PHI nodes to see if they all merge in each other or + // the value. + if (InValNo == NumOperandVals) { + SmallPtrSet ValueEqualPHIs; + if (PHIsEqualValue(&PN, NonPhiInVal, ValueEqualPHIs)) + return ReplaceInstUsesWith(PN, NonPhiInVal); + } + } + } return 0; } Added: llvm/trunk/test/Transforms/InstCombine/phi-merge.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/phi-merge.ll?rev=43777&view=auto ============================================================================== --- llvm/trunk/test/Transforms/InstCombine/phi-merge.ll (added) +++ llvm/trunk/test/Transforms/InstCombine/phi-merge.ll Tue Nov 6 15:52:06 2007 @@ -0,0 +1,31 @@ +; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep {phi i32} +; PR1777 + +declare i1 @rrr() + +define i1 @zxcv() { +entry: +%a = alloca i32 +%i = ptrtoint i32* %a to i32 +%b = call i1 @rrr() +br i1 %b, label %one, label %two + +one: +%x = phi i32 [%i, %entry], [%y, %two] +%c = call i1 @rrr() +br i1 %c, label %two, label %end + +two: +%y = phi i32 [%i, %entry], [%x, %one] +%d = call i1 @rrr() +br i1 %d, label %one, label %end + +end: +%f = phi i32 [ %x, %one], [%y, %two] +; Change the %f to %i, and the optimizer suddenly becomes a lot smarter +; even though %f must equal %i at this point +%g = inttoptr i32 %f to i32* +store i32 10, i32* %g +%z = call i1 @rrr() +ret i1 %z +} From sabre at nondot.org Tue Nov 6 16:07:22 2007 From: sabre at nondot.org (Chris Lattner) Date: Tue, 06 Nov 2007 22:07:22 -0000 Subject: [llvm-commits] [llvm] r43779 - /llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp Message-ID: <200711062207.lA6M7MNq004741@zion.cs.uiuc.edu> Author: lattner Date: Tue Nov 6 16:07:22 2007 New Revision: 43779 URL: http://llvm.org/viewvc/llvm-project?rev=43779&view=rev Log: don't put erase or query for non-allocainst pointers in an set of allocainsts*'s 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=43779&r1=43778&r2=43779&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp Tue Nov 6 16:07:22 2007 @@ -271,7 +271,8 @@ // See through pointer-to-pointer bitcasts TranslatePointerBitCasts(pointerOperand); - if (deadPointers.count(pointerOperand)){ + if (isa(pointerOperand) && + deadPointers.count(cast(pointerOperand))) { // Remove it! MD.removeInstruction(S); @@ -345,7 +346,8 @@ for (std::vector::iterator I = dead.begin(), E = dead.end(); I != E; ++I) - deadPointers.erase(*I); + if (AllocaInst *AI = dyn_cast(*I)) + deadPointers.erase(AI); continue; } @@ -427,7 +429,8 @@ for (std::vector::iterator I = undead.begin(), E = undead.end(); I != E; ++I) - deadPointers.erase(*I); + if (AllocaInst *AI = dyn_cast(*I)) + deadPointers.erase(AI); return MadeChange; } From sabre at nondot.org Tue Nov 6 16:07:40 2007 From: sabre at nondot.org (Chris Lattner) Date: Tue, 06 Nov 2007 22:07:40 -0000 Subject: [llvm-commits] [llvm] r43780 - /llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp Message-ID: <200711062207.lA6M7eRE004780@zion.cs.uiuc.edu> Author: lattner Date: Tue Nov 6 16:07:40 2007 New Revision: 43780 URL: http://llvm.org/viewvc/llvm-project?rev=43780&view=rev Log: fix const correctness, BB is const, so its predecessors are too 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=43780&r1=43779&r2=43780&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp Tue Nov 6 16:07:40 2007 @@ -155,7 +155,7 @@ if (!DestBBPN) return true; // no conflict. // Collect the preds of BB. - SmallPtrSet BBPreds; + SmallPtrSet BBPreds; if (const PHINode *BBPN = dyn_cast(BB->begin())) { // It is faster to get preds from a PHI than with pred_iterator. for (unsigned i = 0, e = BBPN->getNumIncomingValues(); i != e; ++i) From djg at cray.com Tue Nov 6 16:11:55 2007 From: djg at cray.com (Dan Gohman) Date: Tue, 06 Nov 2007 22:11:55 -0000 Subject: [llvm-commits] [llvm] r43781 - /llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Message-ID: <200711062211.lA6MBttT004953@zion.cs.uiuc.edu> Author: djg Date: Tue Nov 6 16:11:54 2007 New Revision: 43781 URL: http://llvm.org/viewvc/llvm-project?rev=43781&view=rev Log: Remainder operations must be either integer or floating-point. 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=43781&r1=43780&r2=43781&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Tue Nov 6 16:11:54 2007 @@ -2935,7 +2935,9 @@ SDOperand Dummy; Result = ExpandLibCall(TLI.getLibcallName(LC), Node, isSigned, Dummy); } - } else if (MVT::isFloatingPoint(VT)) { + } else { + assert(MVT::isFloatingPoint(VT) && + "remainder op must have integer or floating-point type"); if (MVT::isVector(VT)) { Result = LegalizeOp(UnrollVectorOp(Op)); } else { From sabre at nondot.org Tue Nov 6 16:12:43 2007 From: sabre at nondot.org (Chris Lattner) Date: Tue, 06 Nov 2007 22:12:43 -0000 Subject: [llvm-commits] [llvm] r43782 - in /llvm/trunk: include/llvm/ADT/SmallPtrSet.h lib/Support/SmallPtrSet.cpp Message-ID: <200711062212.lA6MChNW004991@zion.cs.uiuc.edu> Author: lattner Date: Tue Nov 6 16:12:43 2007 New Revision: 43782 URL: http://llvm.org/viewvc/llvm-project?rev=43782&view=rev Log: make smallptrset more const and type correct, which caught a few minor bugs. Modified: llvm/trunk/include/llvm/ADT/SmallPtrSet.h llvm/trunk/lib/Support/SmallPtrSet.cpp Modified: llvm/trunk/include/llvm/ADT/SmallPtrSet.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/SmallPtrSet.h?rev=43782&r1=43781&r2=43782&view=diff ============================================================================== --- llvm/trunk/include/llvm/ADT/SmallPtrSet.h (original) +++ llvm/trunk/include/llvm/ADT/SmallPtrSet.h Tue Nov 6 16:12:43 2007 @@ -91,21 +91,19 @@ NumTombstones = 0; } - /// insert - This returns true if the pointer was new to the set, false if it - /// was already in the set. - bool insert(const void * Ptr); - - template - void insert(IterT I, IterT E) { - for (; I != E; ++I) - insert((void*)*I); - } - - /// erase - If the set contains the specified pointer, remove it and return - /// true, otherwise return false. - bool erase(const void * Ptr); +protected: + /// insert_imp - This returns true if the pointer was new to the set, false if + /// it was already in the set. This is hidden from the client so that the + /// derived class can check that the right type of pointer is passed in. + bool insert_imp(const void * Ptr); + + /// erase_imp - If the set contains the specified pointer, remove it and + /// return true, otherwise return false. This is hidden from the client so + /// that the derived class can check that the right type of pointer is passed + /// in. + bool erase_imp(const void * Ptr); - bool count(const void * Ptr) const { + bool count_imp(const void * Ptr) const { if (isSmall()) { // Linear search for the item. for (const void *const *APtr = SmallArray, @@ -232,6 +230,23 @@ insert(I, E); } + /// insert - This returns true if the pointer was new to the set, false if it + /// was already in the set. + bool insert(PtrType Ptr) { return insert_imp(Ptr); } + + /// erase - If the set contains the specified pointer, remove it and return + /// true, otherwise return false. + bool erase(PtrType Ptr) { return erase_imp(Ptr); } + + /// count - Return true if the specified pointer is in the set. + bool count(PtrType Ptr) const { return count_imp(Ptr); } + + template + void insert(IterT I, IterT E) { + for (; I != E; ++I) + insert(*I); + } + typedef SmallPtrSetIterator iterator; typedef SmallPtrSetIterator const_iterator; inline iterator begin() const { Modified: llvm/trunk/lib/Support/SmallPtrSet.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/SmallPtrSet.cpp?rev=43782&r1=43781&r2=43782&view=diff ============================================================================== --- llvm/trunk/lib/Support/SmallPtrSet.cpp (original) +++ llvm/trunk/lib/Support/SmallPtrSet.cpp Tue Nov 6 16:12:43 2007 @@ -36,7 +36,7 @@ CurArray[CurArraySize] = 0; } -bool SmallPtrSetImpl::insert(const void * Ptr) { +bool SmallPtrSetImpl::insert_imp(const void * Ptr) { if (isSmall()) { // Check to see if it is already in the set. for (const void **APtr = SmallArray, **E = SmallArray+NumElements; @@ -69,7 +69,7 @@ return true; } -bool SmallPtrSetImpl::erase(const void * Ptr) { +bool SmallPtrSetImpl::erase_imp(const void * Ptr) { if (isSmall()) { // Check to see if it is in the set. for (const void **APtr = SmallArray, **E = SmallArray+NumElements; From kremenek at apple.com Tue Nov 6 16:21:14 2007 From: kremenek at apple.com (Ted Kremenek) Date: Tue, 06 Nov 2007 22:21:14 -0000 Subject: [llvm-commits] [llvm] r43783 - in /llvm/trunk: include/llvm/Bitcode/Deserialize.h lib/Bitcode/Reader/Deserialize.cpp Message-ID: <200711062221.lA6MLEjU005360@zion.cs.uiuc.edu> Author: kremenek Date: Tue Nov 6 16:21:14 2007 New Revision: 43783 URL: http://llvm.org/viewvc/llvm-project?rev=43783&view=rev Log: Augmented ReadPtr and ReadOwnedPtr to control whether or not a pointer is allowed to be backpatched or can be registered with the deserializer to backpatch other pointers. Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Deserialize.h?rev=43783&r1=43782&r2=43783&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Deserialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Deserialize.h Tue Nov 6 16:21:14 2007 @@ -114,33 +114,36 @@ void ReadCStr(std::vector& buff, bool isNullTerm=false); template - inline T* ReadOwnedPtr() { + inline T* ReadOwnedPtr(bool AutoRegister = true) { unsigned PtrId = ReadInt(); if (PtrId == 0) return NULL; T* x = SerializeTrait::Materialize(*this); - RegisterPtr(PtrId,x); + + if (AutoRegister) + RegisterPtr(PtrId,x); + return x; } template - inline void ReadOwnedPtr(T*& Ptr) { - Ptr = ReadOwnedPtr(); + inline void ReadOwnedPtr(T*& Ptr, bool AutoRegister = true) { + Ptr = ReadOwnedPtr(AutoRegister); } template - void ReadPtr(T*& PtrRef) { - ReadUIntPtr(reinterpret_cast(PtrRef)); + void ReadPtr(T*& PtrRef, bool AllowBackpatch = true) { + ReadUIntPtr(reinterpret_cast(PtrRef), AllowBackpatch); } template - void ReadPtr(const T*& PtrRef) { - ReadPtr(const_cast(PtrRef)); + void ReadPtr(const T*& PtrRef, bool AllowBackpatch = true) { + ReadPtr(const_cast(PtrRef), AllowBackpatch); } - void ReadUIntPtr(uintptr_t& PtrRef); + void ReadUIntPtr(uintptr_t& PtrRef, bool AllowBackpatch = true); template T& ReadRef() { Modified: llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp?rev=43783&r1=43782&r2=43783&view=diff ============================================================================== --- llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp (original) +++ llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp Tue Nov 6 16:21:14 2007 @@ -152,7 +152,7 @@ SetPtr(E,Ptr); } -void Deserializer::ReadUIntPtr(uintptr_t& PtrRef) { +void Deserializer::ReadUIntPtr(uintptr_t& PtrRef, bool AllowBackpatch) { unsigned PtrId = ReadInt(); if (PtrId == 0) { @@ -169,6 +169,9 @@ if (HasFinalPtr(E)) PtrRef = GetFinalPtr(E); else { + assert (AllowBackpatch && + "Client forbids backpatching for this pointer."); + // Register backpatch. Check the freelist for a BPNode. BPNode* N; From kremenek at apple.com Tue Nov 6 16:22:25 2007 From: kremenek at apple.com (Ted Kremenek) Date: Tue, 06 Nov 2007 22:22:25 -0000 Subject: [llvm-commits] [llvm] r43784 - in /llvm/trunk: include/llvm/Bitcode/Serialize.h lib/Bitcode/Writer/Serialize.cpp Message-ID: <200711062222.lA6MMP9N005416@zion.cs.uiuc.edu> Author: kremenek Date: Tue Nov 6 16:22:25 2007 New Revision: 43784 URL: http://llvm.org/viewvc/llvm-project?rev=43784&view=rev Log: Serializer no longer automatically emits a root-level block in the bitstream. Modified: llvm/trunk/include/llvm/Bitcode/Serialize.h llvm/trunk/lib/Bitcode/Writer/Serialize.cpp Modified: llvm/trunk/include/llvm/Bitcode/Serialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Serialize.h?rev=43784&r1=43783&r2=43784&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Serialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Serialize.h Tue Nov 6 16:22:25 2007 @@ -31,8 +31,7 @@ MapTy PtrMap; public: - Serializer(BitstreamWriter& stream, unsigned BlockID = 8); - + Serializer(BitstreamWriter& stream); ~Serializer(); template Modified: llvm/trunk/lib/Bitcode/Writer/Serialize.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Writer/Serialize.cpp?rev=43784&r1=43783&r2=43784&view=diff ============================================================================== --- llvm/trunk/lib/Bitcode/Writer/Serialize.cpp (original) +++ llvm/trunk/lib/Bitcode/Writer/Serialize.cpp Tue Nov 6 16:22:25 2007 @@ -16,12 +16,8 @@ using namespace llvm; -Serializer::Serializer(BitstreamWriter& stream, unsigned BlockID) - : Stream(stream), BlockLevel(0) { - - if (BlockID >= 8) - EnterBlock(8,3); -} +Serializer::Serializer(BitstreamWriter& stream) + : Stream(stream), BlockLevel(0) {} Serializer::~Serializer() { if (inRecord()) From tonic at nondot.org Tue Nov 6 16:32:17 2007 From: tonic at nondot.org (Tanya Lattner) Date: Tue, 06 Nov 2007 22:32:17 -0000 Subject: [llvm-commits] [llvm] r43788 - /llvm/trunk/test/lib/llvm.exp Message-ID: <200711062232.lA6MWHdj006012@zion.cs.uiuc.edu> Author: tbrethou Date: Tue Nov 6 16:32:17 2007 New Revision: 43788 URL: http://llvm.org/viewvc/llvm-project?rev=43788&view=rev Log: Implement the XTARGET feature for PR1778 This will mark a test as PASS for all targets specified. It will override whatever is in XFAIL. Modified: llvm/trunk/test/lib/llvm.exp Modified: llvm/trunk/test/lib/llvm.exp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/lib/llvm.exp?rev=43788&r1=43787&r2=43788&view=diff ============================================================================== --- llvm/trunk/test/lib/llvm.exp (original) +++ llvm/trunk/test/lib/llvm.exp Tue Nov 6 16:32:17 2007 @@ -104,7 +104,10 @@ set filename [file tail $test] set outcome PASS set tmpFile "$filename.tmp" - + + # Mark that it should not be XFAIL for this target. + set targetPASS 0 + #set hasRunline bool to check if testcase has a runline set numLines 0 @@ -145,12 +148,36 @@ #split up target if more then 1 specified foreach target [split $targets ,] { if { [regexp {\*} $target match] } { - set outcome XFAIL + if {$targetPASS != 1} { + set outcome XFAIL + } + } elseif { [regexp $target $target_triplet match] } { + if {$targetPASS != 1} { + set outcome XFAIL + } + } elseif { [regexp {llvmgcc(([0-9]+)|([0-9]+[.][0-9]+))} $target match submatch submatch2] } { + if { [regexp ^($submatch)$|^(($submatch)(\.)) $llvmgcc_version match] } { + if {$targetPASS != 1} { + set outcome XFAIL + } + } + } + } + } elseif {[regexp {XTARGET:[ *](.+)} $line match targets]} { + set targets + + #split up target if more then 1 specified + foreach target [split $targets ,] { + if { [regexp {\*} $target match] } { + set targetPASS 1 + set outcome PASS } elseif { [regexp $target $target_triplet match] } { - set outcome XFAIL + set targetPASS 1 + set outcome PASS } elseif { [regexp {llvmgcc(([0-9]+)|([0-9]+[.][0-9]+))} $target match submatch submatch2] } { if { [regexp ^($submatch)$|^(($submatch)(\.)) $llvmgcc_version match] } { - set outcome XFAIL + set targetPASS 1 + set outcome PASS } } } From clattner at apple.com Tue Nov 6 17:45:29 2007 From: clattner at apple.com (Chris Lattner) Date: Tue, 6 Nov 2007 15:45:29 -0800 Subject: [llvm-commits] [llvm] r43421 - in /llvm/trunk: include/llvm/Support/Alignment.h lib/CodeGen/SelectionDAG/DAGCombiner.cpp lib/CodeGen/SelectionDAG/LegalizeDAG.cpp lib/CodeGen/SelectionDAG/LegalizeDAGTypes.cpp In-Reply-To: <200710281259.l9SCxkBh003841@zion.cs.uiuc.edu> References: <200710281259.l9SCxkBh003841@zion.cs.uiuc.edu> Message-ID: On Oct 28, 2007, at 5:59 AM, Duncan Sands wrote: > Author: baldrick > Date: Sun Oct 28 07:59:45 2007 > New Revision: 43421 > +//===----------- Alignment.h - Alignment computation ------------ > *- C++ -*-===// Hi Duncan, instead of introducing a new header file for this, would it make sense to merge into MathExtras.h? -Chris > +// > +// The LLVM Compiler Infrastructure > +// > +// This file was developed by Duncan Sands and is distributed under > +// the University of Illinois Open Source License. See LICENSE.TXT > for details. > +// > +// > ===------------------------------------------------------------------- > ---===// > +// > +// This file defines utilities for computing alignments. > +// > +// > ===------------------------------------------------------------------- > ---===// > + > +#ifndef LLVM_SUPPORT_ALIGNMENT_H > +#define LLVM_SUPPORT_ALIGNMENT_H > + > +namespace llvm { > + > +/// MinAlign - A and B are either alignments or offsets. Return > the minimum > +/// alignment that may be assumed after adding the two together. > + > +static inline unsigned MinAlign(unsigned A, unsigned B) { > + // The largest power of 2 that divides both A and B. > + return (A | B) & -(A | B); > +} > + > +} // end namespace llvm > +#endif From clattner at apple.com Tue Nov 6 17:55:56 2007 From: clattner at apple.com (Chris Lattner) Date: Tue, 6 Nov 2007 15:55:56 -0800 Subject: [llvm-commits] [llvm] r43554 - in /llvm/trunk/lib/Target: ARM/ARMISelLowering.cpp ARM/ARMISelLowering.h ARM/ARMSubtarget.h X86/X86ISelLowering.cpp In-Reply-To: <200710311439.l9VEdxdu029568@zion.cs.uiuc.edu> References: <200710311439.l9VEdxdu029568@zion.cs.uiuc.edu> Message-ID: <82B96F39-4993-4A24-9D0E-028D5CC04F29@apple.com> On Oct 31, 2007, at 7:39 AM, Rafael Espindola wrote: > Author: rafael > Date: Wed Oct 31 09:39:58 2007 > New Revision: 43554 > > URL: http://llvm.org/viewvc/llvm-project?rev=43554&view=rev > Log: > Make ARM and X86 LowerMEMCPY identical by moving the isThumb check > into getMaxInlineSizeThreshold > and by restructuring the X86 version. > > New I just have to move this to a common place :-) Very nice Rafael! -Chris From isanbard at gmail.com Tue Nov 6 18:06:27 2007 From: isanbard at gmail.com (Bill Wendling) Date: Tue, 6 Nov 2007 16:06:27 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r43399 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp In-Reply-To: <200710262331.05985.baldrick@free.fr> References: <200710262027.l9QKRSbh024383@zion.cs.uiuc.edu> <200710262302.07224.baldrick@free.fr> <16e5fdf90710261415s3716e2bew8bec0771a901da7@mail.gmail.com> <200710262331.05985.baldrick@free.fr> Message-ID: <16e5fdf90711061606t79b5f100p7f0afd206bd2daf3@mail.gmail.com> On 10/26/07, Duncan Sands wrote: > > I've only seen this problem on PPC64. In particular, it's writing this > > information into the "redzone" because this is a leaf function, and > > thus the destination may be unaligned. > > Can you please send me the gcc tree dumps, and also what debug_tree > gives for the modify_expr. > Here's the debug_tree: Breakpoint 1, TreeToLLVM::EmitMODIFY_EXPR (this=0xbfffe998, exp=0x40d11e70, DestLoc=0x0) at /Volumes/SandBox/Clean/llvm-9999-01.roots/llvm-9999-01~obj/\ src/gcc/llvm-convert.cpp:3024 (gdb) p debug_tree(exp) > side-effects arg 0 sizes-gimplified BLK size unit size align 8 symtab 3 alias set -1 domain LLVM: [11 x i8]> used asm-frame-size 0 BLK file testcase.c line 2 size unit size align 8 context LLVM: [11 x i8]* %Bar> arg 1 readonly asm_written used static ignored asm-frame-size 0 BLK file testcase.c line 2 size unit size align 64 context initial LLVM: [11 x i8]* @C.0.1173 chain > testcase.c:2> $1 = void The tree dumps: $ cat testcase.c.t03.generic Qux () { static char C.0[11] = {0}; char Bar[11]; Bar = C.0; } $ cat testcase.c.t02.original ;; Function Qux (Qux) ;; enabled by -tree-original { char Bar[11] = {0}; char Bar[11] = {0}; } Does this help? :-) -bw From dalej at apple.com Tue Nov 6 18:25:05 2007 From: dalej at apple.com (Dale Johannesen) Date: Wed, 07 Nov 2007 00:25:05 -0000 Subject: [llvm-commits] [llvm] r43794 - in /llvm/trunk: lib/Target/X86/X86RegisterInfo.cpp lib/Target/X86/X86RegisterInfo.h utils/TableGen/RegisterInfoEmitter.cpp Message-ID: <200711070025.lA70P50k012666@zion.cs.uiuc.edu> Author: johannes Date: Tue Nov 6 18:25:05 2007 New Revision: 43794 URL: http://llvm.org/viewvc/llvm-project?rev=43794&view=rev Log: Interchange Dwarf numbers of ESP and EBP on x86 Darwin. Much improvement in exception handling. Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp llvm/trunk/lib/Target/X86/X86RegisterInfo.h llvm/trunk/utils/TableGen/RegisterInfoEmitter.cpp Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp?rev=43794&r1=43793&r2=43794&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp (original) +++ llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp Tue Nov 6 18:25:05 2007 @@ -654,6 +654,22 @@ assert(AmbEntries.empty() && "Duplicated entries in unfolding maps?"); } +// getDwarfRegNum - This function maps LLVM register identifiers to the +// Dwarf specific numbering, used in debug info and exception tables. +// The registers are given "basic" dwarf numbers in the .td files, +// which are collected by TableGen into X86GenRegisterInfo::getDwarfRegNum. +// This wrapper allows for target-specific overrides. +int X86RegisterInfo::getDwarfRegNum(unsigned RegNo) const { + int n = X86GenRegisterInfo::getDwarfRegNum(RegNo); + const X86Subtarget *Subtarget = &TM.getSubtarget(); + if (Subtarget->isDarwin) { + // ESP and EBP are switched. + if (n==4) return 5; + if (n==5) return 4; + } + return n; +} + // getX86RegNum - This function maps LLVM register identifiers to their X86 // specific numbering, which is used in various places encoding instructions. // Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86RegisterInfo.h?rev=43794&r1=43793&r2=43794&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86RegisterInfo.h (original) +++ llvm/trunk/lib/Target/X86/X86RegisterInfo.h Tue Nov 6 18:25:05 2007 @@ -77,6 +77,10 @@ /// register identifier. unsigned getX86RegNum(unsigned RegNo); + /// getDwarfRegNum - allows modification of X86GenRegisterInfo::getDwarfRegNum + /// (created by TableGen) for target dependencies. + int getDwarfRegNum(unsigned RegNum) const; + /// Code Generation virtual methods... /// bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, Modified: llvm/trunk/utils/TableGen/RegisterInfoEmitter.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/RegisterInfoEmitter.cpp?rev=43794&r1=43793&r2=43794&view=diff ============================================================================== --- llvm/trunk/utils/TableGen/RegisterInfoEmitter.cpp (original) +++ llvm/trunk/utils/TableGen/RegisterInfoEmitter.cpp Tue Nov 6 18:25:05 2007 @@ -60,7 +60,7 @@ OS << "struct " << ClassName << " : public MRegisterInfo {\n" << " " << ClassName << "(int CallFrameSetupOpcode = -1, int CallFrameDestroyOpcode = -1);\n" - << " int getDwarfRegNum(unsigned RegNum) const;\n" + << " virtual int getDwarfRegNum(unsigned RegNum) const;\n" << " unsigned getSubReg(unsigned RegNo, unsigned Index) const;\n" << "};\n\n"; From kremenek at apple.com Tue Nov 6 18:28:00 2007 From: kremenek at apple.com (Ted Kremenek) Date: Wed, 07 Nov 2007 00:28:00 -0000 Subject: [llvm-commits] [llvm] r43795 - /llvm/trunk/include/llvm/ADT/APInt.h Message-ID: <200711070028.lA70S0A2013119@zion.cs.uiuc.edu> Author: kremenek Date: Tue Nov 6 18:27:59 2007 New Revision: 43795 URL: http://llvm.org/viewvc/llvm-project?rev=43795&view=rev Log: Fixed default ctor for APInt to properly initialize BitWidth to a non-random value. 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=43795&r1=43794&r2=43795&view=diff ============================================================================== --- llvm/trunk/include/llvm/ADT/APInt.h (original) +++ llvm/trunk/include/llvm/ADT/APInt.h Tue Nov 6 18:27:59 2007 @@ -207,7 +207,7 @@ /// Default constructor that creates an uninitialized APInt. This is useful /// for object deserialization (pair this with the static method Read). - explicit APInt() {} + explicit APInt() : BitWidth(1) {} /// @brief Used by the Bitcode serializer to emit APInts to Bitcode. void Emit(Serializer& S) const; From echristo at apple.com Tue Nov 6 18:35:28 2007 From: echristo at apple.com (Eric Christopher) Date: Tue, 6 Nov 2007 16:35:28 -0800 Subject: [llvm-commits] [llvm] r43794 - in /llvm/trunk: lib/Target/X86/X86RegisterInfo.cpp lib/Target/X86/X86RegisterInfo.h utils/TableGen/RegisterInfoEmitter.cpp In-Reply-To: <200711070025.lA70P50k012666@zion.cs.uiuc.edu> References: <200711070025.lA70P50k012666@zion.cs.uiuc.edu> Message-ID: <4ECD86B3-4FD3-485D-AC79-60960A09B095@apple.com> On Nov 6, 2007, at 4:25 PM, Dale Johannesen wrote: > Author: johannes > Date: Tue Nov 6 18:25:05 2007 > New Revision: 43794 > > URL: http://llvm.org/viewvc/llvm-project?rev=43794&view=rev > Log: > Interchange Dwarf numbers of ESP and EBP on x86 Darwin. > Much improvement in exception handling. As we just spoke, should probably be 32-bit only for this :) -eric From dalej at apple.com Tue Nov 6 18:44:25 2007 From: dalej at apple.com (Dale Johannesen) Date: Tue, 6 Nov 2007 16:44:25 -0800 Subject: [llvm-commits] [llvm] r43794 - in /llvm/trunk: lib/Target/X86/X86RegisterInfo.cpp lib/Target/X86/X86RegisterInfo.h utils/TableGen/RegisterInfoEmitter.cpp In-Reply-To: <4ECD86B3-4FD3-485D-AC79-60960A09B095@apple.com> References: <200711070025.lA70P50k012666@zion.cs.uiuc.edu> <4ECD86B3-4FD3-485D-AC79-60960A09B095@apple.com> Message-ID: On Nov 6, 2007, at 4:35 PM, Eric Christopher wrote: > > On Nov 6, 2007, at 4:25 PM, Dale Johannesen wrote: > >> Author: johannes >> Date: Tue Nov 6 18:25:05 2007 >> New Revision: 43794 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=43794&view=rev >> Log: >> Interchange Dwarf numbers of ESP and EBP on x86 Darwin. >> Much improvement in exception handling. > > As we just spoke, should probably be 32-bit only for this :) Yes. There are other adjustments in darwin.h that need to be ported as well. From kremenek at apple.com Tue Nov 6 18:47:33 2007 From: kremenek at apple.com (Ted Kremenek) Date: Wed, 07 Nov 2007 00:47:33 -0000 Subject: [llvm-commits] [llvm] r43799 - /llvm/trunk/include/llvm/Bitcode/Deserialize.h Message-ID: <200711070047.lA70lXS6014455@zion.cs.uiuc.edu> Author: kremenek Date: Tue Nov 6 18:47:33 2007 New Revision: 43799 URL: http://llvm.org/viewvc/llvm-project?rev=43799&view=rev Log: Added special version of ReadPtr() that returns a deserialized pointer by value. This version prohibits backpatching of pointers, so it useful when a pointee is always known to be deserialized beforehand. Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Deserialize.h?rev=43799&r1=43798&r2=43799&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Deserialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Deserialize.h Tue Nov 6 18:47:33 2007 @@ -141,7 +141,10 @@ template void ReadPtr(const T*& PtrRef, bool AllowBackpatch = true) { ReadPtr(const_cast(PtrRef), AllowBackpatch); - } + } + + template + T* ReadPtr() { T* x; ReadPtr(x,false); return x; } void ReadUIntPtr(uintptr_t& PtrRef, bool AllowBackpatch = true); From criswell at cs.uiuc.edu Tue Nov 6 20:14:26 2007 From: criswell at cs.uiuc.edu (John Criswell) Date: Tue, 6 Nov 2007 20:14:26 -0600 Subject: [llvm-commits] CVS: llvm-www/sva/ Message-ID: <200711070214.UAA09706@choi.cs.uiuc.edu> Changes in directory llvm-www/sva: --- Log message: Directory /home/vadve/shared/PublicCVS/llvm-www/sva added to the repository --- Diffs of the changes: (+0 -0) 0 files changed From criswell at cs.uiuc.edu Tue Nov 6 20:16:30 2007 From: criswell at cs.uiuc.edu (John Criswell) Date: Tue, 6 Nov 2007 20:16:30 -0600 Subject: [llvm-commits] CVS: llvm-www/sva/index.html Message-ID: <200711070216.UAA09744@choi.cs.uiuc.edu> Changes in directory llvm-www/sva: index.html added (r1.1) --- Log message: Skeleton index page. --- Diffs of the changes: (+13 -0) index.html | 13 +++++++++++++ 1 files changed, 13 insertions(+) Index: llvm-www/sva/index.html diff -c /dev/null llvm-www/sva/index.html:1.1 *** /dev/null Tue Nov 6 20:15:52 2007 --- llvm-www/sva/index.html Tue Nov 6 20:15:42 2007 *************** *** 0 **** --- 1,13 ---- + + + + Secure Virtual Architecture + + + +
    +

    Secure Virtual Architecture

    +
    + + + From clattner at apple.com Tue Nov 6 22:14:10 2007 From: clattner at apple.com (Chris Lattner) Date: Tue, 6 Nov 2007 20:14:10 -0800 Subject: [llvm-commits] CVS: llvm-www/sva/index.html In-Reply-To: <200711070216.UAA09744@choi.cs.uiuc.edu> References: <200711070216.UAA09744@choi.cs.uiuc.edu> Message-ID: <6B19C9E6-EAC2-45A2-B888-AECF1822E832@apple.com> Hey John, This should be in a different repository than the main llvm cvs one. You presumably want this to show up at sva.llvm.org or sva.cs.uiuc.edu not llvm.org/sva. I'd suggest just making an sva-www repo. -Chris On Nov 6, 2007, at 6:16 PM, John Criswell wrote: > > > Changes in directory llvm-www/sva: > > index.html added (r1.1) > --- > Log message: > > Skeleton index page. > > > --- > Diffs of the changes: (+13 -0) > > index.html | 13 +++++++++++++ > 1 files changed, 13 insertions(+) > > > Index: llvm-www/sva/index.html > diff -c /dev/null llvm-www/sva/index.html:1.1 > *** /dev/null Tue Nov 6 20:15:52 2007 > --- llvm-www/sva/index.html Tue Nov 6 20:15:42 2007 > *************** > *** 0 **** > --- 1,13 ---- > + > + > + > + Secure Virtual Architecture > + > + > + > +
    > +

    Secure Virtual Architecture

    > +
    > + > + > + > > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From sabre at nondot.org Tue Nov 6 22:29:28 2007 From: sabre at nondot.org (Chris Lattner) Date: Tue, 6 Nov 2007 22:29:28 -0600 Subject: [llvm-commits] CVS: llvm-www/devmtg/2007-05/07-Michel-Cell.pdf index.html Message-ID: <200711070429.lA74TSuU024679@zion.cs.uiuc.edu> Changes in directory llvm-www/devmtg/2007-05: 07-Michel-Cell.pdf added (r1.1) index.html updated: 1.13 -> 1.14 --- Log message: Add Scott Michel's talk, yay! --- Diffs of the changes: (+2 -2) 07-Michel-Cell.pdf | 0 index.html | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) Index: llvm-www/devmtg/2007-05/07-Michel-Cell.pdf Index: llvm-www/devmtg/2007-05/index.html diff -u llvm-www/devmtg/2007-05/index.html:1.13 llvm-www/devmtg/2007-05/index.html:1.14 --- llvm-www/devmtg/2007-05/index.html:1.13 Mon Jul 16 19:29:22 2007 +++ llvm-www/devmtg/2007-05/index.html Tue Nov 6 22:28:49 2007 @@ -108,7 +108,7 @@

    Session 2:
    Using LLVM

    MediaSpeakerDescription - todoScott Michel + slides (PDF)Scott Michel The Cell BE Symbiotic Processor Element Backend - A presentation of the practice and experience that resulted from Aerospace's implementation of an LLVM back-end Target for the Cell BE Symbiotic @@ -265,6 +265,6 @@ src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"> Valid HTML 4.01! -
    Last modified: $Date: 2007/07/17 00:29:22 $ +
    Last modified: $Date: 2007/11/07 04:28:49 $ From sabre at nondot.org Tue Nov 6 23:07:11 2007 From: sabre at nondot.org (Chris Lattner) Date: Wed, 07 Nov 2007 05:07:11 -0000 Subject: [llvm-commits] [llvm] r43804 - /llvm/trunk/docs/tutorial/LangImpl3.html Message-ID: <200711070507.lA757Cbu026014@zion.cs.uiuc.edu> Author: lattner Date: Tue Nov 6 23:07:10 2007 New Revision: 43804 URL: http://llvm.org/viewvc/llvm-project?rev=43804&view=rev Log: edits. Modified: llvm/trunk/docs/tutorial/LangImpl3.html Modified: llvm/trunk/docs/tutorial/LangImpl3.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl3.html?rev=43804&r1=43803&r2=43804&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl3.html (original) +++ llvm/trunk/docs/tutorial/LangImpl3.html Tue Nov 6 23:07:10 2007 @@ -235,7 +235,7 @@ a uitofp instruction. This instruction converts its input integer into a floating point value by treating the input as an unsigned value. In contrast, if we used the sitofp instruction, the Kaleidoscope '<' +href="../LangRef.html#i_sitofp">sitofp instruction, the Kaleidoscope '<' operator would return 0.0 and -1.0, depending on the input value.

    @@ -288,11 +288,11 @@
    -

    Code generation for prototypes and functions has to handle a number of -details, which make their code less beautiful and elegant than expression code -generation, but they illustrate some important points. First, lets talk about -code generation for prototypes: this is used both for function bodies as well -as external function declarations. The code starts with:

    +

    Code generation for prototypes and functions must handle a number of +details, which make their code less beautiful than expression code +generation, but allows us to illustrate some important points. First, lets +talk about code generation for prototypes: they are used both for function +bodies and external function declarations. The code starts with:

    @@ -306,15 +306,15 @@
     

    This code packs a lot of power into a few lines. Note first that this -function returns a Function* instead of a Value*. Because a "prototype" really -talks about the external interface for a function (not the value computed by -an expression), it makes sense for it to return the LLVM Function it corresponds -to when codegen'd.

    +function returns a "Function*" instead of a "Value*". Because a "prototype" +really talks about the external interface for a function (not the value computed +by an expression), it makes sense for it to return the LLVM Function it +corresponds to when codegen'd.

    -

    The next step is to create +

    The call to FunctionType::get creates the FunctionType that should be used for a given Prototype. Since all function arguments in Kaleidoscope are of type double, the first line creates -a vector of "N" LLVM Double types. It then uses the FunctionType::get +a vector of "N" LLVM double types. It then uses the FunctionType::get method to create a function type that takes "N" doubles as arguments, returns one double as a result, and that is not vararg (the false parameter indicates this). Note that Types in LLVM are uniqued just like Constants are, so you @@ -347,7 +347,7 @@ definition of this function.

    In Kaleidoscope, I choose to allow redefinitions of functions in two cases: -first, we want to allow 'extern'ing a function more than once, so long as the +first, we want to allow 'extern'ing a function more than once, as long as the prototypes for the externs match (since all arguments have the same type, we just have to check that the number of arguments match). Second, we want to allow 'extern'ing a function and then definining a body for it. This is useful @@ -378,9 +378,9 @@

    -

    In order to verify the logic above, we first check to see if the preexisting +

    In order to verify the logic above, we first check to see if the pre-existing function is "empty". In this case, empty means that it has no basic blocks in -it, which means it has no body. If it has no body, this means its a forward +it, which means it has no body. If it has no body, it is a forward declaration. Since we don't allow anything after a full definition of the function, the code rejects this case. If the previous reference to a function was an 'extern', we simply verify that the number of arguments for that @@ -408,7 +408,7 @@ VariableExprAST AST node. Once this is set up, it returns the Function object to the caller. Note that we don't check for conflicting argument names here (e.g. "extern foo(a b a)"). Doing so would be very -straight-forward.

    +straight-forward with the mechanics we have already used above.

    @@ -445,7 +445,7 @@
     of functions that define the Control Flow Graph.
     Since we don't have any control flow, our functions will only contain one 
    -block so far.  We'll fix this in a future installment :).

    +block so far. We'll fix this in Chapter 5 :).

    @@ -519,7 +519,7 @@
     
     ready> 4+5;
    -ready> Read top-level expression:
    +Read top-level expression:
     define double @""() {
     entry:
             %addtmp = add double 4.000000e+00, 5.000000e+00
    @@ -529,14 +529,16 @@
     

    Note how the parser turns the top-level expression into anonymous functions -for us. This will be handy when we add JIT support in the next chapter. Also -note that the code is very literally transcribed, no optimizations are being -performed. We will add optimizations explicitly in the next chapter.

    +for us. This will be handy when we add JIT +support in the next chapter. Also note that the code is very literally +transcribed, no optimizations are being performed. We will +add optimizations explicitly in +the next chapter.

     ready> def foo(a b) a*a + 2*a*b + b*b;
    -ready> Read function definition:
    +Read function definition:
     define double @foo(double %a, double %b) {
     entry:
             %multmp = mul double %a, %a
    @@ -556,7 +558,7 @@
     
     ready> def bar(a) foo(a, 4.0) + bar(31337);
    -ready> Read function definition:
    +Read function definition:
     define double @bar(double %a) {
     entry:
             %calltmp = call double @foo( double %a, double 4.000000e+00 )
    @@ -574,11 +576,11 @@
     
     ready> extern cos(x);
    -ready> Read extern: 
    +Read extern: 
     declare double @cos(double)
     
     ready> cos(1.234);
    -ready> Read top-level expression:
    +Read top-level expression:
     define double @""() {
     entry:
             %calltmp = call double @cos( double 1.234000e+00 )
    @@ -657,7 +659,7 @@
     
        # Compile
    -   g++ -g toy.cpp `llvm-config --cppflags --ldflags --libs core` -o toy
    +   g++ -g -O3 toy.cpp `llvm-config --cppflags --ldflags --libs core` -o toy
        # Run
        ./toy
     
    From resistor at mac.com Tue Nov 6 23:17:15 2007 From: resistor at mac.com (Owen Anderson) Date: Wed, 07 Nov 2007 05:17:15 -0000 Subject: [llvm-commits] [llvm] r43805 - /llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Message-ID: <200711070517.lA75HFkd026387@zion.cs.uiuc.edu> Author: resistor Date: Tue Nov 6 23:17:15 2007 New Revision: 43805 URL: http://llvm.org/viewvc/llvm-project?rev=43805&view=rev Log: Add some more of StrongPHIElim. Modified: llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Modified: llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp?rev=43805&r1=43804&r2=43805&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp (original) +++ llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Tue Nov 6 23:17:15 2007 @@ -89,7 +89,7 @@ void computeDFS(MachineFunction& MF); - void processPHI(MachineInstr* P); + void processBlock(MachineBasicBlock* MBB); std::vector computeDomForest(std::set& instrs); @@ -219,23 +219,85 @@ return ret; } -/// processPHI - Eliminate the given PHI node -void StrongPHIElimination::processPHI(MachineInstr* P) { +/// isLiveIn - helper method that determines, from a VarInfo, if a register +/// is live into a block +bool isLiveIn(LiveVariables::VarInfo& V, MachineBasicBlock* MBB) { + if (V.AliveBlocks.test(MBB->getNumber())) + return true; + + for (std::vector::iterator I = V.Kills.begin(), + E = V.Kills.end(); I != E; ++I) + if ((*I)->getParent() == MBB) + return true; + return false; } -bool StrongPHIElimination::runOnMachineFunction(MachineFunction &Fn) { - computeDFS(Fn); +/// isLiveOut - help method that determines, from a VarInfo, if a register is +/// live out of a block. +bool isLiveOut(LiveVariables::VarInfo& V, MachineBasicBlock* MBB) { + if (V.AliveBlocks.test(MBB->getNumber())) + return true; - for (MachineFunction::iterator I = Fn.begin(), E = Fn.end(); I != E; ++I) { - for (MachineBasicBlock::iterator BI = I->begin(), BE = I->end(); BI != BE; - ++BI) { - if (BI->getOpcode() == TargetInstrInfo::PHI) - processPHI(BI); - else - break; + if (V.DefInst->getParent() == MBB) + return true; + + return false; +} + +/// processBlock - Eliminate PHIs in the given block +void StrongPHIElimination::processBlock(MachineBasicBlock* MBB) { + LiveVariables& LV = getAnalysis(); + + // Holds names that have been added to a set in any PHI within this block + // before the current one. + std::set ProcessedNames; + + MachineBasicBlock::iterator P = MBB->begin(); + while (P->getOpcode() == TargetInstrInfo::PHI) { + LiveVariables::VarInfo& PHIInfo = LV.getVarInfo(P->getOperand(0).getReg()); + + // Hold the names that are currently in the candidate set. + std::set PHIUnion; + std::set UnionedBlocks; + + for (int i = P->getNumOperands() - 1; i >= 2; i-=2) { + unsigned SrcReg = P->getOperand(i-1).getReg(); + LiveVariables::VarInfo& SrcInfo = LV.getVarInfo(SrcReg); + + if (isLiveIn(SrcInfo, P->getParent())) { + // add a copy from a_i to p in Waiting[From[a_i]] + } else if (isLiveOut(PHIInfo, SrcInfo.DefInst->getParent())) { + // add a copy to Waiting[From[a_i]] + } else if (PHIInfo.DefInst->getOpcode() == TargetInstrInfo::PHI && + isLiveIn(PHIInfo, SrcInfo.DefInst->getParent())) { + // add a copy to Waiting[From[a_i]] + } else if (ProcessedNames.count(SrcReg)) { + // add a copy to Waiting[From[a_i]] + } else if (UnionedBlocks.count(SrcInfo.DefInst->getParent())) { + // add a copy to Waiting[From[a_i]] + } else { + PHIUnion.insert(SrcReg); + UnionedBlocks.insert(SrcInfo.DefInst->getParent()); + + // DO STUFF HERE + + } + + ProcessedNames.insert(PHIUnion.begin(), PHIUnion.end()); } + + ++P; } +} + +bool StrongPHIElimination::runOnMachineFunction(MachineFunction &Fn) { + computeDFS(Fn); + + for (MachineFunction::iterator I = Fn.begin(), E = Fn.end(); I != E; ++I) + if (!I->empty() && + I->begin()->getOpcode() == TargetInstrInfo::PHI) + processBlock(I); return false; } From sabre at nondot.org Tue Nov 6 23:28:43 2007 From: sabre at nondot.org (Chris Lattner) Date: Wed, 07 Nov 2007 05:28:43 -0000 Subject: [llvm-commits] [llvm] r43807 - /llvm/trunk/docs/tutorial/LangImpl4.html Message-ID: <200711070528.lA75Shc4027022@zion.cs.uiuc.edu> Author: lattner Date: Tue Nov 6 23:28:43 2007 New Revision: 43807 URL: http://llvm.org/viewvc/llvm-project?rev=43807&view=rev Log: minor edits Modified: llvm/trunk/docs/tutorial/LangImpl4.html Modified: llvm/trunk/docs/tutorial/LangImpl4.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl4.html?rev=43807&r1=43806&r2=43807&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl4.html (original) +++ llvm/trunk/docs/tutorial/LangImpl4.html Tue Nov 6 23:28:43 2007 @@ -39,8 +39,8 @@

    Welcome to Chapter 4 of the "Implementing a language -with LLVM" tutorial. Parts 1-3 described the implementation of a simple -language and included support for generating LLVM IR. This chapter describes +with LLVM" tutorial. Chapters 1-3 described the implementation of a simple +language and added support for generating LLVM IR. This chapter describes two new techniques: adding optimizer support to your language, and adding JIT compiler support. This shows how to get nice efficient code for your language.

    @@ -109,7 +109,7 @@
    -

    Well, that was easy. :) In practice, we recommend always using +

    Well, that was easy :). In practice, we recommend always using LLVMFoldingBuilder when generating code like this. It has no "syntactic overhead" for its use (you don't have to uglify your compiler with constant checks everywhere) and it can dramatically reduce the amount of @@ -166,7 +166,8 @@ supports and includes "per-function" passes which just operate on a single function at a time, without looking at other functions. For more information on passes and how the get run, see the How -to Write a Pass document.

    +to Write a Pass document and the List of LLVM +Passes.

    For Kaleidoscope, we are currently generating functions on the fly, one at a time, as the user types them in. We aren't shooting for the ultimate @@ -212,7 +213,7 @@ that we're not going to take advantage of here, so I won't dive into what it is all about.

    -

    The meat of the matter is the definition of the "OurFPM". It +

    The meat of the matter is the definition of "OurFPM". It requires a pointer to the Module (through the ModuleProvider) to construct itself. Once it is set up, we use a series of "add" calls to add a bunch of LLVM passes. The first pass is basically boilerplate, it adds a pass @@ -222,10 +223,10 @@

    In this case, we choose to add 4 optimization passes. The passes we chose here are a pretty standard set of "cleanup" optimizations that are useful for -a wide variety of code. I won't delve into what they do, but believe that they -are a good starting place.

    +a wide variety of code. I won't delve into what they do, but believe me that +they are a good starting place :).

    -

    Once the passmanager, is set up, we need to make use of it. We do this by +

    Once the PassManager is set up, we need to make use of it. We do this by running it after our newly created function is constructed (in FunctionAST::Codegen), but before it is returned to the client:

    @@ -238,8 +239,8 @@ // Validate the generated code, checking for consistency. verifyFunction(*TheFunction); - // Optimize the function. - TheFPM->run(*TheFunction); + // Optimize the function. + TheFPM->run(*TheFunction); return TheFunction; } @@ -265,7 +266,7 @@

    As expected, we now get our nicely optimized code, saving a floating point -add from the program.

    +add instruction from every execution of this function.

    LLVM provides a wide variety of optimizations that can be used in certain circumstances. Some documentation about the various @@ -286,15 +287,15 @@

    -

    Once the code is available in LLVM IR form a wide variety of tools can be +

    Code that is available in LLVM IR can have a wide variety of tools applied to it. For example, you can run optimizations on it (as we did above), you can dump it out in textual or binary forms, you can compile the code to an assembly file (.s) for some target, or you can JIT compile it. The nice thing -about the LLVM IR representation is that it is the common currency between many -different parts of the compiler. +about the LLVM IR representation is that it is the "common currency" between +many different parts of the compiler.

    -

    In this chapter, we'll add JIT compiler support to our interpreter. The +

    In this section, we'll add JIT compiler support to our interpreter. The basic idea that we want for Kaleidoscope is to have the user enter function bodies as they do now, but immediately evaluate the top-level expressions they type in. For example, if they type in "1 + 2;", we should evaluate and print @@ -306,12 +307,12 @@

    -static ExecutionEngine *TheExecutionEngine;
    +static ExecutionEngine *TheExecutionEngine;
     ...
     int main() {
       ..
    -  // Create the JIT.
    -  TheExecutionEngine = ExecutionEngine::create(TheModule);
    +  // Create the JIT.
    +  TheExecutionEngine = ExecutionEngine::create(TheModule);
       ..
     }
     
    @@ -337,13 +338,13 @@ if (Function *LF = F->Codegen()) { LF->dump(); // Dump the function for exposition purposes. - // JIT the function, returning a function pointer. + // JIT the function, returning a function pointer. void *FPtr = TheExecutionEngine->getPointerToFunction(LF); // Cast it to the right type (takes no arguments, returns a double) so we // can call it as a native function. double (*FP)() = (double (*)())FPtr; - fprintf(stderr, "Evaluated to %f\n", FP()); + fprintf(stderr, "Evaluated to %f\n", FP()); }
    @@ -404,9 +405,9 @@

    What actually happened here is that the anonymous function is JIT'd when requested. When the Kaleidoscope app calls through the function pointer that is returned, the anonymous function starts executing. It ends up -making the call for the "testfunc" function, and ends up in a stub that invokes +making the call to the "testfunc" function, and ends up in a stub that invokes the JIT, lazily, on testfunc. Once the JIT finishes lazily compiling testfunc, -it returns and the code reexecutes the call.

    +it returns and the code re-executes the call.

    In summary, the JIT will lazily JIT code on the fly as it is needed. The JIT provides a number of other more advanced interfaces for things like freeing @@ -445,11 +446,13 @@

    -

    Whoa, how does the JIT know about sin and cos? The answer is simple: in this +

    Whoa, how does the JIT know about sin and cos? The answer is surprisingly +simple: in this example, the JIT started execution of a function and got to a function call. It realized that the function was not yet JIT compiled and invoked the standard set of routines to resolve the function. In this case, there is no body defined -for the function, so the JIT ended up calling "dlsym("sin")" on itself. +for the function, so the JIT ended up calling "dlsym("sin")" on the +Kaleidoscope process itself. Since "sin" is defined within the JIT's address space, it simply patches up calls in the module to call the libm version of sin directly.

    @@ -479,7 +482,7 @@

    Now we can produce simple output to the console by using things like: "extern putchard(x); putchard(120);", which prints a lowercase 'x' on -the console (120 is the ascii code for 'x'). Similar code could be used to +the console (120 is the ASCII code for 'x'). Similar code could be used to implement file I/O, console input, and many other capabilities in Kaleidoscope.

    From sabre at nondot.org Tue Nov 6 23:47:49 2007 From: sabre at nondot.org (Chris Lattner) Date: Wed, 07 Nov 2007 05:47:49 -0000 Subject: [llvm-commits] [llvm] r43808 - /llvm/trunk/docs/tutorial/LangImpl5.html Message-ID: <200711070547.lA75lnS5028072@zion.cs.uiuc.edu> Author: lattner Date: Tue Nov 6 23:47:48 2007 New Revision: 43808 URL: http://llvm.org/viewvc/llvm-project?rev=43808&view=rev Log: edits for chapter 5 Modified: llvm/trunk/docs/tutorial/LangImpl5.html Modified: llvm/trunk/docs/tutorial/LangImpl5.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl5.html?rev=43808&r1=43807&r2=43808&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl5.html (original) +++ llvm/trunk/docs/tutorial/LangImpl5.html Tue Nov 6 23:47:48 2007 @@ -60,7 +60,7 @@ mostly useless: it has no control flow other than call and return. This means that you can't have conditional branches in the code, significantly limiting its power. In this episode of "build that compiler", we'll extend Kaleidoscope to -have an if/then/else expression plus a simple looping construct.

    +have an if/then/else expression plus a simple 'for' loop.

    @@ -98,7 +98,8 @@ was resolved. This is very similar to the C "?:" expression.

    The semantics of the if/then/else expression is that it first evaluates the -condition to a boolean equality value: 0.0 is false and everything else is true. +condition to a boolean equality value: 0.0 is considered to be false and +everything else is considered to be true. If the condition is true, the first subexpression is evaluated and returned, if the condition is false, the second subexpression is evaluated and returned. Since Kaleidoscope allows side-effects, this behavior is important to nail down. @@ -238,7 +239,7 @@

    Now that we have it parsing and building the AST, the final piece is adding LLVM code generation support. This is the most interesting part of the if/then/else example, because this is where it starts to introduce new concepts. -All of the code above has been described in previous chapters fairly thoroughly. +All of the code above has been thoroughly described in previous chapters.

    To motivate the code we want to produce, lets take a look at a simple @@ -298,12 +299,12 @@

    Coming back to the generated code, it is fairly simple: the entry block evaluates the conditional expression ("x" in our case here) and compares the result to 0.0 with the "fcmp one" -instruction ('one' is "ordered and not equal"). Based on the result of this +instruction ('one' is "Ordered and Not Equal"). Based on the result of this expression, the code jumps to either the "then" or "else" blocks, which contain -the expressions for the true/false case.

    +the expressions for the true/false cases.

    Once the then/else blocks is finished executing, they both branch back to the -else block to execute the code that happens after the if/then/else. In this +'ifcont' block to execute the code that happens after the if/then/else. In this case the only thing left to do is to return to the caller of the function. The question then becomes: how does the code know which expression to return?

    @@ -388,7 +389,7 @@

    This code creates the basic blocks that are related to the if/then/else statement, and correspond directly to the blocks in the example above. The -first line of this gets the current Function object that is being built. It +first line gets the current Function object that is being built. It gets this by asking the builder for the current BasicBlock, and asking that block for its "parent" (the function it is currently embedded into).

    @@ -571,7 +572,7 @@

    The AST node is similarly simple. It basically boils down to capturing -the variable name and the consituent expressions in the node.

    +the variable name and the constituent expressions in the node.

    @@ -658,8 +659,8 @@
     

    Now we get to the good part: the LLVM IR we want to generate for this thing. -With the simple example above, we get this LLVM IR (note that this dump is -generated with optimizations disabled): +With the simple example above, we get this LLVM IR (note that I generated this +dump is generated with optimizations disabled for clarity):

    @@ -718,7 +719,7 @@

    With this out of the way, the next step is to set up the LLVM basic block for the start of the loop body. In the case above, the whole loop body is one block, but remember that the body code itself could consist of multiple blocks -(e.g. if it is a if/then/else expression).

    +(e.g. if it contains an if/then/else or a for/in expression).

    @@ -751,7 +752,7 @@
     
     

    Now that the "preheader" for the loop is set up, we switch to emitting code for the loop body. To begin with, we move the insertion point and create the -PHI node for the loop induction variable. SInce we already know the incoming +PHI node for the loop induction variable. Since we already know the incoming value for the starting value, we add it to the Phi node. Note that the Phi will eventually get a second value for the backedge, but we can't set it up yet (because it doesn't exist!).

    From sabre at nondot.org Wed Nov 7 00:06:39 2007 From: sabre at nondot.org (Chris Lattner) Date: Wed, 07 Nov 2007 06:06:39 -0000 Subject: [llvm-commits] [llvm] r43810 - /llvm/trunk/docs/tutorial/LangImpl6.html Message-ID: <200711070606.lA766dmv029530@zion.cs.uiuc.edu> Author: lattner Date: Wed Nov 7 00:06:38 2007 New Revision: 43810 URL: http://llvm.org/viewvc/llvm-project?rev=43810&view=rev Log: edits for chapter 7 Modified: llvm/trunk/docs/tutorial/LangImpl6.html Modified: llvm/trunk/docs/tutorial/LangImpl6.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl6.html?rev=43810&r1=43809&r2=43810&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl6.html (original) +++ llvm/trunk/docs/tutorial/LangImpl6.html Wed Nov 7 00:06:38 2007 @@ -52,9 +52,9 @@ decide what is good or bad. In this tutorial we'll assume that it is okay and use this as a way to show some interesting parsing techniques.

    -

    At the end of this tutorial, we'll run through a nice -little example that shows an example application that you can build with -Kaleidoscope and the feature set it now has.

    +

    At the end of this tutorial, we'll run through an example Kaleidoscope +application that renders the Mandelbrot set. This gives +an example of what you can build with Kaleidoscope and its feature set.

    @@ -69,8 +69,8 @@ languages like C++. In C++, you are only allowed to redefine existing operators: you can't programatically change the grammar, introduce new operators, change precedence levels, etc. In this chapter, we will add this -capability to Kaleidoscope, which will allow us to round out the set of -operators that are supported, culminating in a more interesting example app.

    +capability to Kaleidoscope, which will let the user round out the set of +operators that are supported.

    The point of going into user-defined operators in a tutorial like this is to show the power and flexibility of using a hand-written parser. The parser we @@ -262,7 +262,7 @@ that sets up FnName for binary operators. This builds names like "binary@" for a newly defined "@" operator. This takes advantage of the fact that symbol names in the LLVM symbol table are allowed to have any character in -them, inluding embedded nul characters.

    +them, even including embedded nul characters.

    The next interesting piece is codegen support for these binary operators. Given our current structure, this is a simple addition of a default case for our @@ -335,7 +335,7 @@

    With that, we have useful user-defined binary operators. This builds a lot on the previous framework we built for other operators. Adding unary operators -is a bit more challenging, because we don't have any framework for it yet, lets +is a bit more challenging, because we don't have any framework for it yet - lets see what it takes.

    @@ -347,7 +347,7 @@

    Since we don't currently support unary operators in the Kaleidoscope -langugage, we'll need to add everything for them. Above, we added simple +language, we'll need to add everything for them. Above, we added simple support for the 'unary' keyword to the lexer. In addition to that, we need an AST node:

    @@ -530,8 +530,7 @@ def unary-(v) 0-v; -# Define > with the same precedence as >. We could also easily define -# <= etc. +# Define > with the same precedence as >. def binary> 10 (LHS RHS) !(LHS < RHS); @@ -615,13 +614,13 @@ mandelconverge function returns the number of iterations that it takes for a complex orbit to escape, saturating to 255. This is not a very useful function by itself, but if you plot its value over a two-dimensional plane, -you can see the mandelbrot set. Given that we are limited to using putchard +you can see the Mandelbrot set. Given that we are limited to using putchard here, our amazing graphical output is limited, but we can whip together something using the density plotter above:

    -# compute and plot the mandlebrot set with the specified 2 dimentional range
    +# compute and plot the mandlebrot set with the specified 2 dimensional range
     # info.
     def mandelhelp(xmin xmax xstep   ymin ymax ystep)
       for y = ymin, y < ymax, ystep in (
    @@ -631,7 +630,7 @@
       )
      
     # mandel - This is a convenient helper function for ploting the mandelbrot set
    -# from the specified position with the specified magnification.
    +# from the specified position with the specified Magnification.
     def mandel(realstart imagstart realmag imagmag) 
       mandelhelp(realstart, realstart+realmag*78, realmag,
                  imagstart, imagstart+imagmag*40, imagmag);
    @@ -782,12 +781,12 @@
     

    With this, we conclude the "adding user-defined operators" chapter of the tutorial. We successfully extended our language with the ability to extend the language in the library, and showed how this can be used to build a simple but -interesting end user application in Kaleidoscope. At this point, Kaleidoscope +interesting end-user application in Kaleidoscope. At this point, Kaleidoscope can build a variety of applications that are functional and can call functions with side-effects, but it can't actually define and mutate a variable itself.

    -

    Strikingly, lack of this feature is an important limitation for some +

    Strikingly, variable mutation is an important feature of some languages, and it is not at all obvious how to add support for mutable variables without having to add an "SSA construction" phase to your front-end. In the next chapter, we will describe how you can From sabre at nondot.org Wed Nov 7 00:34:42 2007 From: sabre at nondot.org (Chris Lattner) Date: Wed, 07 Nov 2007 06:34:42 -0000 Subject: [llvm-commits] [llvm] r43811 - /llvm/trunk/docs/tutorial/LangImpl7.html Message-ID: <200711070634.lA76Yg4M031883@zion.cs.uiuc.edu> Author: lattner Date: Wed Nov 7 00:34:39 2007 New Revision: 43811 URL: http://llvm.org/viewvc/llvm-project?rev=43811&view=rev Log: chapter 7 edits Modified: llvm/trunk/docs/tutorial/LangImpl7.html Modified: llvm/trunk/docs/tutorial/LangImpl7.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl7.html?rev=43811&r1=43810&r2=43811&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl7.html (original) +++ llvm/trunk/docs/tutorial/LangImpl7.html Wed Nov 7 00:34:39 2007 @@ -172,7 +172,7 @@

    -define i32 @test(i1 %Condition) {
    +define i32 @example() {
     entry:
     	%X = alloca i32           ; type of %X is i32*.
     	...
    @@ -261,7 +261,7 @@
     
     

    The mem2reg pass implements the standard "iterated dominator frontier" algorithm for constructing SSA form and has a number of optimizations that speed -up very common degenerate cases. mem2reg really is the answer for dealing with +up (very common) degenerate cases. mem2reg is the answer for dealing with mutable variables, and we highly recommend that you depend on it. Note that mem2reg only works on variables in certain circumstances:

    @@ -337,7 +337,7 @@

    While the first item is really what this is about, we only have variables -for incoming arguments and for induction variables, and redefining them only +for incoming arguments and for induction variables, and redefining those only goes so far :). Also, the ability to define new variables is a useful thing regardless of whether you will be mutating them. Here's a motivating example that shows how we could use these:

    @@ -358,7 +358,7 @@ # Iterative fib. def fibi(x) var a = 1, b = 1, c in - (for i = 3, i &;t; x in + (for i = 3, i < x in c = a + b : a = b : b = c) : @@ -446,8 +446,8 @@ Value *V = NamedValues[Name]; if (V == 0) return ErrorV("Unknown variable name"); - // Load the value. - return Builder.CreateLoad(V, Name.c_str()); + // Load the value. + return Builder.CreateLoad(V, Name.c_str()); }
    @@ -688,7 +688,8 @@

    Unlike the rest of the binary operators, our assignment operator doesn't follow the "emit LHS, emit RHS, do computation" model. As such, it is handled as a special case before the other binary operators are handled. The other -strange thing about it is that it requires the LHS to be a variable directly. +strange thing is that it requires the LHS to be a variable. It is invalid to +have "(x+1) = expr" - only things like "x = expr" are allowed.

    @@ -775,7 +776,7 @@

    The next step is to define the AST node that we will construct. For var/in, -it will look like this:

    +it looks like this:

    @@ -796,7 +797,7 @@
     

    var/in allows a list of names to be defined all at once, and each name can optionally have an initializer value. As such, we capture this information in the VarNames vector. Also, var/in has a body, this body is allowed to access -the variables defined by the let/in.

    +the variables defined by the var/in.

    With this ready, we can define the parser pieces. First thing we do is add it as a primary expression:

    From sabre at nondot.org Wed Nov 7 00:46:52 2007 From: sabre at nondot.org (Chris Lattner) Date: Wed, 07 Nov 2007 06:46:52 -0000 Subject: [llvm-commits] [llvm] r43812 - /llvm/trunk/docs/tutorial/LangImpl8.html Message-ID: <200711070646.lA76kqlH000334@zion.cs.uiuc.edu> Author: lattner Date: Wed Nov 7 00:46:51 2007 New Revision: 43812 URL: http://llvm.org/viewvc/llvm-project?rev=43812&view=rev Log: final edits. Modified: llvm/trunk/docs/tutorial/LangImpl8.html Modified: llvm/trunk/docs/tutorial/LangImpl8.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/LangImpl8.html?rev=43812&r1=43811&r2=43812&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/LangImpl8.html (original) +++ llvm/trunk/docs/tutorial/LangImpl8.html Wed Nov 7 00:46:51 2007 @@ -88,9 +88,9 @@ extending the type system in all sorts of interesting ways. Simple arrays are very easy and are quite useful for many different applications. Adding them is mostly an exercise in learning how the LLVM getelementptr instruction works. -The getelementptr instruction is so nifty/unconventional, it has its own FAQ!). If you add support +href="../LangRef.html#i_getelementptr">getelementptr instruction works: it +is so nifty/unconventional, it has its own FAQ! If you add support for recursive types (e.g. linked lists), make sure to read the section in the LLVM Programmer's Manual that describes how to construct them. @@ -160,8 +160,8 @@
    -

    We have a couple common questions about code in the LLVM IR form, lets just -get these out of the way right now shall we?

    +

    We have a couple common questions about code in the LLVM IR form - lets just +get these out of the way right now, shall we?

    @@ -177,7 +177,7 @@ languages have this property, e.g. lisp, java, haskell, javascript, python, etc (note that while these languages are portable, not all their libraries are).

    -

    One nice aspect of LLVM is that it is often capable of preserving language +

    One nice aspect of LLVM is that it is often capable of preserving target independence in the IR: you can take the LLVM IR for a Kaleidoscope-compiled program and run it on any target that LLVM supports, even emitting C code and compiling that on targets that LLVM doesn't support natively. You can trivially @@ -215,7 +215,7 @@ you are willing to fix primitive types to a fixed size (say int = 32-bits, and long = 64-bits), don't care about ABI compatibility with existing binaries, and are willing to give up some other minor features, you can have portable -code. This can even make real sense for specialized domains such as an +code. This can make sense for specialized domains such as an in-kernel language.

    @@ -227,7 +227,8 @@

    Many of the languages above are also "safe" languages: it is impossible for -a program written in Java to corrupt its address space and crash the process. +a program written in Java to corrupt its address space and crash the process +(assuming the JVM has no bugs). Safety is an interesting property that requires a combination of language design, runtime support, and often operating system support.

    @@ -277,13 +278,13 @@ aliasing, etc. Many of the enhancements are user-driven: people want LLVM to do some specific feature, so they go ahead and extend it to do so.

    -

    Third, it is certainly possible to add language-specific +

    Third, it is possible and easy to add language-specific optimizations, and you have a number of choices in how to do it. As one trivial -example, it is possible to add language-specific optimization passes that +example, it is easy to add language-specific optimization passes that "know" things about code compiled for a language. In the case of the C family, -there is an optimziation pass that "knows" about the standard C library +there is an optimization pass that "knows" about the standard C library functions. If you call "exit(0)" in main(), it knows that it is safe to -optimize that into "return 0;" for example, because C specifies what the 'exit' +optimize that into "return 0;" because C specifies what the 'exit' function does.

    In addition to simple library knowledge, it is possible to embed a variety of From sabre at nondot.org Wed Nov 7 01:07:56 2007 From: sabre at nondot.org (Chris Lattner) Date: Wed, 07 Nov 2007 07:07:56 -0000 Subject: [llvm-commits] [llvm] r43813 - /llvm/trunk/docs/tutorial/index.html Message-ID: <200711070707.lA777u9Q001837@zion.cs.uiuc.edu> Author: lattner Date: Wed Nov 7 01:07:55 2007 New Revision: 43813 URL: http://llvm.org/viewvc/llvm-project?rev=43813&view=rev Log: minor edit Modified: llvm/trunk/docs/tutorial/index.html Modified: llvm/trunk/docs/tutorial/index.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/tutorial/index.html?rev=43813&r1=43812&r2=43813&view=diff ============================================================================== --- llvm/trunk/docs/tutorial/index.html (original) +++ llvm/trunk/docs/tutorial/index.html Wed Nov 7 01:07:55 2007 @@ -25,7 +25,7 @@

  • Invoking the JIT
  • -
  • Implementing a language with LLVM: Kaleidoscope +
  • Kaleidoscope: Implementing a Language with LLVM
    1. Tutorial Introduction and the Lexer
    2. Implementing a Parser and AST
    3. From evan.cheng at apple.com Wed Nov 7 01:10:16 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Tue, 6 Nov 2007 23:10:16 -0800 Subject: [llvm-commits] [llvm] r43805 - /llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp In-Reply-To: <200711070517.lA75HFkd026387@zion.cs.uiuc.edu> References: <200711070517.lA75HFkd026387@zion.cs.uiuc.edu> Message-ID: <9F2C0B7F-E3DA-4EB6-AA1A-BA8DB79128DE@apple.com> Hi Owen, Please use SmallPtrSet and / or SmallSet instead of std::set. Thanks, Evan On Nov 6, 2007, at 9:17 PM, Owen Anderson wrote: > Author: resistor > Date: Tue Nov 6 23:17:15 2007 > New Revision: 43805 > > URL: http://llvm.org/viewvc/llvm-project?rev=43805&view=rev > Log: > Add some more of StrongPHIElim. > > Modified: > llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp > > Modified: llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/ > StrongPHIElimination.cpp?rev=43805&r1=43804&r2=43805&view=diff > > ====================================================================== > ======== > --- llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp (original) > +++ llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Tue Nov 6 > 23:17:15 2007 > @@ -89,7 +89,7 @@ > > > void computeDFS(MachineFunction& MF); > - void processPHI(MachineInstr* P); > + void processBlock(MachineBasicBlock* MBB); > > std::vector computeDomForest > (std::set& instrs); > > @@ -219,23 +219,85 @@ > return ret; > } > > -/// processPHI - Eliminate the given PHI node > -void StrongPHIElimination::processPHI(MachineInstr* P) { > +/// isLiveIn - helper method that determines, from a VarInfo, if a > register > +/// is live into a block > +bool isLiveIn(LiveVariables::VarInfo& V, MachineBasicBlock* MBB) { > + if (V.AliveBlocks.test(MBB->getNumber())) > + return true; > + > + for (std::vector::iterator I = V.Kills.begin(), > + E = V.Kills.end(); I != E; ++I) > + if ((*I)->getParent() == MBB) > + return true; > > + return false; > } > > -bool StrongPHIElimination::runOnMachineFunction(MachineFunction > &Fn) { > - computeDFS(Fn); > +/// isLiveOut - help method that determines, from a VarInfo, if a > register is > +/// live out of a block. > +bool isLiveOut(LiveVariables::VarInfo& V, MachineBasicBlock* MBB) { > + if (V.AliveBlocks.test(MBB->getNumber())) > + return true; > > - for (MachineFunction::iterator I = Fn.begin(), E = Fn.end(); I ! > = E; ++I) { > - for (MachineBasicBlock::iterator BI = I->begin(), BE = I->end > (); BI != BE; > - ++BI) { > - if (BI->getOpcode() == TargetInstrInfo::PHI) > - processPHI(BI); > - else > - break; > + if (V.DefInst->getParent() == MBB) > + return true; > + > + return false; > +} > + > +/// processBlock - Eliminate PHIs in the given block > +void StrongPHIElimination::processBlock(MachineBasicBlock* MBB) { > + LiveVariables& LV = getAnalysis(); > + > + // Holds names that have been added to a set in any PHI within > this block > + // before the current one. > + std::set ProcessedNames; > + > + MachineBasicBlock::iterator P = MBB->begin(); > + while (P->getOpcode() == TargetInstrInfo::PHI) { > + LiveVariables::VarInfo& PHIInfo = LV.getVarInfo(P->getOperand > (0).getReg()); > + > + // Hold the names that are currently in the candidate set. > + std::set PHIUnion; > + std::set UnionedBlocks; > + > + for (int i = P->getNumOperands() - 1; i >= 2; i-=2) { > + unsigned SrcReg = P->getOperand(i-1).getReg(); > + LiveVariables::VarInfo& SrcInfo = LV.getVarInfo(SrcReg); > + > + if (isLiveIn(SrcInfo, P->getParent())) { > + // add a copy from a_i to p in Waiting[From[a_i]] > + } else if (isLiveOut(PHIInfo, SrcInfo.DefInst->getParent())) { > + // add a copy to Waiting[From[a_i]] > + } else if (PHIInfo.DefInst->getOpcode() == > TargetInstrInfo::PHI && > + isLiveIn(PHIInfo, SrcInfo.DefInst->getParent())) { > + // add a copy to Waiting[From[a_i]] > + } else if (ProcessedNames.count(SrcReg)) { > + // add a copy to Waiting[From[a_i]] > + } else if (UnionedBlocks.count(SrcInfo.DefInst->getParent())) { > + // add a copy to Waiting[From[a_i]] > + } else { > + PHIUnion.insert(SrcReg); > + UnionedBlocks.insert(SrcInfo.DefInst->getParent()); > + > + // DO STUFF HERE > + > + } > + > + ProcessedNames.insert(PHIUnion.begin(), PHIUnion.end()); > } > + > + ++P; > } > +} > + > +bool StrongPHIElimination::runOnMachineFunction(MachineFunction > &Fn) { > + computeDFS(Fn); > + > + for (MachineFunction::iterator I = Fn.begin(), E = Fn.end(); I ! > = E; ++I) > + if (!I->empty() && > + I->begin()->getOpcode() == TargetInstrInfo::PHI) > + processBlock(I); > > return false; > } > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From resistor at mac.com Wed Nov 7 01:26:42 2007 From: resistor at mac.com (Owen Anderson) Date: Wed, 7 Nov 2007 01:26:42 -0600 Subject: [llvm-commits] RE [llvm] r43805 - /llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Message-ID: <9F98F260-4555-4A4A-B71B-B6A079064C57@mac.com> Evan, I may end up using a BitVector or SparseBitVector in the future. I was just going with an std::set for simplicity until I'm sure I won't be changing it further. By the way, could you check that isLiveIn() and isLiveOut() are correctly? I _think_ I got VarInfo figured out, but I'm not confident. --Owen -------------- 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/20071107/a354d634/attachment.bin From evan.cheng at apple.com Wed Nov 7 02:08:25 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Wed, 07 Nov 2007 08:08:25 -0000 Subject: [llvm-commits] [llvm] r43819 - /llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp Message-ID: <200711070808.lA788P3g005822@zion.cs.uiuc.edu> Author: evancheng Date: Wed Nov 7 02:08:25 2007 New Revision: 43819 URL: http://llvm.org/viewvc/llvm-project?rev=43819&view=rev Log: Simplify my (il)logic. Modified: llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp Modified: llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp?rev=43819&r1=43818&r2=43819&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp (original) +++ llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp Wed Nov 7 02:08:25 2007 @@ -316,6 +316,7 @@ if (!mop.isRegister()) continue; unsigned Reg = mop.getReg(); + unsigned RegI = Reg; if (Reg == 0 || MRegisterInfo::isPhysicalRegister(Reg)) continue; bool isSubReg = RegMap->isSubRegister(Reg); @@ -381,17 +382,7 @@ unsigned RegJ = MI->getOperand(j).getReg(); if (RegJ == 0 || MRegisterInfo::isPhysicalRegister(RegJ)) continue; - bool isSubRegJ = RegMap->isSubRegister(RegJ); - if (isSubRegJ) { - assert(!isSubReg || RegMap->getSubRegisterIndex(RegJ) == SubIdx); - RegJ = RegMap->getSuperRegister(RegJ); - } - // Important to check "isSubRegJ == isSubReg". - // e.g. %reg1024 = MOVSX32rr16 %reg1025. It's possible that both - // registers are coalesced to the same register but only %reg1025 is - // a sub-register use. They should not be rewritten to the same - // register. - if (RegJ == li.reg && isSubRegJ == isSubReg) { + if (RegJ == RegI) { MI->getOperand(j).setReg(NewVReg); HasUse |= MI->getOperand(j).isUse(); HasDef |= MI->getOperand(j).isDef(); From baldrick at free.fr Wed Nov 7 02:25:14 2007 From: baldrick at free.fr (Duncan Sands) Date: Wed, 7 Nov 2007 09:25:14 +0100 Subject: [llvm-commits] [llvm] r43421 - in /llvm/trunk: include/llvm/Support/Alignment.h lib/CodeGen/SelectionDAG/DAGCombiner.cpp lib/CodeGen/SelectionDAG/LegalizeDAG.cpp lib/CodeGen/SelectionDAG/LegalizeDAGTypes.cpp In-Reply-To: References: <200710281259.l9SCxkBh003841@zion.cs.uiuc.edu> Message-ID: <200711070925.15106.baldrick@free.fr> Hi Chris, > instead of introducing a new header file for this, would it make > sense to merge into MathExtras.h? I considered that but (1) it would pull in the rest of MathExtras, for some compile time cost (maybe tiny) and (2) it would need to have a "math" name (like pow2_gcd), which would make the use of it more obscure. Which is more readable: MinAlign(Align, Offset) or pow2_gcd(Align, Offset) ? That said, I'm happy to put it in MathExtras if you think that better. Ciao, Duncan. From baldrick at free.fr Wed Nov 7 02:46:48 2007 From: baldrick at free.fr (Duncan Sands) Date: Wed, 7 Nov 2007 09:46:48 +0100 Subject: [llvm-commits] [llvm-gcc-4.2] r43399 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp In-Reply-To: <16e5fdf90711061606t79b5f100p7f0afd206bd2daf3@mail.gmail.com> References: <200710262027.l9QKRSbh024383@zion.cs.uiuc.edu> <200710262331.05985.baldrick@free.fr> <16e5fdf90711061606t79b5f100p7f0afd206bd2daf3@mail.gmail.com> Message-ID: <200711070946.48420.baldrick@free.fr> Hi Bill, the following testcase shows another problem: struct A { int a[1024]; }; void g(struct A *a, struct A *b) { *a = *b; } struct A c; int main(void) { g(&c, &c); } Note that llvm-gcc generates a memcpy for the *a = *b assignment, but it should be memmove since *a and *b may be the same (as they are in this case). Ciao, Duncan. PS: on some machines memcpy goes faster if you zero out the destination before doing the copy. This shows why doing a memcpy of p to p is a bad idea! From baldrick at free.fr Wed Nov 7 03:20:28 2007 From: baldrick at free.fr (Duncan Sands) Date: Wed, 7 Nov 2007 10:20:28 +0100 Subject: [llvm-commits] [llvm-gcc-4.2] r43399 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp In-Reply-To: <16e5fdf90711061606t79b5f100p7f0afd206bd2daf3@mail.gmail.com> References: <200710262027.l9QKRSbh024383@zion.cs.uiuc.edu> <200710262331.05985.baldrick@free.fr> <16e5fdf90711061606t79b5f100p7f0afd206bd2daf3@mail.gmail.com> Message-ID: <200711071020.28920.baldrick@free.fr> Hi Bill, > Does this help? :-) the tree dumps weren't very informative! :) Here is a testcase that seems to show the same kind of problem, and works on my machine: struct A { int a[11]; }; void Qux() { static struct A C = {0}; struct A __attribute__ ((aligned (1))) Bar; Bar = C; } Can you please confirm that this is the problem you are talking about? Thanks, Duncan. From isanbard at gmail.com Wed Nov 7 03:40:21 2007 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 7 Nov 2007 01:40:21 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r43399 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp In-Reply-To: <200711071020.28920.baldrick@free.fr> References: <200710262027.l9QKRSbh024383@zion.cs.uiuc.edu> <200710262331.05985.baldrick@free.fr> <16e5fdf90711061606t79b5f100p7f0afd206bd2daf3@mail.gmail.com> <200711071020.28920.baldrick@free.fr> Message-ID: <3E3382D7-11B1-49F2-B1F3-174A475E1500@gmail.com> On Nov 7, 2007, at 1:20 AM, Duncan Sands wrote: > Hi Bill, > >> Does this help? :-) > > the tree dumps weren't very informative! :) Yeah...there weren't that many that were dumped. :-) > Here is a testcase that seems to show the same kind of problem, and > works on my machine: > > struct A > { > int a[11]; > }; > > void Qux() { > static struct A C = {0}; > struct A __attribute__ ((aligned (1))) Bar; > > Bar = C; > } > > Can you please confirm that this is the problem you are talking about? > No, this doesn't give the assert. :-( -bw From baldrick at free.fr Wed Nov 7 03:47:33 2007 From: baldrick at free.fr (Duncan Sands) Date: Wed, 7 Nov 2007 10:47:33 +0100 Subject: [llvm-commits] [llvm-gcc-4.2] r43399 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp In-Reply-To: <3E3382D7-11B1-49F2-B1F3-174A475E1500@gmail.com> References: <200710262027.l9QKRSbh024383@zion.cs.uiuc.edu> <200711071020.28920.baldrick@free.fr> <3E3382D7-11B1-49F2-B1F3-174A475E1500@gmail.com> Message-ID: <200711071047.33939.baldrick@free.fr> Hi Bill, > > Can you please confirm that this is the problem you are talking about? > > > No, this doesn't give the assert. :-( the memcpy seems to have the wrong alignment in the LLVM IR. This may or may not lead to an assert later I suppose. I meant: is the memcpy getting the wrong alignment for the same reason as in your testcase. Thanks, Duncan. From isanbard at gmail.com Wed Nov 7 03:56:15 2007 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 7 Nov 2007 01:56:15 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r43399 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp In-Reply-To: <200711071047.33939.baldrick@free.fr> References: <200710262027.l9QKRSbh024383@zion.cs.uiuc.edu> <200711071020.28920.baldrick@free.fr> <3E3382D7-11B1-49F2-B1F3-174A475E1500@gmail.com> <200711071047.33939.baldrick@free.fr> Message-ID: Hi Duncan, >> No, this doesn't give the assert. :-( > > the memcpy seems to have the wrong alignment in the LLVM IR. This > may or may not > lead to an assert later I suppose. That's what's wrong here. We're using the alignment from the source pointer as the alignment for the memcpy, which is wrong for the destination pointer. > I meant: is the memcpy getting the wrong alignment for the same > reason as in your testcase. > I believe so. It should also be asserting, but isn't. There's another discussion of this on LLVM-Dev "RFC: llvm-convert.cpp Patch". No one likes my original patch, but I just wrote another one that might be more palatable. :-) -bw From dalej at apple.com Wed Nov 7 10:14:57 2007 From: dalej at apple.com (Dale Johannesen) Date: Wed, 7 Nov 2007 08:14:57 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r43399 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp In-Reply-To: <200711070946.48420.baldrick@free.fr> References: <200710262027.l9QKRSbh024383@zion.cs.uiuc.edu> <200710262331.05985.baldrick@free.fr> <16e5fdf90711061606t79b5f100p7f0afd206bd2daf3@mail.gmail.com> <200711070946.48420.baldrick@free.fr> Message-ID: <3AAB426E-4CC6-47E0-B59B-721E6FABEC82@apple.com> On Nov 7, 2007, at 12:46 AM, Duncan Sands wrote: > Hi Bill, the following testcase shows another problem: > > struct A > { > int a[1024]; > }; > void g(struct A *a, struct A *b) > { > *a = *b; > } > struct A c; > int main(void) > { > g(&c, &c); > } > > Note that llvm-gcc generates a memcpy for the *a = *b > assignment, but it should be memmove since *a and *b > may be the same (as they are in this case). While that's nonstandard, it's hard to imagine a memcpy implementation that would screw it up. But they can partially overlap: struct A { int a[1024]; } struct B { int x; struct A y; }; union C { struct A x; struct B y; } void g(struct A* a, struct A* b) { *a = *b; } union C u; main(void) { g(&u.x, &u.y.y); I fixed this for structure return values a while back (43324) but you're right that the problem is more general. From vadve at uiuc.edu Wed Nov 7 06:45:41 2007 From: vadve at uiuc.edu (Vikram S. Adve) Date: Wed, 7 Nov 2007 06:45:41 -0600 Subject: [llvm-commits] CVS: llvm-www/sva/index.html In-Reply-To: <6B19C9E6-EAC2-45A2-B888-AECF1822E832@apple.com> References: <200711070216.UAA09744@choi.cs.uiuc.edu> <6B19C9E6-EAC2-45A2-B888-AECF1822E832@apple.com> Message-ID: Yes, we should keep sva-wwww separate from llvm-www. --Vikram http://www.cs.uiuc.edu/~vadve http://llvm.org On Nov 6, 2007, at 10:14 PM, Chris Lattner wrote: > Hey John, > > This should be in a different repository than the main llvm cvs one. > You presumably want this to show up at sva.llvm.org or sva.cs.uiuc.edu > not llvm.org/sva. I'd suggest just making an sva-www repo. > > -Chris > > On Nov 6, 2007, at 6:16 PM, John Criswell wrote: > >> >> >> Changes in directory llvm-www/sva: >> >> index.html added (r1.1) >> --- >> Log message: >> >> Skeleton index page. >> >> >> --- >> Diffs of the changes: (+13 -0) >> >> index.html | 13 +++++++++++++ >> 1 files changed, 13 insertions(+) >> >> >> Index: llvm-www/sva/index.html >> diff -c /dev/null llvm-www/sva/index.html:1.1 >> *** /dev/null Tue Nov 6 20:15:52 2007 >> --- llvm-www/sva/index.html Tue Nov 6 20:15:42 2007 >> *************** >> *** 0 **** >> --- 1,13 ---- >> + >> + >> + >> + Secure Virtual Architecture >> + >> + >> + >> +
      >> +

      Secure Virtual Architecture

      >> +
      >> + >> + >> + >> >> >> >> _______________________________________________ >> llvm-commits mailing list >> llvm-commits at cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits > From clattner at apple.com Wed Nov 7 11:28:30 2007 From: clattner at apple.com (Chris Lattner) Date: Wed, 7 Nov 2007 09:28:30 -0800 Subject: [llvm-commits] [llvm] r43421 - in /llvm/trunk: include/llvm/Support/Alignment.h lib/CodeGen/SelectionDAG/DAGCombiner.cpp lib/CodeGen/SelectionDAG/LegalizeDAG.cpp lib/CodeGen/SelectionDAG/LegalizeDAGTypes.cpp In-Reply-To: <200711070925.15106.baldrick@free.fr> References: <200710281259.l9SCxkBh003841@zion.cs.uiuc.edu> <200711070925.15106.baldrick@free.fr> Message-ID: On Nov 7, 2007, at 12:25 AM, Duncan Sands wrote: > Hi Chris, > >> instead of introducing a new header file for this, would it make >> sense to merge into MathExtras.h? > > I considered that but (1) it would pull in the rest of MathExtras, > for some compile time cost (maybe tiny) and (2) it would need to > have a "math" name (like pow2_gcd), which would make the use of it > more obscure. Which is more readable: > MinAlign(Align, Offset) > or > pow2_gcd(Align, Offset) > ? That said, I'm happy to put it in MathExtras if you think that > better. I'm fine with naming it MinAlign in MathExtras.h, I don't think the compile time cost is an issue. Thanks! -Chris From clattner at apple.com Wed Nov 7 11:51:25 2007 From: clattner at apple.com (Chris Lattner) Date: Wed, 7 Nov 2007 09:51:25 -0800 Subject: [llvm-commits] [llvm] r43734 - in /llvm/trunk: lib/AsmParser/ParserInternals.h lib/AsmParser/llvmAsmParser.cpp.cvs lib/AsmParser/llvmAsmParser.h.cvs lib/AsmParser/llvmAsmParser.y lib/AsmParser/llvmAsmParser.y.cvs lib/Bitcode/Reader/BitcodeReader.cpp lib/CodeGen/AsmPrinter.cpp lib/CodeGen/SelectionDAG/ScheduleDAG.cpp lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp lib/CodeGen/SelectionDAG/TargetLowering.cpp test/CodeGen/X86/asm-block-labels.ll In-Reply-To: <200711052120.lA5LKTbX017606@zion.cs.uiuc.edu> References: <200711052120.lA5LKTbX017606@zion.cs.uiuc.edu> Message-ID: <2D764699-1C6B-4E45-B700-3356CE92EC93@apple.com> On Nov 5, 2007, at 1:20 PM, Dale Johannesen wrote: > Author: johannes > Date: Mon Nov 5 15:20:28 2007 > New Revision: 43734 > > URL: http://llvm.org/viewvc/llvm-project?rev=43734&view=rev > Log: > Make labels work in asm blocks; allow labels as > parameters. Rename ValueRefList to ParamList > in AsmParser, since its only use is for parameters. Hey Dale, > +"LASM$foo": ; preds = %entry > + call void asm sideeffect ".file \22block12.c\22", "~{dirflag},~ > {fpsr},~{flags}"( ) > + call void asm sideeffect ".line 1", "~{dirflag},~{fpsr},~{flags}"( ) > + call void asm sideeffect "int $$1", "~{dirflag},~{fpsr},~{flags},~ > {memory}"( ) > + call void asm sideeffect ".file \22block12.c\22", "~{dirflag},~ > {fpsr},~{flags}"( ) > + call void asm sideeffect ".line 2", "~{dirflag},~{fpsr},~{flags}"( ) > + call void asm sideeffect "brl ${0:l}", "X,~{dirflag},~{fpsr},~ > {flags},~{memory}"( label %"LASM$foo" ) This is somewhat dangerous: I think there is code in the compiler that assumes that only phi nodes and terminators use basic block. One specific problem with this is that the data-flow machinery won't know that the asm branches to LASM$foo, so misoptimizations can happen. I guess the question is how common this is an how important it is that it works :) -Chris From dalej at apple.com Wed Nov 7 12:01:56 2007 From: dalej at apple.com (Dale Johannesen) Date: Wed, 7 Nov 2007 10:01:56 -0800 Subject: [llvm-commits] [llvm] r43734 - in /llvm/trunk: lib/AsmParser/ParserInternals.h lib/AsmParser/llvmAsmParser.cpp.cvs lib/AsmParser/llvmAsmParser.h.cvs lib/AsmParser/llvmAsmParser.y lib/AsmParser/llvmAsmParser.y.cvs lib/Bitcode/Reader/BitcodeReader.cpp lib/CodeGen/AsmPrinter.cpp lib/CodeGen/SelectionDAG/ScheduleDAG.cpp lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp lib/CodeGen/SelectionDAG/TargetLowering.cpp test/CodeGen/X86/asm-block-labels.ll In-Reply-To: <2D764699-1C6B-4E45-B700-3356CE92EC93@apple.com> References: <200711052120.lA5LKTbX017606@zion.cs.uiuc.edu> <2D764699-1C6B-4E45-B700-3356CE92EC93@apple.com> Message-ID: <38D3DF74-E1FE-48CE-A6F1-4B38B79B2C94@apple.com> On Nov 7, 2007, at 9:51 AM, Chris Lattner wrote: > On Nov 5, 2007, at 1:20 PM, Dale Johannesen wrote: >> Author: johannes >> Date: Mon Nov 5 15:20:28 2007 >> New Revision: 43734 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=43734&view=rev >> Log: >> Make labels work in asm blocks; allow labels as >> parameters. Rename ValueRefList to ParamList >> in AsmParser, since its only use is for parameters. > > Hey Dale, > >> +"LASM$foo": ; preds = %entry >> + call void asm sideeffect ".file \22block12.c\22", "~{dirflag},~ >> {fpsr},~{flags}"( ) >> + call void asm sideeffect ".line 1", "~{dirflag},~{fpsr},~ >> {flags}"( ) >> + call void asm sideeffect "int $$1", "~{dirflag},~{fpsr},~{flags},~ >> {memory}"( ) >> + call void asm sideeffect ".file \22block12.c\22", "~{dirflag},~ >> {fpsr},~{flags}"( ) >> + call void asm sideeffect ".line 2", "~{dirflag},~{fpsr},~ >> {flags}"( ) >> + call void asm sideeffect "brl ${0:l}", "X,~{dirflag},~{fpsr},~ >> {flags},~{memory}"( label %"LASM$foo" ) > > This is somewhat dangerous: I think there is code in the compiler > that assumes that only phi nodes and terminators use basic block. > > One specific problem with this is that the data-flow machinery won't > know that the asm branches to LASM$foo, so misoptimizations can > happen. I guess the question is how common this is an how important > it is that it works :) This construct got an internal error before, so I claim this is an improvement. Asm's are still a long way from working well; it wouldn't surprise me if they call for some optimizer changes. (But we really should be disabling most optimizations on asm's, as I've said before.) If you want to be able to compile the same set of programs as Apple's gcc, it needs to work. But not necessarily tomorrow. From kremenek at apple.com Wed Nov 7 12:24:34 2007 From: kremenek at apple.com (Ted Kremenek) Date: Wed, 07 Nov 2007 18:24:34 -0000 Subject: [llvm-commits] [llvm] r43828 - in /llvm/trunk: include/llvm/Bitcode/Deserialize.h include/llvm/Bitcode/Serialization.h include/llvm/Bitcode/Serialize.h lib/Bitcode/Reader/Deserialize.cpp lib/Bitcode/Writer/Serialize.cpp Message-ID: <200711071824.lA7IOZ5w015948@zion.cs.uiuc.edu> Author: kremenek Date: Wed Nov 7 12:24:34 2007 New Revision: 43828 URL: http://llvm.org/viewvc/llvm-project?rev=43828&view=rev Log: Implemented serialization of signed integers. Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h llvm/trunk/include/llvm/Bitcode/Serialization.h llvm/trunk/include/llvm/Bitcode/Serialize.h llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp llvm/trunk/lib/Bitcode/Writer/Serialize.cpp Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Deserialize.h?rev=43828&r1=43827&r2=43828&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Deserialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Deserialize.h Wed Nov 7 12:24:34 2007 @@ -95,6 +95,8 @@ ~Deserializer(); uint64_t ReadInt(); + int64_t ReadSInt(); + bool ReadBool() { return ReadInt() ? true : false; } Modified: llvm/trunk/include/llvm/Bitcode/Serialization.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Serialization.h?rev=43828&r1=43827&r2=43828&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Serialization.h (original) +++ llvm/trunk/include/llvm/Bitcode/Serialization.h Wed Nov 7 12:24:34 2007 @@ -50,6 +50,11 @@ SERIALIZE_INT_TRAIT(unsigned short) SERIALIZE_INT_TRAIT(unsigned int) SERIALIZE_INT_TRAIT(unsigned long) + +SERIALIZE_INT_TRAIT(signed char) +SERIALIZE_INT_TRAIT(signed short) +SERIALIZE_INT_TRAIT(signed int) +SERIALIZE_INT_TRAIT(signed long) #undef SERIALIZE_INT_TRAIT Modified: llvm/trunk/include/llvm/Bitcode/Serialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Serialize.h?rev=43828&r1=43827&r2=43828&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Serialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Serialize.h Wed Nov 7 12:24:34 2007 @@ -37,7 +37,9 @@ template inline void Emit(const T& X) { SerializeTrait::Emit(*this,X); } - void EmitInt(unsigned X); + void EmitInt(uint64_t X); + void EmitSInt(int64_t X); + void EmitBool(bool X) { EmitInt(X); } void EmitCStr(const char* beg, const char* end); void EmitCStr(const char* cstr); Modified: llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp?rev=43828&r1=43827&r2=43828&view=diff ============================================================================== --- llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp (original) +++ llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp Wed Nov 7 12:24:34 2007 @@ -105,6 +105,12 @@ return Record[RecIdx++]; } +int64_t Deserializer::ReadSInt() { + uint64_t x = ReadInt(); + int64_t magnitude = x >> 1; + return x & 0x1 ? -magnitude : magnitude; +} + char* Deserializer::ReadCStr(char* cstr, unsigned MaxLen, bool isNullTerm) { if (cstr == NULL) MaxLen = 0; // Zero this just in case someone does something funny. @@ -226,3 +232,12 @@ INT_READ(unsigned short) INT_READ(unsigned int) INT_READ(unsigned long) + +#define SINT_READ(TYPE)\ +void SerializeTrait::Read(Deserializer& D, TYPE& X) {\ + X = (TYPE) D.ReadSInt(); } + +INT_READ(signed char) +INT_READ(signed short) +INT_READ(signed int) +INT_READ(signed long) Modified: llvm/trunk/lib/Bitcode/Writer/Serialize.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Writer/Serialize.cpp?rev=43828&r1=43827&r2=43828&view=diff ============================================================================== --- llvm/trunk/lib/Bitcode/Writer/Serialize.cpp (original) +++ llvm/trunk/lib/Bitcode/Writer/Serialize.cpp Wed Nov 7 12:24:34 2007 @@ -48,11 +48,18 @@ Stream.ExitBlock(); } -void Serializer::EmitInt(unsigned X) { +void Serializer::EmitInt(uint64_t X) { assert (BlockLevel > 0); Record.push_back(X); } +void Serializer::EmitSInt(int64_t X) { + if (X >= 0) + EmitInt(X << 1); + else + EmitInt((-X << 1) | 1); +} + void Serializer::EmitCStr(const char* s, const char* end) { Record.push_back(end - s); @@ -91,3 +98,11 @@ INT_EMIT(unsigned short) INT_EMIT(unsigned int) INT_EMIT(unsigned long) + +#define SINT_EMIT(TYPE)\ +void SerializeTrait::Emit(Serializer&S, TYPE X) { S.EmitSInt(X); } + +SINT_EMIT(signed char) +SINT_EMIT(signed short) +SINT_EMIT(signed int) +SINT_EMIT(signed long) From kremenek at apple.com Wed Nov 7 12:39:27 2007 From: kremenek at apple.com (Ted Kremenek) Date: Wed, 07 Nov 2007 18:39:27 -0000 Subject: [llvm-commits] [llvm] r43829 - in /llvm/trunk: include/llvm/ADT/APFloat.h lib/Bitcode/Reader/DeserializeAPFloat.cpp lib/Bitcode/Writer/SerializeAPFloat.cpp Message-ID: <200711071839.lA7IdRLg016473@zion.cs.uiuc.edu> Author: kremenek Date: Wed Nov 7 12:39:22 2007 New Revision: 43829 URL: http://llvm.org/viewvc/llvm-project?rev=43829&view=rev Log: Implemented generic serialization of APFloat. Added: llvm/trunk/lib/Bitcode/Reader/DeserializeAPFloat.cpp llvm/trunk/lib/Bitcode/Writer/SerializeAPFloat.cpp Modified: llvm/trunk/include/llvm/ADT/APFloat.h Modified: llvm/trunk/include/llvm/ADT/APFloat.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/APFloat.h?rev=43829&r1=43828&r2=43829&view=diff ============================================================================== --- llvm/trunk/include/llvm/ADT/APFloat.h (original) +++ llvm/trunk/include/llvm/ADT/APFloat.h Wed Nov 7 12:39:22 2007 @@ -102,6 +102,7 @@ // APInt contains static functions implementing bignum arithmetic. #include "llvm/ADT/APInt.h" +#include "llvm/Bitcode/SerializationFwd.h" #include "llvm/CodeGen/ValueTypes.h" namespace llvm { @@ -181,6 +182,12 @@ explicit APFloat(const APInt &, bool isIEEE = false); APFloat(const APFloat &); ~APFloat(); + + /// @brief Used by the Bitcode serializer to emit APInts to Bitcode. + void Emit(Serializer& S) const; + + /// @brief Used by the Bitcode deserializer to deserialize APInts. + static APFloat ReadVal(Deserializer& D); /* Arithmetic. */ opStatus add(const APFloat &, roundingMode); Added: llvm/trunk/lib/Bitcode/Reader/DeserializeAPFloat.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/DeserializeAPFloat.cpp?rev=43829&view=auto ============================================================================== --- llvm/trunk/lib/Bitcode/Reader/DeserializeAPFloat.cpp (added) +++ llvm/trunk/lib/Bitcode/Reader/DeserializeAPFloat.cpp Wed Nov 7 12:39:22 2007 @@ -0,0 +1,24 @@ +//===-- SerializeAPInt.cpp - Serialization for APFloat ---------*- C++ -*--===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by Ted Kremenek and is distributed under the +// University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file implements deserialization of APFloat. +// +//===----------------------------------------------------------------------===// + +#include "llvm/ADT/APFloat.h" +#include "llvm/Bitcode/Deserialize.h" + +using namespace llvm; + +APFloat APFloat::ReadVal(Deserializer& D) { + APInt x; + D.Read(x); + return APFloat(x); +} + Added: llvm/trunk/lib/Bitcode/Writer/SerializeAPFloat.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Writer/SerializeAPFloat.cpp?rev=43829&view=auto ============================================================================== --- llvm/trunk/lib/Bitcode/Writer/SerializeAPFloat.cpp (added) +++ llvm/trunk/lib/Bitcode/Writer/SerializeAPFloat.cpp Wed Nov 7 12:39:22 2007 @@ -0,0 +1,21 @@ +//===-- SerializeAPInt.cpp - Serialization for APFloat ---------*- C++ -*--===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by Ted Kremenek and is distributed under the +// University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file implements serialization of APFloat. +// +//===----------------------------------------------------------------------===// + +#include "llvm/ADT/APFloat.h" +#include "llvm/Bitcode/Serialize.h" + +using namespace llvm; + +void APFloat::Emit(Serializer& S) const { + S.Emit(convertToAPInt()); +} From isanbard at gmail.com Wed Nov 7 13:29:40 2007 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 07 Nov 2007 19:29:40 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r43835 - /llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Message-ID: <200711071929.lA7JTfXv018308@zion.cs.uiuc.edu> Author: void Date: Wed Nov 7 13:29:37 2007 New Revision: 43835 URL: http://llvm.org/viewvc/llvm-project?rev=43835&view=rev Log: Hack: Force alignment to 1 in all cases. 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=43835&r1=43834&r2=43835&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Wed Nov 7 13:29:37 2007 @@ -1297,7 +1297,7 @@ CastToType(Instruction::BitCast, DestPtr, SBP), CastToType(Instruction::BitCast, SrcPtr, SBP), CastToSIntType(Size, IntPtr), - ConstantInt::get(Type::Int32Ty, Align) + ConstantInt::get(Type::Int32Ty, 1) }; Intrinsic::ID IID = @@ -1329,7 +1329,7 @@ CastToType(Instruction::BitCast, DestPtr, SBP), CastToSIntType(SrcVal, Type::Int8Ty), CastToSIntType(Size, IntPtr), - ConstantInt::get(Type::Int32Ty, Align) + ConstantInt::get(Type::Int32Ty, 1) }; Intrinsic::ID IID = From hartmut.kaiser at gmail.com Wed Nov 7 13:33:31 2007 From: hartmut.kaiser at gmail.com (Hartmut Kaiser) Date: Wed, 07 Nov 2007 19:33:31 -0000 Subject: [llvm-commits] [llvm] r43836 - /llvm/trunk/include/llvm/Target/TargetLowering.h Message-ID: <200711071933.lA7JXVtQ018512@zion.cs.uiuc.edu> Author: hkaiser Date: Wed Nov 7 13:33:31 2007 New Revision: 43836 URL: http://llvm.org/viewvc/llvm-project?rev=43836&view=rev Log: Fixed compilation errors on VC++. 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=43836&r1=43835&r2=43836&view=diff ============================================================================== --- llvm/trunk/include/llvm/Target/TargetLowering.h (original) +++ llvm/trunk/include/llvm/Target/TargetLowering.h Wed Nov 7 13:33:31 2007 @@ -848,6 +848,7 @@ virtual const TargetSubtarget *getSubtarget() { assert(0 && "Not Implemented"); + return NULL; // this is here to silence compiler errors } //===--------------------------------------------------------------------===// // Lowering methods - These methods must be implemented by targets so that @@ -891,6 +892,7 @@ SDOperand Source, unsigned Size, unsigned Align, SelectionDAG &DAG) { assert(0 && "Not Implemented"); + return SDOperand(); // this is here to silence compiler errors } From hartmut.kaiser at gmail.com Wed Nov 7 13:34:10 2007 From: hartmut.kaiser at gmail.com (Hartmut Kaiser) Date: Wed, 07 Nov 2007 19:34:10 -0000 Subject: [llvm-commits] [llvm] r43837 - in /llvm/trunk/win32: Analysis/ Archive/ AsmParser/ Bitcode/ CBackend/ CodeGen/ ExecutionEngine/ Fibonacci/ Linker/ Support/ System/ TableGen/ Target/ Transforms/ VMCore/ bugpoint/ llc/ lli/ llvm-ar/ llvm-as/ llvm-bcanalyzer/ llvm-dis/ llvm-ld/ llvm-link/ llvm-nm/ llvm-prof/ llvm-ranlib/ opt/ x86/ Message-ID: <200711071934.lA7JYBuZ018599@zion.cs.uiuc.edu> Author: hkaiser Date: Wed Nov 7 13:34:09 2007 New Revision: 43837 URL: http://llvm.org/viewvc/llvm-project?rev=43837&view=rev Log: Updated VC++ build system Modified: llvm/trunk/win32/Analysis/Analysis.vcproj llvm/trunk/win32/Archive/Archive.vcproj llvm/trunk/win32/AsmParser/AsmParser.vcproj llvm/trunk/win32/Bitcode/Bitcode.vcproj llvm/trunk/win32/CBackend/CBackend.vcproj llvm/trunk/win32/CodeGen/CodeGen.vcproj llvm/trunk/win32/ExecutionEngine/ExecutionEngine.vcproj llvm/trunk/win32/Fibonacci/Fibonacci.vcproj llvm/trunk/win32/Linker/Linker.vcproj llvm/trunk/win32/Support/Support.vcproj llvm/trunk/win32/System/System.vcproj llvm/trunk/win32/TableGen/TableGen.vcproj llvm/trunk/win32/Target/Target.vcproj llvm/trunk/win32/Transforms/Transforms.vcproj llvm/trunk/win32/VMCore/VMCore.vcproj llvm/trunk/win32/bugpoint/bugpoint.vcproj llvm/trunk/win32/llc/llc.vcproj llvm/trunk/win32/lli/lli.vcproj llvm/trunk/win32/llvm-ar/llvm-ar.vcproj llvm/trunk/win32/llvm-as/llvm-as.vcproj llvm/trunk/win32/llvm-bcanalyzer/llvm-bcanalyzer.vcproj llvm/trunk/win32/llvm-dis/llvm-dis.vcproj llvm/trunk/win32/llvm-ld/llvm-ld.vcproj llvm/trunk/win32/llvm-link/llvm-link.vcproj llvm/trunk/win32/llvm-nm/llvm-nm.vcproj llvm/trunk/win32/llvm-prof/llvm-prof.vcproj llvm/trunk/win32/llvm-ranlib/llvm-ranlib.vcproj llvm/trunk/win32/opt/opt.vcproj llvm/trunk/win32/x86/x86.vcproj Modified: llvm/trunk/win32/Analysis/Analysis.vcproj URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/win32/Analysis/Analysis.vcproj?rev=43837&r1=43836&r2=43837&view=diff ============================================================================== --- llvm/trunk/win32/Analysis/Analysis.vcproj (original) +++ llvm/trunk/win32/Analysis/Analysis.vcproj Wed Nov 7 13:34:09 2007 @@ -41,7 +41,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\include;.." - PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN32;_DEBUG;_LIB;__STDC_LIMIT_MACROS" + PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;WIN32;_DEBUG;_LIB;__STDC_LIMIT_MACROS" StringPooling="true" MinimalRebuild="true" BasicRuntimeChecks="3" @@ -111,7 +111,7 @@ + + Modified: llvm/trunk/win32/ExecutionEngine/ExecutionEngine.vcproj URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/win32/ExecutionEngine/ExecutionEngine.vcproj?rev=43837&r1=43836&r2=43837&view=diff ============================================================================== --- llvm/trunk/win32/ExecutionEngine/ExecutionEngine.vcproj (original) +++ llvm/trunk/win32/ExecutionEngine/ExecutionEngine.vcproj Wed Nov 7 13:34:09 2007 @@ -41,7 +41,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\include;.." - PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN32;_DEBUG;_LIB;__STDC_LIMIT_MACROS" + PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;WIN32;_DEBUG;_LIB;__STDC_LIMIT_MACROS" StringPooling="true" MinimalRebuild="true" BasicRuntimeChecks="3" Modified: llvm/trunk/win32/Fibonacci/Fibonacci.vcproj URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/win32/Fibonacci/Fibonacci.vcproj?rev=43837&r1=43836&r2=43837&view=diff ============================================================================== --- llvm/trunk/win32/Fibonacci/Fibonacci.vcproj (original) +++ llvm/trunk/win32/Fibonacci/Fibonacci.vcproj Wed Nov 7 13:34:09 2007 @@ -42,7 +42,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\include;.." - PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;WIN32;_DEBUG;_CONSOLE;__STDC_LIMIT_MACROS" + PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;__STDC_LIMIT_MACROS" StringPooling="true" MinimalRebuild="true" BasicRuntimeChecks="3" @@ -127,7 +127,7 @@ Author: void Date: Wed Nov 7 13:36:26 2007 New Revision: 43839 URL: http://llvm.org/viewvc/llvm-project?rev=43839&view=rev Log: Add testcase Added: llvm/trunk/test/CFrontend/2007-11-07-AlignedMemcpy.c Added: llvm/trunk/test/CFrontend/2007-11-07-AlignedMemcpy.c URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CFrontend/2007-11-07-AlignedMemcpy.c?rev=43839&view=auto ============================================================================== --- llvm/trunk/test/CFrontend/2007-11-07-AlignedMemcpy.c (added) +++ llvm/trunk/test/CFrontend/2007-11-07-AlignedMemcpy.c Wed Nov 7 13:36:26 2007 @@ -0,0 +1,4 @@ +// RUN: %llvmgcc -c %s -o /dev/null +void bork() { + int Qux[33] = {0}; +} From isanbard at gmail.com Wed Nov 7 13:41:17 2007 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 07 Nov 2007 19:41:17 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r43840 - /llvm-gcc-4.0/tags/llvm-gcc-1200-21/ Message-ID: <200711071941.lA7JfHkX019102@zion.cs.uiuc.edu> Author: void Date: Wed Nov 7 13:41:16 2007 New Revision: 43840 URL: http://llvm.org/viewvc/llvm-project?rev=43840&view=rev Log: Creating llvm-gcc-1200-21 branch Added: llvm-gcc-4.0/tags/llvm-gcc-1200-21/ - copied from r43839, llvm-gcc-4.0/trunk/ From isanbard at gmail.com Wed Nov 7 13:41:24 2007 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 07 Nov 2007 19:41:24 -0000 Subject: [llvm-commits] [llvm] r43841 - /llvm/tags/Apple/llvm-1200-21/ Message-ID: <200711071941.lA7JfOwg019129@zion.cs.uiuc.edu> Author: void Date: Wed Nov 7 13:41:23 2007 New Revision: 43841 URL: http://llvm.org/viewvc/llvm-project?rev=43841&view=rev Log: Creating llvm-1200-21 branch Added: llvm/tags/Apple/llvm-1200-21/ - copied from r43840, llvm/trunk/ From clattner at apple.com Wed Nov 7 13:51:02 2007 From: clattner at apple.com (Chris Lattner) Date: Wed, 7 Nov 2007 11:51:02 -0800 Subject: [llvm-commits] [llvm-gcc-4.0] r43835 - /llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp In-Reply-To: <200711071929.lA7JTfXv018308@zion.cs.uiuc.edu> References: <200711071929.lA7JTfXv018308@zion.cs.uiuc.edu> Message-ID: <005CF144-E9D2-44DB-B191-1AA8C2D0A34B@apple.com> On Nov 7, 2007, at 11:29 AM, Bill Wendling wrote: > Author: void > Date: Wed Nov 7 13:29:37 2007 > New Revision: 43835 > > URL: http://llvm.org/viewvc/llvm-project?rev=43835&view=rev > Log: > Hack: Force alignment to 1 in all cases. Thanks Bill, please add a fixme though and file a bugzilla about this. The bugzilla should point to your new testcase. -Chris > 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=43835&r1=43834&r2=43835&view=diff > > ====================================================================== > ======== > --- llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp (original) > +++ llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Wed Nov 7 13:29:37 2007 > @@ -1297,7 +1297,7 @@ > CastToType(Instruction::BitCast, DestPtr, SBP), > CastToType(Instruction::BitCast, SrcPtr, SBP), > CastToSIntType(Size, IntPtr), > - ConstantInt::get(Type::Int32Ty, Align) > + ConstantInt::get(Type::Int32Ty, 1) > }; > > Intrinsic::ID IID = > @@ -1329,7 +1329,7 @@ > CastToType(Instruction::BitCast, DestPtr, SBP), > CastToSIntType(SrcVal, Type::Int8Ty), > CastToSIntType(Size, IntPtr), > - ConstantInt::get(Type::Int32Ty, Align) > + ConstantInt::get(Type::Int32Ty, 1) > }; > > Intrinsic::ID IID = > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From isanbard at gmail.com Wed Nov 7 14:59:31 2007 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 07 Nov 2007 20:59:31 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r43842 - /llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Message-ID: <200711072059.lA7KxVOF022613@zion.cs.uiuc.edu> Author: void Date: Wed Nov 7 14:59:30 2007 New Revision: 43842 URL: http://llvm.org/viewvc/llvm-project?rev=43842&view=rev Log: Add FIXME line. 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=43842&r1=43841&r2=43842&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Wed Nov 7 14:59:30 2007 @@ -1297,7 +1297,7 @@ CastToType(Instruction::BitCast, DestPtr, SBP), CastToType(Instruction::BitCast, SrcPtr, SBP), CastToSIntType(Size, IntPtr), - ConstantInt::get(Type::Int32Ty, 1) + ConstantInt::get(Type::Int32Ty, 1) // FIXME: Hardcoding 1 here is a hack. }; Intrinsic::ID IID = @@ -1329,7 +1329,7 @@ CastToType(Instruction::BitCast, DestPtr, SBP), CastToSIntType(SrcVal, Type::Int8Ty), CastToSIntType(Size, IntPtr), - ConstantInt::get(Type::Int32Ty, 1) + ConstantInt::get(Type::Int32Ty, 1) // FIXME: Hardcoding 1 here is a hack. }; Intrinsic::ID IID = From isanbard at gmail.com Wed Nov 7 15:03:03 2007 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 7 Nov 2007 13:03:03 -0800 Subject: [llvm-commits] [llvm-gcc-4.0] r43835 - /llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp In-Reply-To: <005CF144-E9D2-44DB-B191-1AA8C2D0A34B@apple.com> References: <200711071929.lA7JTfXv018308@zion.cs.uiuc.edu> <005CF144-E9D2-44DB-B191-1AA8C2D0A34B@apple.com> Message-ID: <16e5fdf90711071303p59c6a6beq4f3d27bf84e8b39f@mail.gmail.com> On Nov 7, 2007 11:51 AM, Chris Lattner wrote: > > On Nov 7, 2007, at 11:29 AM, Bill Wendling wrote: > > > Author: void > > Date: Wed Nov 7 13:29:37 2007 > > New Revision: 43835 > > > > URL: http://llvm.org/viewvc/llvm-project?rev=43835&view=rev > > Log: > > Hack: Force alignment to 1 in all cases. > > Thanks Bill, please add a fixme though and file a bugzilla about > this. The bugzilla should point to your new testcase. > Done: PR1781 -bw From evan.cheng at apple.com Wed Nov 7 15:06:07 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Wed, 7 Nov 2007 13:06:07 -0800 Subject: [llvm-commits] RE [llvm] r43805 - /llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp In-Reply-To: <9F98F260-4555-4A4A-B71B-B6A079064C57@mac.com> References: <9F98F260-4555-4A4A-B71B-B6A079064C57@mac.com> Message-ID: <21190763-9C5C-4CF7-9928-17DA7EE5573C@apple.com> On Nov 6, 2007, at 11:26 PM, Owen Anderson wrote: > Evan, > > I may end up using a BitVector or SparseBitVector in the future. I > was just going with an std::set for simplicity until I'm sure I > won't be changing it further. Ok, but SmallPtrSet and SmallSet behaves just like std::set except it's not horribly slow. :-) > > > By the way, could you check that isLiveIn() and isLiveOut() are > correctly? I _think_ I got VarInfo figured out, but I'm not > confident. isLiveIn() looks wrong. I think you just need to check if DefInst is in the given MBB, if not than it has to be livein. For isLiveOut(), you need to check 1) if it's completely live through, 2) if it is used in the MBB and it's not killed. You may want to add UsedBlocks back to VarInfo. I removed it in r36250 because it wasn't being used. Evan > > > --Owen _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From clattner at apple.com Wed Nov 7 15:47:55 2007 From: clattner at apple.com (Chris Lattner) Date: Wed, 7 Nov 2007 13:47:55 -0800 Subject: [llvm-commits] [llvm-gcc-4.0] r43842 - /llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp In-Reply-To: <200711072059.lA7KxVOF022613@zion.cs.uiuc.edu> References: <200711072059.lA7KxVOF022613@zion.cs.uiuc.edu> Message-ID: <251BF81A-2AA7-4F87-B461-964168B66E03@apple.com> > URL: http://llvm.org/viewvc/llvm-project?rev=43842&view=rev > Log: > Add FIXME line. Thanks, please add a short comment about what the actual problem is, and mention the bugzilla. :) Also, Bill, after Duncan has tested and commits his patch to 4.2, can you please backport it to 4.0? Thanks! -Chris > 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=43842&r1=43841&r2=43842&view=diff > > ====================================================================== > ======== > --- llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp (original) > +++ llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Wed Nov 7 14:59:30 2007 > @@ -1297,7 +1297,7 @@ > CastToType(Instruction::BitCast, DestPtr, SBP), > CastToType(Instruction::BitCast, SrcPtr, SBP), > CastToSIntType(Size, IntPtr), > - ConstantInt::get(Type::Int32Ty, 1) > + ConstantInt::get(Type::Int32Ty, 1) // FIXME: Hardcoding 1 here > is a hack. > }; > > Intrinsic::ID IID = > @@ -1329,7 +1329,7 @@ > CastToType(Instruction::BitCast, DestPtr, SBP), > CastToSIntType(SrcVal, Type::Int8Ty), > CastToSIntType(Size, IntPtr), > - ConstantInt::get(Type::Int32Ty, 1) > + ConstantInt::get(Type::Int32Ty, 1) // FIXME: Hardcoding 1 here > is a hack. > }; > > Intrinsic::ID IID = > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From dalej at apple.com Wed Nov 7 15:48:35 2007 From: dalej at apple.com (Dale Johannesen) Date: Wed, 07 Nov 2007 21:48:35 -0000 Subject: [llvm-commits] [llvm] r43844 - in /llvm/trunk/lib/Target/X86: X86RegisterInfo.cpp X86RegisterInfo.td Message-ID: <200711072148.lA7LmZep025041@zion.cs.uiuc.edu> Author: johannes Date: Wed Nov 7 15:48:35 2007 New Revision: 43844 URL: http://llvm.org/viewvc/llvm-project?rev=43844&view=rev Log: Complete conditionalization of Dwarf reg numbers. Would somebody not on Darwin please make sure this doesn't break anything. Exception handling failures would be the most likely symptom. Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp llvm/trunk/lib/Target/X86/X86RegisterInfo.td Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp?rev=43844&r1=43843&r2=43844&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp (original) +++ llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp Wed Nov 7 15:48:35 2007 @@ -657,15 +657,55 @@ // getDwarfRegNum - This function maps LLVM register identifiers to the // Dwarf specific numbering, used in debug info and exception tables. // The registers are given "basic" dwarf numbers in the .td files, -// which are collected by TableGen into X86GenRegisterInfo::getDwarfRegNum. -// This wrapper allows for target-specific overrides. +// which are for the 64-bit target. These are collected by TableGen +// into X86GenRegisterInfo::getDwarfRegNum and overridden here for +// other targets. +// FIXME: Comments in gcc indicate that Darwin uses different numbering +// for debug info and exception handling info:( The numbering here is +// for exception handling. + int X86RegisterInfo::getDwarfRegNum(unsigned RegNo) const { int n = X86GenRegisterInfo::getDwarfRegNum(RegNo); const X86Subtarget *Subtarget = &TM.getSubtarget(); - if (Subtarget->isDarwin) { - // ESP and EBP are switched. - if (n==4) return 5; - if (n==5) return 4; + if (!Subtarget->is64Bit()) { + // Numbers are all different for 32-bit. Further, some of them + // differ between Darwin and other targets. + switch (n) { + default: assert(0 && "Invalid argument to getDwarfRegNum"); + return n; + case 0: return 0; // ax + case 1: return 2; // dx + case 2: return 1; // cx + case 3: return 3; // bx + case 4: return 6; // si + case 5: return 7; // di + case 6: return (Subtarget->isDarwin) ? 4 : 5; // bp + case 7: return (Subtarget->isDarwin) ? 5 : 4; // sp + + case 8: case 9: case 10: case 11: // r8..r15 + case 12: case 13: case 14: case 15: + assert(0 && "Invalid register in 32-bit mode"); + return n; + + case 16: return 8; // ip + + case 17: case 18: case 19: case 20: // xmm0..xmm7 + case 21: case 22: case 23: case 24: + return n+4; + + case 25: case 26: case 27: case 28: // xmm8..xmm15 + case 29: case 30: case 31: case 32: + assert(0 && "Invalid register in 32-bit mode"); + return n; + + case 33: case 34: case 35: case 36: // st0..st7 + case 37: case 38: case 39: case 40: + return (Subtarget->isDarwin) ? n-21 : n-22; + + case 41: case 42: case 43: case 44: // mm0..mm7 + case 45: case 46: case 47: case 48: + return n-12; + } } return n; } Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86RegisterInfo.td?rev=43844&r1=43843&r2=43844&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86RegisterInfo.td (original) +++ llvm/trunk/lib/Target/X86/X86RegisterInfo.td Wed Nov 7 15:48:35 2007 @@ -23,12 +23,17 @@ // because the register file generator is smart enough to figure out that // AL aliases AX if we tell it that AX aliased AL (for example). - // FIXME: X86-64 have different Dwarf numbers. + // Dwarf numbering is different for 32-bit and 64-bit, and there are + // variations by target as well. The numbers here are for 64-bit. + // They are altered by X86RegisterInfo::getDwarfRegNum at runtime. Note + // that we can't assign the same number here to different registers, as + // getDwarfRegNum has only the number here to work with. + // 8-bit registers // Low registers def AL : Register<"AL">, DwarfRegNum<0>; - def CL : Register<"CL">, DwarfRegNum<1>; - def DL : Register<"DL">, DwarfRegNum<2>; + def DL : Register<"DL">, DwarfRegNum<1>; + def CL : Register<"CL">, DwarfRegNum<2>; def BL : Register<"BL">, DwarfRegNum<3>; // X86-64 only @@ -47,20 +52,20 @@ // High registers X86-32 only def AH : Register<"AH">, DwarfRegNum<0>; - def CH : Register<"CH">, DwarfRegNum<1>; - def DH : Register<"DH">, DwarfRegNum<2>; + def DH : Register<"DH">, DwarfRegNum<1>; + def CH : Register<"CH">, DwarfRegNum<2>; def BH : Register<"BH">, DwarfRegNum<3>; // 16-bit registers def AX : RegisterWithSubRegs<"AX", [AH,AL]>, DwarfRegNum<0>; - def CX : RegisterWithSubRegs<"CX", [CH,CL]>, DwarfRegNum<1>; - def DX : RegisterWithSubRegs<"DX", [DH,DL]>, DwarfRegNum<2>; + def DX : RegisterWithSubRegs<"DX", [DH,DL]>, DwarfRegNum<1>; + def CX : RegisterWithSubRegs<"CX", [CH,CL]>, DwarfRegNum<2>; def BX : RegisterWithSubRegs<"BX", [BH,BL]>, DwarfRegNum<3>; - def SP : RegisterWithSubRegs<"SP", [SPL]>, DwarfRegNum<4>; - def BP : RegisterWithSubRegs<"BP", [BPL]>, DwarfRegNum<5>; - def SI : RegisterWithSubRegs<"SI", [SIL]>, DwarfRegNum<6>; - def DI : RegisterWithSubRegs<"DI", [DIL]>, DwarfRegNum<7>; - def IP : Register<"IP">, DwarfRegNum<8>; + def SI : RegisterWithSubRegs<"SI", [SIL]>, DwarfRegNum<4>; + def DI : RegisterWithSubRegs<"DI", [DIL]>, DwarfRegNum<5>; + def BP : RegisterWithSubRegs<"BP", [BPL]>, DwarfRegNum<6>; + def SP : RegisterWithSubRegs<"SP", [SPL]>, DwarfRegNum<7>; + def IP : Register<"IP">, DwarfRegNum<16>; // X86-64 only def R8W : RegisterWithSubRegs<"R8W", [R8B]>, DwarfRegNum<8>; @@ -74,14 +79,14 @@ // 32-bit registers def EAX : RegisterWithSubRegs<"EAX", [AX]>, DwarfRegNum<0>; - def ECX : RegisterWithSubRegs<"ECX", [CX]>, DwarfRegNum<1>; - def EDX : RegisterWithSubRegs<"EDX", [DX]>, DwarfRegNum<2>; + def EDX : RegisterWithSubRegs<"EDX", [DX]>, DwarfRegNum<1>; + def ECX : RegisterWithSubRegs<"ECX", [CX]>, DwarfRegNum<2>; def EBX : RegisterWithSubRegs<"EBX", [BX]>, DwarfRegNum<3>; - def ESP : RegisterWithSubRegs<"ESP", [SP]>, DwarfRegNum<4>; - def EBP : RegisterWithSubRegs<"EBP", [BP]>, DwarfRegNum<5>; - def ESI : RegisterWithSubRegs<"ESI", [SI]>, DwarfRegNum<6>; - def EDI : RegisterWithSubRegs<"EDI", [DI]>, DwarfRegNum<7>; - def EIP : RegisterWithSubRegs<"EIP", [IP]>, DwarfRegNum<8>; + def ESI : RegisterWithSubRegs<"ESI", [SI]>, DwarfRegNum<4>; + def EDI : RegisterWithSubRegs<"EDI", [DI]>, DwarfRegNum<5>; + def EBP : RegisterWithSubRegs<"EBP", [BP]>, DwarfRegNum<6>; + def ESP : RegisterWithSubRegs<"ESP", [SP]>, DwarfRegNum<7>; + def EIP : RegisterWithSubRegs<"EIP", [IP]>, DwarfRegNum<16>; // X86-64 only def R8D : RegisterWithSubRegs<"R8D", [R8W]>, DwarfRegNum<8>; @@ -114,14 +119,14 @@ def RIP : RegisterWithSubRegs<"RIP", [EIP]>, DwarfRegNum<16>; // MMX Registers. These are actually aliased to ST0 .. ST7 - def MM0 : Register<"MM0">, DwarfRegNum<29>; - def MM1 : Register<"MM1">, DwarfRegNum<30>; - def MM2 : Register<"MM2">, DwarfRegNum<31>; - def MM3 : Register<"MM3">, DwarfRegNum<32>; - def MM4 : Register<"MM4">, DwarfRegNum<33>; - def MM5 : Register<"MM5">, DwarfRegNum<34>; - def MM6 : Register<"MM6">, DwarfRegNum<35>; - def MM7 : Register<"MM7">, DwarfRegNum<36>; + def MM0 : Register<"MM0">, DwarfRegNum<41>; + def MM1 : Register<"MM1">, DwarfRegNum<42>; + def MM2 : Register<"MM2">, DwarfRegNum<43>; + def MM3 : Register<"MM3">, DwarfRegNum<44>; + def MM4 : Register<"MM4">, DwarfRegNum<45>; + def MM5 : Register<"MM5">, DwarfRegNum<46>; + def MM6 : Register<"MM6">, DwarfRegNum<47>; + def MM7 : Register<"MM7">, DwarfRegNum<48>; // Pseudo Floating Point registers def FP0 : Register<"FP0">, DwarfRegNum<-1>; @@ -153,14 +158,14 @@ def XMM15: Register<"XMM15">, DwarfRegNum<32>; // Floating point stack registers - def ST0 : Register<"ST(0)">, DwarfRegNum<11>; - def ST1 : Register<"ST(1)">, DwarfRegNum<12>; - def ST2 : Register<"ST(2)">, DwarfRegNum<13>; - def ST3 : Register<"ST(3)">, DwarfRegNum<14>; - def ST4 : Register<"ST(4)">, DwarfRegNum<15>; - def ST5 : Register<"ST(5)">, DwarfRegNum<16>; - def ST6 : Register<"ST(6)">, DwarfRegNum<17>; - def ST7 : Register<"ST(7)">, DwarfRegNum<18>; + def ST0 : Register<"ST(0)">, DwarfRegNum<33>; + def ST1 : Register<"ST(1)">, DwarfRegNum<34>; + def ST2 : Register<"ST(2)">, DwarfRegNum<35>; + def ST3 : Register<"ST(3)">, DwarfRegNum<36>; + def ST4 : Register<"ST(4)">, DwarfRegNum<37>; + def ST5 : Register<"ST(5)">, DwarfRegNum<38>; + def ST6 : Register<"ST(6)">, DwarfRegNum<39>; + def ST7 : Register<"ST(7)">, DwarfRegNum<40>; // Status flags register def EFLAGS : Register<"EFLAGS">; From asl at math.spbu.ru Wed Nov 7 16:01:01 2007 From: asl at math.spbu.ru (Anton Korobeynikov) Date: Thu, 08 Nov 2007 01:01:01 +0300 Subject: [llvm-commits] [llvm] r43844 - in /llvm/trunk/lib/Target/X86: X86RegisterInfo.cpp X86RegisterInfo.td In-Reply-To: <200711072148.lA7LmZep025041.SS9385SS@zion.cs.uiuc.edu> References: <200711072148.lA7LmZep025041.SS9385SS@zion.cs.uiuc.edu> Message-ID: <1194472861.10807.19.camel@asl.dorms.spbu.ru> Dale, > Complete conditionalization of Dwarf reg numbers. This looks pretty hackish. The numbers used before were definitely correct for x86-32/linux. I dunno about darwin, but it looks like "turning everything on darwin to be default implementation" is not a good approach. :) And, if you need to conditionalize depending on target, table approach (like in i386.h) will be definitely better, otherwise we'll end with spaghetti-like code, when all supported targets will be in place. -- With best regards, Anton Korobeynikov. Faculty of Mathematics & Mechanics, Saint Petersburg State University. From kremenek at apple.com Wed Nov 7 16:30:29 2007 From: kremenek at apple.com (Ted Kremenek) Date: Wed, 07 Nov 2007 22:30:29 -0000 Subject: [llvm-commits] [llvm] r43845 - in /llvm/trunk/include/llvm/Bitcode: Deserialize.h Serialize.h Message-ID: <200711072230.lA7MUTFZ026679@zion.cs.uiuc.edu> Author: kremenek Date: Wed Nov 7 16:30:29 2007 New Revision: 43845 URL: http://llvm.org/viewvc/llvm-project?rev=43845&view=rev Log: Added methods to batch emit and deserialize owned pointers. This allows to group the pointer IDs together in the bitstream before their referenced contents (which will lend itself to more efficient encoding). Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h llvm/trunk/include/llvm/Bitcode/Serialize.h Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Deserialize.h?rev=43845&r1=43844&r2=43845&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Deserialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Deserialize.h Wed Nov 7 16:30:29 2007 @@ -117,15 +117,15 @@ template inline T* ReadOwnedPtr(bool AutoRegister = true) { - unsigned PtrId = ReadInt(); + unsigned PtrID = ReadInt(); - if (PtrId == 0) + if (!PtrID) return NULL; T* x = SerializeTrait::Materialize(*this); - + if (AutoRegister) - RegisterPtr(PtrId,x); + RegisterPtr(PtrID,x); return x; } @@ -135,6 +135,39 @@ Ptr = ReadOwnedPtr(AutoRegister); } + template + void BatchReadOwnedPtrs(T1*& P1, T2*& P2, + bool A1=true, bool A2=true) { + + unsigned ID1 = ReadInt(); + unsigned ID2 = ReadInt(); + + P1 = (ID1) ? SerializeTrait::Materialize(*this) : NULL; + if (ID1 && A1) RegisterPtr(ID1,P1); + + P2 = (ID2) ? SerializeTrait::Materialize(*this) : NULL; + if (ID2 && A2) RegisterPtr(ID2,P2); + } + + template + void BatchReadOwnedPtrs(T1*& P1, T2*& P2, T3*& P3, + bool A1=true, bool A2=true, bool A3=true) { + + unsigned ID1 = ReadInt(); + unsigned ID2 = ReadInt(); + unsigned ID3 = ReadInt(); + + P1 = (ID1) ? SerializeTrait::Materialize(*this) : NULL; + if (ID1 && A1) RegisterPtr(ID1,P1); + + P2 = (ID2) ? SerializeTrait::Materialize(*this) : NULL; + if (ID2 && A2) RegisterPtr(ID2,P2); + + P3 = (ID3) ? SerializeTrait::Materialize(*this) : NULL; + if (ID3 && A3) RegisterPtr(ID3,P3); + } + + template void ReadPtr(T*& PtrRef, bool AllowBackpatch = true) { ReadUIntPtr(reinterpret_cast(PtrRef), AllowBackpatch); Modified: llvm/trunk/include/llvm/Bitcode/Serialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Serialize.h?rev=43845&r1=43844&r2=43845&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Serialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Serialize.h Wed Nov 7 16:30:29 2007 @@ -54,6 +54,36 @@ EmitPtr(ptr); if (ptr) SerializeTrait::Emit(*this,*ptr); } + + template + void BatchEmitOwnedPtrs(T1* p1, T2* p2) { + EmitPtr(p1); + EmitPtr(p2); + if (p1) SerializeTrait::Emit(*this,*p1); + if (p2) SerializeTrait::Emit(*this,*p2); + } + + template + void BatchEmitOwnedPtrs(T1* p1, T2* p2, T3* p3) { + EmitPtr(p1); + EmitPtr(p2); + EmitPtr(p3); + if (p1) SerializeTrait::Emit(*this,*p1); + if (p2) SerializeTrait::Emit(*this,*p2); + if (p3) SerializeTrait::Emit(*this,*p3); + } + + template + void BatchEmitOwnedPtrs(T1* p1, T2* p2, T3* p3, T4& p4) { + EmitPtr(p1); + EmitPtr(p2); + EmitPtr(p3); + EmitPtr(p4); + if (p1) SerializeTrait::Emit(*this,*p1); + if (p2) SerializeTrait::Emit(*this,*p2); + if (p3) SerializeTrait::Emit(*this,*p3); + if (p4) SerializeTrait::Emit(*this,*p4); + } void FlushRecord() { if (inRecord()) EmitRecord(); } From criswell at uiuc.edu Wed Nov 7 17:13:44 2007 From: criswell at uiuc.edu (John Criswell) Date: Wed, 07 Nov 2007 23:13:44 -0000 Subject: [llvm-commits] [poolalloc] r43850 - /poolalloc/branches/SVA/README Message-ID: <200711072313.lA7NDjYB028502@zion.cs.uiuc.edu> Author: criswell Date: Wed Nov 7 17:13:44 2007 New Revision: 43850 URL: http://llvm.org/viewvc/llvm-project?rev=43850&view=rev Log: Test commit. Modified: poolalloc/branches/SVA/README Modified: poolalloc/branches/SVA/README URL: http://llvm.org/viewvc/llvm-project/poolalloc/branches/SVA/README?rev=43850&r1=43849&r2=43850&view=diff ============================================================================== --- poolalloc/branches/SVA/README (original) +++ poolalloc/branches/SVA/README Wed Nov 7 17:13:44 2007 @@ -69,3 +69,4 @@ about LLVM. The list is low volume. You can subscribe to it at http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev. + From criswell at uiuc.edu Wed Nov 7 17:14:08 2007 From: criswell at uiuc.edu (John Criswell) Date: Wed, 07 Nov 2007 23:14:08 -0000 Subject: [llvm-commits] [poolalloc] r43851 - /poolalloc/branches/SVA/README Message-ID: <200711072314.lA7NE8e6028537@zion.cs.uiuc.edu> Author: criswell Date: Wed Nov 7 17:14:07 2007 New Revision: 43851 URL: http://llvm.org/viewvc/llvm-project?rev=43851&view=rev Log: Testing another commit and reverting previous change. Modified: poolalloc/branches/SVA/README Modified: poolalloc/branches/SVA/README URL: http://llvm.org/viewvc/llvm-project/poolalloc/branches/SVA/README?rev=43851&r1=43850&r2=43851&view=diff ============================================================================== --- poolalloc/branches/SVA/README (original) +++ poolalloc/branches/SVA/README Wed Nov 7 17:14:07 2007 @@ -69,4 +69,3 @@ about LLVM. The list is low volume. You can subscribe to it at http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev. - From kremenek at apple.com Wed Nov 7 17:18:40 2007 From: kremenek at apple.com (Ted Kremenek) Date: Wed, 07 Nov 2007 23:18:40 -0000 Subject: [llvm-commits] [llvm] r43852 - in /llvm/trunk/include/llvm/Bitcode: Deserialize.h Serialize.h Message-ID: <200711072318.lA7NIe0I028767@zion.cs.uiuc.edu> Author: kremenek Date: Wed Nov 7 17:18:40 2007 New Revision: 43852 URL: http://llvm.org/viewvc/llvm-project?rev=43852&view=rev Log: Added version of BatchEmitOwnedPtrs and BatchReadOwnedPtrs that emits/reads an array of pointers of the same type. Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h llvm/trunk/include/llvm/Bitcode/Serialize.h Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Deserialize.h?rev=43852&r1=43851&r2=43852&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Deserialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Deserialize.h Wed Nov 7 17:18:40 2007 @@ -166,6 +166,18 @@ P3 = (ID3) ? SerializeTrait::Materialize(*this) : NULL; if (ID3 && A3) RegisterPtr(ID3,P3); } + + template + void BatchReadOwnedPtrs(unsigned NumPtrs, T** Ptrs) { + llvm::SmallVector PtrIDs; + PtrIDs.reserve(NumPtrs); + + for (unsigned i = 0; i < NumPtrs; ++i) + PtrIDs.push_back(ReadInt()); + + for (unsigned i = 0; i < NumPtrs; ++i) + Ptrs[i] = PtrIDs[i] ? SerializeTrait::Materialize(*this) : NULL; + } template Modified: llvm/trunk/include/llvm/Bitcode/Serialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Serialize.h?rev=43852&r1=43851&r2=43852&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Serialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Serialize.h Wed Nov 7 17:18:40 2007 @@ -85,6 +85,15 @@ if (p4) SerializeTrait::Emit(*this,*p4); } + template + void BatchEmitOwnedPtrs(unsigned NumPtrs, T** Ptrs) { + for (unsigned i = 0; i < NumPtrs; ++i) + EmitPtr(Ptrs[i]); + + for (unsigned i = 0; i < NumPtrs; ++i) + if (Ptrs[i]) SerializeTrait::Emit(*this,Ptrs[i]); + } + void FlushRecord() { if (inRecord()) EmitRecord(); } void EnterBlock(unsigned BlockID = 8, unsigned CodeLen = 3); From kremenek at apple.com Wed Nov 7 17:32:06 2007 From: kremenek at apple.com (Ted Kremenek) Date: Wed, 07 Nov 2007 23:32:06 -0000 Subject: [llvm-commits] [llvm] r43853 - /llvm/trunk/include/llvm/Bitcode/Serialize.h Message-ID: <200711072332.lA7NW6dN029413@zion.cs.uiuc.edu> Author: kremenek Date: Wed Nov 7 17:32:06 2007 New Revision: 43853 URL: http://llvm.org/viewvc/llvm-project?rev=43853&view=rev Log: Fixed bug where we did not properly serialize owned objects due to a missing dereference. Modified: llvm/trunk/include/llvm/Bitcode/Serialize.h Modified: llvm/trunk/include/llvm/Bitcode/Serialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Serialize.h?rev=43853&r1=43852&r2=43853&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Serialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Serialize.h Wed Nov 7 17:32:06 2007 @@ -91,7 +91,7 @@ EmitPtr(Ptrs[i]); for (unsigned i = 0; i < NumPtrs; ++i) - if (Ptrs[i]) SerializeTrait::Emit(*this,Ptrs[i]); + if (Ptrs[i]) SerializeTrait::Emit(*this,*Ptrs[i]); } void FlushRecord() { if (inRecord()) EmitRecord(); } From kremenek at apple.com Wed Nov 7 18:04:53 2007 From: kremenek at apple.com (Ted Kremenek) Date: Thu, 08 Nov 2007 00:04:53 -0000 Subject: [llvm-commits] [llvm] r43855 - /llvm/trunk/include/llvm/Bitcode/Deserialize.h Message-ID: <200711080004.lA804rLh030836@zion.cs.uiuc.edu> Author: kremenek Date: Wed Nov 7 18:04:50 2007 New Revision: 43855 URL: http://llvm.org/viewvc/llvm-project?rev=43855&view=rev Log: Revised implementation of BatchReadOwnedPtrs() that deserializes an array of pointers to not allocate a second array to contain the pointer ids. Fixed bug in the same member function where deserialized pointers were not being registered with the backpatcher. Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Deserialize.h?rev=43855&r1=43854&r2=43855&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Deserialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Deserialize.h Wed Nov 7 18:04:50 2007 @@ -168,17 +168,20 @@ } template - void BatchReadOwnedPtrs(unsigned NumPtrs, T** Ptrs) { - llvm::SmallVector PtrIDs; - PtrIDs.reserve(NumPtrs); - - for (unsigned i = 0; i < NumPtrs; ++i) - PtrIDs.push_back(ReadInt()); - + void BatchReadOwnedPtrs(unsigned NumPtrs, T** Ptrs, bool AutoRegister=true) { for (unsigned i = 0; i < NumPtrs; ++i) - Ptrs[i] = PtrIDs[i] ? SerializeTrait::Materialize(*this) : NULL; - } + reinterpret_cast(Ptrs[i]) = ReadInt(); + for (unsigned i = 0; i < NumPtrs; ++i) { + unsigned PtrID = reinterpret_cast(Ptrs[i]); + T* p = PtrID ? SerializeTrait::Materialize(*this) : NULL; + + if (PtrID && AutoRegister) + RegisterPtr(PtrID,p); + + Ptrs[i] = p; + } + } template void ReadPtr(T*& PtrRef, bool AllowBackpatch = true) { From isanbard at gmail.com Wed Nov 7 18:06:32 2007 From: isanbard at gmail.com (Bill Wendling) Date: Wed, 7 Nov 2007 16:06:32 -0800 Subject: [llvm-commits] [llvm-gcc-4.0] r43842 - /llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp In-Reply-To: <251BF81A-2AA7-4F87-B461-964168B66E03@apple.com> References: <200711072059.lA7KxVOF022613@zion.cs.uiuc.edu> <251BF81A-2AA7-4F87-B461-964168B66E03@apple.com> Message-ID: <16e5fdf90711071606x6aa9663av9f6670ad6dded9e0@mail.gmail.com> On Nov 7, 2007 1:47 PM, Chris Lattner wrote: > > URL: http://llvm.org/viewvc/llvm-project?rev=43842&view=rev > > Log: > > Add FIXME line. > > Thanks, please add a short comment about what the actual problem is, > and mention the bugzilla. :) > Okay. > Also, Bill, after Duncan has tested and commits his patch to 4.2, can > you please backport it to 4.0? > Duncan mentioned that he was going to attempt this. :-) -bw From isanbard at gmail.com Wed Nov 7 18:10:46 2007 From: isanbard at gmail.com (Bill Wendling) Date: Thu, 08 Nov 2007 00:10:46 -0000 Subject: [llvm-commits] [llvm-gcc-4.0] r43856 - /llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Message-ID: <200711080010.lA80AkqX031092@zion.cs.uiuc.edu> Author: void Date: Wed Nov 7 18:10:45 2007 New Revision: 43856 URL: http://llvm.org/viewvc/llvm-project?rev=43856&view=rev Log: Revised FIXME comment 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=43856&r1=43855&r2=43856&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Wed Nov 7 18:10:45 2007 @@ -1297,7 +1297,10 @@ CastToType(Instruction::BitCast, DestPtr, SBP), CastToType(Instruction::BitCast, SrcPtr, SBP), CastToSIntType(Size, IntPtr), - ConstantInt::get(Type::Int32Ty, 1) // FIXME: Hardcoding 1 here is a hack. + // FIXME: (PR1781) The alignment of DestPtr and SrcPtr may be different. We + // want the alignment of memcpy to be the minimal of the two. This isn't + // currently possible. Setting to 1 for the meantime. + ConstantInt::get(Type::Int32Ty, 1) }; Intrinsic::ID IID = @@ -1313,7 +1316,10 @@ CastToType(Instruction::BitCast, DestPtr, SBP), CastToType(Instruction::BitCast, SrcPtr, SBP), CastToSIntType(Size, IntPtr), - ConstantInt::get(Type::Int32Ty, Align) + // FIXME: (PR1781) The alignment of DestPtr and SrcPtr may be different. We + // want the alignment of memmove to be the minimal of the two. This isn't + // currently possible. Setting to 1 for the meantime. + ConstantInt::get(Type::Int32Ty, 1) }; Intrinsic::ID IID = @@ -1329,7 +1335,10 @@ CastToType(Instruction::BitCast, DestPtr, SBP), CastToSIntType(SrcVal, Type::Int8Ty), CastToSIntType(Size, IntPtr), - ConstantInt::get(Type::Int32Ty, 1) // FIXME: Hardcoding 1 here is a hack. + // FIXME: (PR1781) The alignment of DestPtr and SrcPtr may be different. We + // want the alignment of memset to be the minimal of the two. This isn't + // currently possible. Setting to 1 for the meantime. + ConstantInt::get(Type::Int32Ty, 1) }; Intrinsic::ID IID = From kremenek at apple.com Wed Nov 7 18:55:31 2007 From: kremenek at apple.com (Ted Kremenek) Date: Thu, 08 Nov 2007 00:55:31 -0000 Subject: [llvm-commits] [llvm] r43861 - /llvm/trunk/include/llvm/Bitcode/Serialize.h Message-ID: <200711080055.lA80tVjt000320@zion.cs.uiuc.edu> Author: kremenek Date: Wed Nov 7 18:55:31 2007 New Revision: 43861 URL: http://llvm.org/viewvc/llvm-project?rev=43861&view=rev Log: Revised BatchEmitOwnedPtrs to work better with constant pointers. Modified: llvm/trunk/include/llvm/Bitcode/Serialize.h Modified: llvm/trunk/include/llvm/Bitcode/Serialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Serialize.h?rev=43861&r1=43860&r2=43861&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Serialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Serialize.h Wed Nov 7 18:55:31 2007 @@ -86,7 +86,7 @@ } template - void BatchEmitOwnedPtrs(unsigned NumPtrs, T** Ptrs) { + void BatchEmitOwnedPtrs(unsigned NumPtrs, T* const * Ptrs) { for (unsigned i = 0; i < NumPtrs; ++i) EmitPtr(Ptrs[i]); From dalej at apple.com Wed Nov 7 19:05:59 2007 From: dalej at apple.com (Dale Johannesen) Date: Thu, 08 Nov 2007 01:05:59 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43863 - in /llvm-gcc-4.2/trunk/gcc/testsuite/lib: target-supports-dg.exp target-supports.exp Message-ID: <200711080105.lA815xWm000779@zion.cs.uiuc.edu> Author: johannes Date: Wed Nov 7 19:05:58 2007 New Revision: 43863 URL: http://llvm.org/viewvc/llvm-project?rev=43863&view=rev Log: Add some entry points to support disabling tests that are irrelevant to LLVM. Modified: llvm-gcc-4.2/trunk/gcc/testsuite/lib/target-supports-dg.exp llvm-gcc-4.2/trunk/gcc/testsuite/lib/target-supports.exp Modified: llvm-gcc-4.2/trunk/gcc/testsuite/lib/target-supports-dg.exp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/lib/target-supports-dg.exp?rev=43863&r1=43862&r2=43863&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/lib/target-supports-dg.exp (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/lib/target-supports-dg.exp Wed Nov 7 19:05:58 2007 @@ -77,6 +77,19 @@ } } +# LLVM LOCAL begin +# Skip tests that use the -fdump options; llvm doesn't have these +# and never will. + +proc dg-require-fdump { args } { + if { [ is_llvm ] } { + upvar dg-do-what dg-do-what + set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] + } +} + +# LLVM LOCAL end + # If this target does not support DLL attributes skip this test. proc dg-require-dll { args } { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/lib/target-supports.exp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/lib/target-supports.exp?rev=43863&r1=43862&r2=43863&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/lib/target-supports.exp (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/lib/target-supports.exp Wed Nov 7 19:05:58 2007 @@ -307,6 +307,13 @@ verbose "Profiling argument is <$test_what>" 1 +# LLVM LOCAL begin + # We don't yet support profiling. + if { [ is_llvm ] } { + return 0 + } +# LLVM LOCAL end + # These conditions depend on the argument so examine them before # looking at the cache variable. @@ -1968,3 +1975,10 @@ return 0 } + +# LLVM LOCAL begin +# This is used to disable various tests for llvm. +proc is_llvm { } { + return 1 +} +# LLVM LOCAL end From dalej at apple.com Wed Nov 7 19:12:32 2007 From: dalej at apple.com (Dale Johannesen) Date: Thu, 08 Nov 2007 01:12:32 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43864 - /llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ Message-ID: <200711080112.lA81CfcB001375@zion.cs.uiuc.edu> Author: johannes Date: Wed Nov 7 19:12:30 2007 New Revision: 43864 URL: http://llvm.org/viewvc/llvm-project?rev=43864&view=rev Log: Make these tests not run for LLVM. Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030530-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030611-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030703-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030703-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030708-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030709-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030709-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030709-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030710-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030714-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030714-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030728-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030729-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030730-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030730-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030731-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030731-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-10.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-11.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-7.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-8.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-9.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030808-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-7.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030815-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030821-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030824-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030824-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030825-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030907-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030917-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030917-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030922-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030922-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031015-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031021-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031022-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031216-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040210-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040211-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040216-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040305-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040308-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040308-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040308-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040430-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040513-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040513-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040514-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040514-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040518-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040518-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040615-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040624-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040703-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040721-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040729-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040911-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20041002-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20041122-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050128-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050215-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050314-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050412-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-10.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-11.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-12.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/asm-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/asm-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-10.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-11.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-7.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-8.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-9.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/cfgcleanup-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/copy-headers.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldcast-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11a.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11b.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11c.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/inline-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/inline_asm-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/inline_asm-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ivcanon-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ivopts-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre10.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre11.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre12.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre13.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre14.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre15.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre16.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre17.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre18.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre19.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre20.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre21.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre22.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre7.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-10.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-11.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-14.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-15.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-16.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-17.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-18.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-19.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-20.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-7.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-8.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-8.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14341.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14814.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14841.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15349.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr16721.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17141-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17141-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17598.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr18133-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr18133-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr18134.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19633.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20139.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20256.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20470.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20657.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20701.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20702.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21001.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21031.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21090.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21171.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21294.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21417.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21458.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21563.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21574.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21582.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21658.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21829.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21959.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21985.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22026.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22051-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22051-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22117.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22321.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23109.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23294.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23382.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr24117.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr24287.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr24990-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr25382.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr25485.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr25501.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr26421.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr26435.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr27236.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr27498.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr27781.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pta-fp.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-10.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-11.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-12.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-7.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-8.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-9.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-7.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/salias-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/sra-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/sra-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/sra-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-10.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-11.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-13.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-7.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-9.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-ccp-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-7.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-11.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-12.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-13.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-14.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/structopt-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/structopt-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/structopt-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailcall-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailcall-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/update-cunroll.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/update-threading.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/useless-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp01.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp02.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp03.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp04.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp05.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp06.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp07.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp09.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp11.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp15.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp16.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp17.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp18.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp19.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp20.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp21.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp22.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp23.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp24.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp25.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp26.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp28.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-2.c Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030530-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030530-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030530-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030530-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef struct rs6000_stack { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030611-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030611-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030611-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030611-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern int square (int) __attribute__ ((__const__)); shit(int a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030703-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030703-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030703-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030703-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); extern int blah[]; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030703-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030703-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030703-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030703-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030708-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030708-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030708-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030708-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); struct rtx_def; typedef struct rtx_def *rtx; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030709-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030709-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030709-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030709-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ static int copying_arguments; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030709-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030709-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030709-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030709-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-cddce" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct rtx_def; typedef struct rtx_def *rtx; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030709-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030709-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030709-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030709-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030710-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030710-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030710-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030710-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); union tree_node; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-1.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* { dg-do compile } */ /* APPLE LOCAL lno */ /* { dg-options "-O1 -fdump-tree-dom3 -ftree-loop-optimize" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct rtx_def; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct rtx_def; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030714-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030714-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030714-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030714-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct rtx_def; typedef struct rtx_def *rtx; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030714-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030714-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030714-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030714-2.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* { dg-do compile } */ /* APPLE LOCAL lno */ /* { dg-options "-O1 -fdump-tree-dom3 -ftree-loop-optimize" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ union tree_node; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030728-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030728-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030728-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030728-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ union tree_node; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030729-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030729-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030729-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030729-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); union tree_node; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030730-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030730-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030730-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030730-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void exit (int); extern void *ggc_alloc (__SIZE_TYPE__); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030730-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030730-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030730-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030730-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void exit (int); extern void *ggc_alloc (__SIZE_TYPE__); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030731-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030731-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030731-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030731-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030731-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030731-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030731-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030731-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-store_ccp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ bar (int i, int partial, int args_addr) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct rtx_def; typedef struct rtx_def *rtx; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-10.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-10.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-10.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-10.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern const unsigned char mode_size[]; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-11.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-11.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-11.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-11.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); struct rtx_def; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -ftree-vrp -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef unsigned int cppchar_t; cppchar_t Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-5.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-5.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); struct rtx_def; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-6.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-6.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-6.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-7.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-7.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-7.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-7.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-8.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-8.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-8.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-8.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct die_struct; typedef struct die_struct *dw_die_ref; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-9.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-9.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-9.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030807-9.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ static void bar () Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030808-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030808-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030808-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030808-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-cddce" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); union tree_node; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-5.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-5.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); union tree_node; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-6.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-6.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-6.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); union tree_node; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-7.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-7.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-7.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030814-7.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); struct rtx_def; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030815-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030815-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030815-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030815-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); typedef unsigned int size_t; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030821-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030821-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030821-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030821-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void foo(int k) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030824-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030824-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030824-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030824-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct A { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030824-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030824-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030824-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030824-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct A { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030825-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030825-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030825-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030825-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void bla(void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030907-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030907-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030907-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030907-1.c Wed Nov 7 19:12:30 2007 @@ -5,6 +5,8 @@ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); extern void exit (int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030917-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030917-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030917-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030917-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-store_ccp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern int board[]; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030917-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030917-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030917-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030917-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-store_ccp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern int printf (const char *, ...); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030922-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030922-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030922-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030922-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030922-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030922-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030922-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030922-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct rtx_def; typedef struct rtx_def *rtx; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031015-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031015-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031015-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031015-1.c Wed Nov 7 19:12:30 2007 @@ -2,6 +2,8 @@ a VOP of x in the asm statement. */ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-alias1-vops" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct s { int a; }; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031021-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031021-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031021-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031021-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct A { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031022-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031022-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031022-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031022-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef struct edge_def { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void link_error (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void link_error (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void link_error (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void link_error (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-5.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-5.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void link_error (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-6.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-6.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031106-6.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fno-tree-sra -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void link_error (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031216-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031216-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031216-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20031216-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void link_error (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void link_error (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040210-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040210-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040210-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040210-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-phiopt1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void abort(void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040211-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040211-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040211-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040211-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-cddce" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040216-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040216-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040216-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040216-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dse1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ foo(int *z, int *y, int xx) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040305-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040305-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040305-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040305-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-cddce -fdump-tree-forwprop1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int abarney[2]; int afred[1]; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040308-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040308-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040308-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040308-1.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* APPLE LOCAL file lno */ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-phiopt1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int t( int i) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040308-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040308-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040308-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040308-2.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* APPLE LOCAL file lno */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-phiopt1-details -fdump-tree-tailc-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int i) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040308-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040308-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040308-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040308-3.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* APPLE LOCAL file lno */ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-phiopt1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int t( int i) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040430-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040430-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040430-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040430-1.c Wed Nov 7 19:12:30 2007 @@ -5,6 +5,8 @@ /* { dg-do run } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort(void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040513-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040513-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040513-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040513-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-forwprop1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void bar (void); void Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040513-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040513-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040513-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040513-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom2" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int link_error(void); int s(void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040514-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040514-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040514-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040514-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-phiopt1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int t( int i) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040514-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040514-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040514-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040514-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-phiopt1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo2 (distance, i, j) int distance; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-alias1-vops" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); int a; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040518-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040518-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040518-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040518-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-phiopt1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int a, int b) { int c = b; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040518-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040518-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040518-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040518-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-phiopt1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int t( int i) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040615-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040615-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040615-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040615-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void bar1 (void); void bar2 (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040624-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040624-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040624-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040624-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void bar1 (void); void bar2 (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040703-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040703-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040703-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040703-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dom2" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ float foo(float x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040721-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040721-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040721-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040721-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-store_ccp-vops" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Test to check whether global variables are being constant propagated. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040729-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040729-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040729-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040729-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dce3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ foo () { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040911-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040911-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040911-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20040911-1.c Wed Nov 7 19:12:30 2007 @@ -2,6 +2,8 @@ pointer arithmetics. */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-alias1-vops" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ char buf[4], *q; int foo (int i) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20041002-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20041002-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20041002-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20041002-1.c Wed Nov 7 19:12:30 2007 @@ -3,6 +3,8 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-ssa" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int i) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20041122-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20041122-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20041122-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20041122-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dom3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef unsigned int size_t; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050128-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050128-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050128-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050128-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int align) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050215-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050215-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050215-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050215-1.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* PR middle-end/19857 */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int i; int foo (void) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050314-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050314-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050314-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050314-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-lim-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ float a[100]; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050412-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050412-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050412-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050412-1.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* PR tree-optimization/14627 */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int b; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-1.c Wed Nov 7 19:12:30 2007 @@ -1,4 +1,6 @@ /* { dg-options "-O2 -fargument-noalias-global -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f; void link_error (); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-10.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-10.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-10.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-10.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct { int i; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-11.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-11.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-11.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-11.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct param { int *a; }; void foo(struct param *p); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-12.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-12.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-12.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-12.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-alias1-vops" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct { int i; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-2.c Wed Nov 7 19:12:30 2007 @@ -1,4 +1,6 @@ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ static int a; int f; void bar (void) __attribute__((noinline)); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct { int i; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct { int i; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-5.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-5.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct { int i; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-6.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-6.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/alias-6.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct param { int *a; }; void foo(struct param *p); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ unsigned int test1(unsigned int a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int test1(int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/asm-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/asm-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/asm-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/asm-1.c Wed Nov 7 19:12:30 2007 @@ -3,6 +3,8 @@ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void f() { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/asm-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/asm-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/asm-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/asm-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #ifdef __hppa__ #define REGISTER "1" Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* PR 17739 */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #ifdef __hppa__ #define REGISTER "1" Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(_Bool x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-10.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-10.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-10.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-10.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(_Bool x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-11.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-11.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-11.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-11.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(_Bool x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(_Bool x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(_Bool x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(_Bool x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-5.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-5.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(_Bool x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-6.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-6.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-6.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(_Bool x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-7.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-7.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-7.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-7.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(_Bool x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-8.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-8.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-8.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-8.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(_Bool x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-9.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-9.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-9.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/bool-9.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ _Bool f1(_Bool x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-fab" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef struct { int i; } FILE; FILE *fp; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-fab" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef struct { int i; } FILE; FILE *fp; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-fab" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern int printf (const char *, ...); volatile int vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7, vi8, vi9, via; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-fab" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern int __printf_chk (int, const char *, ...); volatile int vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7, vi8, vi9, via; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-fab" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-fab" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-fab" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-fab" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/cfgcleanup-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/cfgcleanup-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/cfgcleanup-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/cfgcleanup-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dce1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void cleanup (int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-1.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* Verify that we don't libcall for complex * real. */ /* { dg-do compile } */ /* { dg-options "-std=c99 -O -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef _Complex float C; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-2.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* Verify that we don't libcall for complex / real. */ /* { dg-do compile } */ /* { dg-options "-std=c99 -O -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef _Complex float C; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef _Complex float COMPLEX_FLOAT; float real_part(COMPLEX_FLOAT a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/complex-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int g(_Complex int*); int f(void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/copy-headers.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/copy-headers.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/copy-headers.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/copy-headers.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-ch-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern int foo (int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fstrict-overflow -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fstrict-overflow -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fstrict-overflow -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/divide-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fstrict-overflow -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ char *a; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldcast-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldcast-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldcast-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldcast-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do "compile" } */ /* { dg-options "-fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef int ssize_t __attribute__((mode(pointer))); ssize_t foo (ssize_t x) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-useless" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void arf () Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do run { target vect_cmdline_needed } } */ /* { dg-options "-O2 -ftree-vectorize -ftree-vectorizer-verbose=3 -fwrapv -fdump-tree-vect-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11a.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11a.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11a.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11a.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do run { target vect_cmdline_needed } } */ /* { dg-options "-O2 -ftree-vectorize -ftree-vectorizer-verbose=3 -fdump-tree-vect-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11b.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11b.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11b.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11b.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do run { target vect_cmdline_needed } } */ /* { dg-options "-O2 -ftree-vectorize -ftree-vectorizer-verbose=3 -fdump-tree-vect-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11c.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11c.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11c.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11c.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do run { target vect_cmdline_needed } } */ /* { dg-options "-O2 -ftree-vectorize -ftree-vectorizer-verbose=3 -fdump-tree-vect-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do run { target vect_cmdline_needed } } */ /* { dg-options "-O2 -ftree-vectorize -ftree-vectorizer-verbose=3 -fdump-tree-vect-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do run { target vect_cmdline_needed } } */ /* { dg-options "-O2 -ftree-vectorize -ftree-vectorizer-verbose=3 -fdump-tree-vect-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do run { target vect_cmdline_needed } } */ /* { dg-options "-O2 -ftree-vectorize -ftree-vectorizer-verbose=3 -fdump-tree-vect-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do run { target vect_cmdline_needed } } */ /* { dg-options "-O2 -ftree-vectorize -ftree-vectorizer-verbose=3 -fdump-tree-vect-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do run { target vect_cmdline_needed } } */ /* { dg-options "-O2 -ftree-vectorize -ftree-vectorizer-verbose=3 -fdump-tree-vect-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-c -O2 -ftree-vectorize -fdump-tree-ifcvt-stats" { target *-*-* } } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-c -O2 -ftree-vectorize -fdump-tree-ifcvt-stats" { target *-*-* } } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void foo(const int * __restrict__ zr_in, const int * __restrict__ zi_in, Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/inline-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/inline-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/inline-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/inline-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-final_cleanup" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef struct { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/inline_asm-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/inline_asm-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/inline_asm-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/inline_asm-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized -fdump-tree-alias1-vops" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Test to make sure that inline-asm causes a V_MAY_DEF and that we call test_function twice. */ char test_function(void ) __attribute__((__pure__)); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/inline_asm-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/inline_asm-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/inline_asm-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/inline_asm-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-alias1-vops" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Test to make sure that inline-asm causes a V_MAY_DEF. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ivcanon-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ivcanon-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ivcanon-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ivcanon-1.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* APPLE LOCAL file lno */ /* { dg-do compile } */ /* { dg-options "-O2 -ftree-loop-optimize -funroll-loops -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void foo(void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ivopts-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ivopts-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ivopts-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ivopts-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-ivopts-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ long last_data_offset; int store; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int main(int *a, int argc) { int c; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre10.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre10.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre10.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre10.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct tree_common { int code; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre11.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre11.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre11.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre11.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int *t; int g(int); int f(int tt) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre12.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre12.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre12.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre12.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef int type[2]; type *t; int g(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre13.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre13.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre13.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre13.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int t[2]; int g(int); int f(int tt) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre14.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre14.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre14.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre14.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef int type[2]; int main(type *a, int argc) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre15.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre15.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre15.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre15.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef int type[2]; int main(type *a, int argc, int t) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre16.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre16.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre16.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre16.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef int type[2]; int main(type *a, int argc) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre17.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre17.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre17.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre17.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef int type[2]; int main(type *a, int argc) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre18.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre18.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre18.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre18.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef int type[2]; int main(type *a, int argc) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre19.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre19.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre19.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre19.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef int type[2]; int main(type *a, int argc) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int main(int *a, int argc) { int b; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre20.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre20.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre20.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre20.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef int type[2]; int main(type *a, int argc) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre21.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre21.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre21.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre21.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef int type[2]; int main(type *a, int argc) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre22.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre22.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre22.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre22.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef int type[2]; int main(type *a, int argc) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int main(int **a,int argc) { int b; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int main(int *a, int argc) { int b; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre5.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre5.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int p; int r; int a(void) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ union tree_node; typedef union tree_node *tree; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre7.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre7.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre7.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre7.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* We can't eliminate the *p load here in any sane way, as eshup8 may change it. */ void Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef union tree_node *tree; struct tree_common { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-1.c Wed Nov 7 19:12:30 2007 @@ -1,15 +1,21 @@ /* { dg-do compile } */ /* { dg-options "-O1 -ftree-loop-ivcanon -funroll-loops -fdump-tree-ivcanon-details -fdump-tree-cunroll-details -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* On 31-bit S/390 the function address will be stored (once) in the literal pool, so scan-assembler-times "foo" will return 1 even if the loop is fully unrolled. -msmall-exec avoids this by enabling a call instruction with immediate operand. */ /* { dg-options "-O1 -ftree-loop-ivcanon -funroll-loops -fdump-tree-ivcanon-details -fdump-tree-cunroll-details -fdump-tree-optimized -msmall-exec" { target s390-*-* } } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* On Darwin, we call extern functions via a stub in PIC mode which is default and the stub is named after the function. To avoid this we use -static to go out of PIC mode. */ /* { dg-options "-O1 -ftree-loop-ivcanon -funroll-loops -fdump-tree-ivcanon-details -fdump-tree-cunroll-details -fdump-tree-optimized -static" { target *-*-darwin* } } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void xxx(void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-10.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-10.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-10.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-10.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-require-effective-target int32plus } */ int bar (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-11.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-11.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-11.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-11.c Wed Nov 7 19:12:30 2007 @@ -3,6 +3,8 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void bar (unsigned); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-14.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-14.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-14.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-14.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* A test for final value replacement. */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo(void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-15.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-15.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-15.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-15.c Wed Nov 7 19:12:30 2007 @@ -2,6 +2,8 @@ value replacement. */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo(void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-16.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-16.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-16.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-16.c Wed Nov 7 19:12:30 2007 @@ -3,6 +3,8 @@ and we may use 64-bit variable to represent them. */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-do compile { target x86_64-*-* } } */ unsigned a[100]; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-17.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-17.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-17.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-17.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-sccp-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* To determine the number of iterations in this loop we need to fold p_4 + 4B > p_4 + 8B to false. This transformation has caused Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-18.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-18.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-18.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-18.c Wed Nov 7 19:12:30 2007 @@ -3,6 +3,8 @@ i is first extended to 64-bit type). */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-do compile { target x86_64-*-* } } */ unsigned bar(void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-19.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-19.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-19.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-19.c Wed Nov 7 19:12:30 2007 @@ -6,6 +6,8 @@ /* { dg-do compile { target i?86-*-* x86_64-*-* powerpc*-*-*} } */ /* { dg-options "-O3 -fdump-tree-final_cleanup" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ # define N 2000000 static double a[N],c[N]; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-2.c Wed Nov 7 19:12:30 2007 @@ -2,6 +2,8 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-require-effective-target size32plus } */ /* Size of this structure should be sufficiently weird so that no memory Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-20.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-20.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-20.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-20.c Wed Nov 7 19:12:30 2007 @@ -2,6 +2,8 @@ /* { dg-do compile { target fpic } } */ /* { dg-options "-O -ftree-vrp -fPIC -fdump-tree-ivopts" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef struct gfc_se { int pre; } gfc_se; typedef struct gfc_ss_info { int dim[7]; } gfc_ss_info; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-3.c Wed Nov 7 19:12:30 2007 @@ -6,6 +6,8 @@ /* APPLE LOCAL begin 4874947 mainline */ /* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-fpic" "-fPIC" } { "" } } */ /* { dg-options "-O1 -fno-pic -fno-PIC -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* APPLE LOCAL end 4874947 mainline */ int arr_base[100]; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-4.c Wed Nov 7 19:12:30 2007 @@ -2,6 +2,8 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-require-effective-target size32plus } */ /* Size of this structure should be sufficiently weird so that no memory Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-5.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-5.c Wed Nov 7 19:12:30 2007 @@ -2,6 +2,8 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void foo(long); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-6.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-6.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-6.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -funswitch-loops -fdump-tree-unswitch-details -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int ch; int a[100]; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-7.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-7.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-7.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-7.c Wed Nov 7 19:12:30 2007 @@ -2,6 +2,8 @@ /* { dg-do compile } */ /* APPLE LOCAL 4875151 make sure PRE is off */ /* { dg-options "-O1 -fno-tree-pre -fdump-tree-lim-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int cst_fun1 (int) __attribute__((__const__)); int cst_fun2 (int) __attribute__((__const__)); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-8.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-8.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-8.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/loop-8.c Wed Nov 7 19:12:30 2007 @@ -2,6 +2,8 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int bar (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-require-effective-target size32plus } */ double u[1782225]; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-require-effective-target size32plus } */ double u[1782225]; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-require-effective-target size32plus } */ double u[1782225]; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-require-effective-target size32plus } */ double u[1782225]; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-8.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-8.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-8.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ltrans-8.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ double foo(double *a) { int i,j; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int a, int b, int c) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ _Bool f1(_Bool a, _Bool b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ _Bool t(); _Bool t1(); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-5.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-5.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -ffinite-math-only -fdump-tree-phiopt1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ float repl1 (float varx) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14341.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14341.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14341.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14341.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-require-effective-target int32plus } */ void fn_call (int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fstrict-overflow -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int g(int x) { return (x - 10) < 0; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple -fwrapv" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int g(int x) { return (x - 10) < 0; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fstrict-overflow -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int g(int x) { return (x + 10) < 0; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple -fwrapv" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int g(int x) { return (x + 10) < 0; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14814.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14814.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14814.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14814.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-forwprop2" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct YY { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14841.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14841.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14841.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14841.c Wed Nov 7 19:12:30 2007 @@ -4,6 +4,8 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-store_ccp-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct car { int speed; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15349.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15349.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15349.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15349.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* PR 15349. Merge two PHI nodes. */ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-mergephi" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int a, int b) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int i, unsigned j) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int i, int j) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-5.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-5.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo(int i, int j) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr16721.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr16721.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr16721.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr16721.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fno-strict-aliasing -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct data { volatile unsigned long *addr; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17141-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17141-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17141-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17141-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-forwprop2" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct A { int i; }; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17141-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17141-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17141-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17141-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17598.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17598.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17598.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17598.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct f { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr18133-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr18133-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr18133-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr18133-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized-blocks" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void foo (void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr18133-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr18133-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr18133-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr18133-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized-blocks" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int c, d; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr18134.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr18134.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr18134.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr18134.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f1(int a,int b,int c,int d) { return ((a&d)|(b&c)) ^ (b&c); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f1(int a,int b) { return (a|b) ^ b; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19633.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19633.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19633.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19633.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-ssa-vops" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct S { int w, x, y, z; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20139.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20139.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20139.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20139.c Wed Nov 7 19:12:30 2007 @@ -4,6 +4,8 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-final_cleanup" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern double fabs (double); extern void link_error (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20256.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20256.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20256.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20256.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-require-effective-target size32plus } */ int foo() Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20470.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20470.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20470.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20470.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* PR tree-optimization/20470: Missing fold to abs(x) when x == MINUS_EXPR. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20657.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20657.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20657.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20657.c Wed Nov 7 19:12:30 2007 @@ -4,6 +4,8 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-vrp1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20701.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20701.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20701.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20701.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef struct { int code; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20702.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20702.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20702.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20702.c Wed Nov 7 19:12:30 2007 @@ -5,6 +5,8 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-vrp1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar (int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21001.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21001.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21001.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21001.c Wed Nov 7 19:12:30 2007 @@ -6,6 +6,8 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-vrp1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21031.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21031.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21031.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21031.c Wed Nov 7 19:12:30 2007 @@ -4,6 +4,8 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-forwprop1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int *p) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21090.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21090.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21090.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21090.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int g, h; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21171.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21171.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21171.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21171.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* PR 21171. Ivopts should not rewrite references to volatile memory. */ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef unsigned int u_int32_t; typedef unsigned char u_int8_t; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21294.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21294.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21294.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21294.c Wed Nov 7 19:12:30 2007 @@ -5,6 +5,8 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-vrp1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct f { int i; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21417.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21417.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21417.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21417.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dom3-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct tree_common { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21458.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21458.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21458.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21458.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void g (void); extern void bar (int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ static int blocksize = 4096; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21563.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21563.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21563.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21563.c Wed Nov 7 19:12:30 2007 @@ -3,6 +3,8 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-vrp1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21574.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21574.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21574.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21574.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-store_ccp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int *p) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21582.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21582.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21582.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21582.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do link } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ static inline void do_thing(char *s, int *p, char *q) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21658.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21658.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21658.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21658.c Wed Nov 7 19:12:30 2007 @@ -4,6 +4,8 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-ccp-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void link_error (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21829.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21829.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21829.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21829.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-phicprop-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int test(int v) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21959.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21959.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21959.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21959.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ unsigned char c[0xFF]; void f(void) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21985.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21985.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21985.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr21985.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22026.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22026.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22026.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22026.c Wed Nov 7 19:12:30 2007 @@ -4,6 +4,8 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int plus (int x, int y) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22051-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22051-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22051-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22051-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void *arf (); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22051-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22051-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22051-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22051-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized -w" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22117.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22117.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22117.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22117.c Wed Nov 7 19:12:30 2007 @@ -4,6 +4,8 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void foo (int *p, int q) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22321.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22321.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22321.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr22321.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fno-tree-vrp -fno-tree-copy-prop -fno-tree-ccp -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ volatile int x; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23109.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23109.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23109.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23109.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -funsafe-math-optimizations -fdump-tree-recip -fdump-tree-lim" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ double F[2] = { 0., 0. }, e = 0.; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23294.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23294.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23294.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23294.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f1(int a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23382.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23382.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23382.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23382.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-alias-vops" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct a { int length; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr24117.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr24117.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr24117.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr24117.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef struct { int x; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr24287.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr24287.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr24287.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr24287.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int g1(int); int h(int *a, int *b)__attribute__((pure)); void link_error(); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr24990-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr24990-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr24990-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr24990-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr25382.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr25382.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr25382.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr25382.c Wed Nov 7 19:12:30 2007 @@ -4,6 +4,8 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr25485.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr25485.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr25485.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr25485.c Wed Nov 7 19:12:30 2007 @@ -2,6 +2,8 @@ VRP did not fold TRUTH_AND_EXPR. Make sure it does now. */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int a, int b) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr25501.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr25501.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr25501.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr25501.c Wed Nov 7 19:12:30 2007 @@ -4,6 +4,8 @@ happen any more. */ /* { dg-options "-O1 -fdump-tree-mergephi" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr26421.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr26421.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr26421.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr26421.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-alias1-vops" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef struct { int i; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr26435.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr26435.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr26435.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr26435.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-require-effective-target size32plus } */ int foo(int *p, int n) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr27236.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr27236.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr27236.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr27236.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ static inline int inline_read(volatile int *mem) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr27498.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr27498.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr27498.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr27498.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void zconfdump(void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr27781.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr27781.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr27781.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr27781.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* { dg-do compile } */ /* { dg-require-weak "" } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void __attribute__((weak)) func(void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pta-fp.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pta-fp.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pta-fp.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pta-fp.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-alias1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern double cos (double); extern double sin (double); double f(double a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int a, b, c, d; extern int printf (const char *, ...); int main(void) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-10.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-10.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-10.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-10.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int main(int a, int b, int c, int d) { /* Should become just a & b & c & d */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-11.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-11.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-11.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-11.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-reassoc1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int main(int a, int b, int c, int d) { /* All the xor's cancel each other out, leaving 0 */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-12.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-12.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-12.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-12.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-reassoc1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int a, int b) { /* MAX_EXPR should cause it to be equivalent to a. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f (int a0,int a1,int a2,int a3,int a4) { int b0, b1, b2, b3, b4,e; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized -ffast-math" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ float a, b, c, d; extern int printf (const char *, ...); int main(void) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-5.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-5.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern int printf (const char *, ...); int main(int argc, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-6.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-6.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-6.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-reassoc1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int main(int a, int b, int c, int d) { /* Should be transformed into a + c + 8 */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-7.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-7.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-7.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-7.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-reassoc1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int main(int a, int b, int c, int d, int e, int f, int g, int h) { /* Should be transformed into a + c + d + e + g + 15 */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-8.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-8.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-8.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-8.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-reassoc1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int main(int a, int b, int c, int d, int e, int f, int g, int h) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-9.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-9.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-9.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-9.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-reassoc1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int main(int a, int b, int c, int d, int e, int f, int g, int h) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -funsafe-math-optimizations -fdump-tree-recip" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ float e(float *x, float *y, float *z) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -funsafe-math-optimizations -fdump-tree-recip" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ float e(float a, float b, float c, float d, float e, float f) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fno-trapping-math -funsafe-math-optimizations -fdump-tree-recip" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ double F[2] = { 0.0, 0.0 }, e; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fno-trapping-math -funsafe-math-optimizations -fdump-tree-recip" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* based on the test case in pr23109 */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-5.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-5.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-options "-O1 -funsafe-math-optimizations -ftrapping-math -fdump-tree-recip -fdump-tree-optimized" } */ /* { dg-do compile } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Test the reciprocal optimizations together with trapping math. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-6.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-6.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-6.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* APPLE LOCAL 4875151 make sure PRE is off */ /* { dg-options "-O1 -funsafe-math-optimizations -fno-trapping-math -fdump-tree-recip -fno-tree-pre" } */ /* { dg-do compile } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Test inserting in a block that does not contain a division. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-7.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-7.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-7.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/recip-7.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* APPLE LOCAL 4875151 make sure PRE is off */ /* { dg-options "-O1 -funsafe-math-optimizations -fno-trapping-math -fdump-tree-recip -fno-tree-pre" } */ /* { dg-do compile } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Test inserting in a block that does not contain a division. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/salias-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/salias-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/salias-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/salias-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-salias" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct { struct { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c Wed Nov 7 19:12:30 2007 @@ -2,6 +2,8 @@ /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void blas (char xxx); void blau (unsigned char xxx); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/sra-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/sra-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/sra-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/sra-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized --param sra-max-structure-size=32" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Tests for SRA. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/sra-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/sra-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/sra-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/sra-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized --param sra-max-structure-size=32" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Test for SRA. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/sra-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/sra-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/sra-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/sra-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized --param sra-max-structure-size=32" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Test for SRA. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-store_ccp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void link_error (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-10.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-10.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-10.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-10.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-fab" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Check that we fold strlen of equally long strings, and that we do not fail to terminate when there is a nontrivial cycle in the corresponding Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-11.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-11.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-11.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-11.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Test for CPROP across a DAG. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-13.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-13.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-13.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-13.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ static const char f[3] = "?"; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void link_error (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-store_ccp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void link_error (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-7.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-7.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-7.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-7.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void link_error (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-9.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-9.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-9.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-9.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Check that cprop works for assignments to array elements and structs. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-store_copyprop-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef struct { int i; int j; } A; int foo(A *a, int i) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-dce3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int t() __attribute__ ((const)); q() Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dce3" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* We should notice constantness of this function. */ static int __attribute__((noinline)) t(int a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-cddce" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int main(void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-ccp-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-ccp-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-ccp-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-ccp-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int t(int a) __attribute__ ((const)); void abort (void); int Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-fre-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int t(int a) __attribute__ ((const)); void q (void); void Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dom1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void t(void); void q(void); void q1(void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-1.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* { dg-do compile } */ /* APPLE LOCAL 4875151 needs strict aliasing */ /* { dg-options "-O2 -fdump-tree-dse1 -fstrict-aliasing" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int a, int b, int c) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dse1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int a, b, c; int Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dse1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ char Bool_Glob; void f(void) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dse1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ foo( int *a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-5.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-5.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int x; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dse1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo11 (int c) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-7.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-7.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-7.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-7.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dse1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int glob1, glob2; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-fre-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* From PR27090. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-fre-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* From PR14287. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O -fwrapv -fdump-tree-fre-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* From PR14844. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-fre-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* From PR21608. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-5.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-5.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-fre-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* From PR19792. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern int printf (const char *, ...); int main(int argc, char **argv) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ double cos (double); void link_error(); void f(double a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-11.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-11.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-11.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-11.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ double cos (double); double f(double a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-12.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-12.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-12.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-12.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ double cos (double) __attribute__ ((const)); double sin (double) __attribute__ ((const)); double f(double a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-13.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-13.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-13.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-13.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ double cos (double) __attribute__ ((const)); double sin (double) __attribute__ ((const)); double f(double a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-14.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-14.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-14.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-14.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern __SIZE_TYPE__ strlen (const char *) __attribute__ ((__pure__)); void Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int motion_test1(int data, int data_0, int data_3, int v) { int i; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ unsigned foo1 (unsigned a, unsigned b) { unsigned i, j, k; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int main(void) { int x, c, y; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-5.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-5.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int i) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-6.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-6.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-6.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int main(int x) { int c, y; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int *array) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct s { int *n; }; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-fre-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (unsigned long a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-sink-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo (int a, int b, int c) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-sink-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int bar (int a, int b, int c) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-sink-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void foo(int a); int main (int argc) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-sink-stats" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern int foo (int *, int *); extern int foo2 (int); int Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-stdarg" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-2.c Wed Nov 7 19:12:30 2007 @@ -4,6 +4,8 @@ or char * va_list. */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-stdarg" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-3.c Wed Nov 7 19:12:30 2007 @@ -4,6 +4,8 @@ or char * va_list. */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-stdarg" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-4.c Wed Nov 7 19:12:30 2007 @@ -4,6 +4,8 @@ or char * va_list. */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-stdarg" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-5.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/stdarg-5.c Wed Nov 7 19:12:30 2007 @@ -1,6 +1,8 @@ /* This test has architecture specific function passing details. */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-stdarg" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/structopt-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/structopt-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/structopt-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/structopt-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-lim-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int x; int y; struct { int x; int y; } global; int foo() { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/structopt-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/structopt-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/structopt-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/structopt-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized -fno-tree-sra" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Even without SRA being enabled, we should be able to eliminate every structure store and load here. */ extern void foo (const int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/structopt-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/structopt-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/structopt-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/structopt-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct foo { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailcall-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailcall-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailcall-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailcall-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-tailc-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void *alloca (__SIZE_TYPE__); int q(int a); int *v; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailcall-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailcall-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailcall-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailcall-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-tailc-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Test provided by Richard Earnshaw in PR 14312. */ void bar (int i); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -foptimize-sibling-calls -fdump-tree-tailr-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int t(int a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-2.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -foptimize-sibling-calls -fdump-tree-tailr-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int t(char *a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-3.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-3.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -foptimize-sibling-calls -fdump-tree-tailr-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int t(int a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-4.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-4.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -foptimize-sibling-calls -fdump-tree-tailr-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int t(int a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-5.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-5.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do run } */ /* { dg-options "-O1 -foptimize-sibling-calls -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void); extern void exit (int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { do-go compile } */ /* { dg-options "-fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef struct { int i; } Foo; Foo foo; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/update-cunroll.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/update-cunroll.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/update-cunroll.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/update-cunroll.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int a[8]; int t() { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/update-threading.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/update-threading.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/update-threading.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/update-threading.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef struct { unsigned short a; } A; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/useless-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/useless-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/useless-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/useless-1.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-useless" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void foo (void) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp01.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp01.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp01.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp01.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ foo (int *p, int i) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp02.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp02.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp02.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp02.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct A { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp03.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp03.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp03.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp03.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct A { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp04.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp04.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp04.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp04.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ foo (int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp05.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp05.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp05.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp05.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ foo (int k, int j) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp06.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp06.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp06.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp06.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ foo (int i, int j, int a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp07.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp07.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp07.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp07.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ foo (int i, int *p) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fno-tree-fre -fdump-tree-vrp1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Compile with -fno-tree-fre -O2 to prevent CSEing *p. */ foo (int a, int *p) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp09.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp09.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp09.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp09.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ foo (int *p) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp11.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp11.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp11.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp11.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ foo (int k, int j, int z) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp15.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp15.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp15.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp15.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void) __attribute__ ((__noreturn__)); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp16.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp16.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp16.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp16.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void) __attribute__ ((__noreturn__)); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp17.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp17.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp17.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp17.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (void) __attribute__ ((__noreturn__)); union tree_node; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp18.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp18.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp18.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp18.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ static int blocksize = 4096; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp19.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp19.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp19.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp19.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fwrapv -O1 -ftree-vrp -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include extern void abort (); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp20.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp20.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp20.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp20.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fwrapv -O1 -ftree-vrp -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (); extern void exit (int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp21.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp21.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp21.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp21.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -ftree-vrp -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-require-effective-target int32plus } */ extern void link_error (); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp22.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp22.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp22.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp22.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -ftree-vrp -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-require-effective-target int32plus } */ extern void link_error (); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp23.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp23.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp23.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp23.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ blah (int code1, int code2) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp24.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp24.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp24.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp24.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct rtx_def; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp25.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp25.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp25.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp25.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1-details" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void abort (); int tree_code_length[100]; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp26.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp26.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp26.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp26.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo(int a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp28.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp28.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp28.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/vrp28.c Wed Nov 7 19:12:30 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(_Bool a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-1.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-1.c Wed Nov 7 19:12:30 2007 @@ -1,4 +1,6 @@ /* { dg-options "-O2 -fdump-tree-optimized -fwhole-program" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int b[100]; void abort (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-2.c?rev=43864&r1=43863&r2=43864&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-2.c Wed Nov 7 19:12:30 2007 @@ -1,4 +1,6 @@ /* { dg-options "-O2 -fdump-tree-optimized -fwhole-program" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ __attribute__ ((externally_visible)) void externally_visible_function () From dalej at apple.com Wed Nov 7 19:19:56 2007 From: dalej at apple.com (Dale Johannesen) Date: Thu, 08 Nov 2007 01:19:56 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43865 - /llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/vect/vect.exp Message-ID: <200711080119.lA81JuhW001640@zion.cs.uiuc.edu> Author: johannes Date: Wed Nov 7 19:19:56 2007 New Revision: 43865 URL: http://llvm.org/viewvc/llvm-project?rev=43865&view=rev Log: Disable all tests using -fdump for llvm. Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/vect/vect.exp Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/vect/vect.exp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/vect/vect.exp?rev=43865&r1=43864&r2=43865&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/vect/vect.exp (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/vect/vect.exp Wed Nov 7 19:19:56 2007 @@ -87,68 +87,72 @@ lappend DEFAULT_VECTCFLAGS "-fdump-tree-vect-details" # Main loop. -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/pr*.\[cS\]]] \ - "" $DEFAULT_VECTCFLAGS -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/vect-*.\[cS\]]] \ - "" $DEFAULT_VECTCFLAGS +# LLVM LOCAL begin llvm doesn't support -fdump. +if { ![ is_llvm ] } { + dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/pr*.\[cS\]]] \ + "" $DEFAULT_VECTCFLAGS + dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/vect-*.\[cS\]]] \ + "" $DEFAULT_VECTCFLAGS #### Tests with special options -global SAVED_DEFAULT_VECTCFLAGS -set SAVED_DEFAULT_VECTCFLAGS $DEFAULT_VECTCFLAGS + global SAVED_DEFAULT_VECTCFLAGS + set SAVED_DEFAULT_VECTCFLAGS $DEFAULT_VECTCFLAGS # -ffast-math tests -set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS -lappend DEFAULT_VECTCFLAGS "-ffast-math" -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/fast-math-vect*.\[cS\]]] \ - "" $DEFAULT_VECTCFLAGS + set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS + lappend DEFAULT_VECTCFLAGS "-ffast-math" + dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/fast-math-vect*.\[cS\]]] \ + "" $DEFAULT_VECTCFLAGS # -fwrapv tests -set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS -lappend DEFAULT_VECTCFLAGS "-fwrapv" -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/wrapv-vect*.\[cS\]]] \ - "" $DEFAULT_VECTCFLAGS + set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS + lappend DEFAULT_VECTCFLAGS "-fwrapv" + dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/wrapv-vect*.\[cS\]]] \ + "" $DEFAULT_VECTCFLAGS # -ftrapv tests -set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS -lappend DEFAULT_VECTCFLAGS "-ftrapv" -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/trapv-vect*.\[cS\]]] \ - "" $DEFAULT_VECTCFLAGS + set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS + lappend DEFAULT_VECTCFLAGS "-ftrapv" + dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/trapv-vect*.\[cS\]]] \ + "" $DEFAULT_VECTCFLAGS # -fdump-tree-dceloop-details tests -set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS -lappend DEFAULT_VECTCFLAGS "-fdump-tree-dceloop-details" -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/dump-tree-dceloop-*.\[cS\]]] \ - "" $DEFAULT_VECTCFLAGS + set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS + lappend DEFAULT_VECTCFLAGS "-fdump-tree-dceloop-details" + dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/dump-tree-dceloop-*.\[cS\]]] \ + "" $DEFAULT_VECTCFLAGS # -fno-tree-dce tests -set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS -lappend DEFAULT_VECTCFLAGS "-fno-tree-dce" -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/no-tree-dce-*.\[cS\]]] \ - "" $DEFAULT_VECTCFLAGS + set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS + lappend DEFAULT_VECTCFLAGS "-fno-tree-dce" + dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/no-tree-dce-*.\[cS\]]] \ + "" $DEFAULT_VECTCFLAGS # -fsection-anchors tests -set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS -lappend DEFAULT_VECTCFLAGS "-fsection-anchors" -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/section-anchors-*.\[cS\]]] \ - "" $DEFAULT_VECTCFLAGS + set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS + lappend DEFAULT_VECTCFLAGS "-fsection-anchors" + dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/section-anchors-*.\[cS\]]] \ + "" $DEFAULT_VECTCFLAGS # -fno-section-anchors tests -set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS -lappend DEFAULT_VECTCFLAGS "-fno-section-anchors" -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/no-section-anchors-*.\[cS\]]] \ - "" $DEFAULT_VECTCFLAGS + set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS + lappend DEFAULT_VECTCFLAGS "-fno-section-anchors" + dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/no-section-anchors-*.\[cS\]]] \ + "" $DEFAULT_VECTCFLAGS # -funswitch-loops tests -set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS -lappend DEFAULT_VECTCFLAGS "-funswitch-loops" -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/unswitch-loops-*.\[cS\]]] \ - "" $DEFAULT_VECTCFLAGS + set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS + lappend DEFAULT_VECTCFLAGS "-funswitch-loops" + dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/unswitch-loops-*.\[cS\]]] \ + "" $DEFAULT_VECTCFLAGS # With -Os -lappend DEFAULT_VECTCFLAGS "-Os" -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/Os-vect-*.\[cS\]]] \ - "" $DEFAULT_VECTCFLAGS + lappend DEFAULT_VECTCFLAGS "-Os" + dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/Os-vect-*.\[cS\]]] \ + "" $DEFAULT_VECTCFLAGS +} +# LLVM LOCAL end # Clean up. set dg-do-what-default ${save-dg-do-what-default} From resistor at mac.com Wed Nov 7 19:20:48 2007 From: resistor at mac.com (Owen Anderson) Date: Thu, 08 Nov 2007 01:20:48 -0000 Subject: [llvm-commits] [llvm] r43866 - in /llvm/trunk/lib/CodeGen: LiveVariables.cpp PHIElimination.cpp TwoAddressInstructionPass.cpp Message-ID: <200711080120.lA81KmZC001691@zion.cs.uiuc.edu> Author: resistor Date: Wed Nov 7 19:20:48 2007 New Revision: 43866 URL: http://llvm.org/viewvc/llvm-project?rev=43866&view=rev Log: Bring UsedBlocks back. StrongPHIElimination needs this information. Modified: llvm/trunk/lib/CodeGen/LiveVariables.cpp llvm/trunk/lib/CodeGen/PHIElimination.cpp llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp Modified: llvm/trunk/lib/CodeGen/LiveVariables.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveVariables.cpp?rev=43866&r1=43865&r2=43866&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/LiveVariables.cpp (original) +++ llvm/trunk/lib/CodeGen/LiveVariables.cpp Wed Nov 7 19:20:48 2007 @@ -50,6 +50,9 @@ cerr << " Alive in blocks: "; for (unsigned i = 0, e = AliveBlocks.size(); i != e; ++i) if (AliveBlocks[i]) cerr << i << ", "; + cerr << " Used in blocks: "; + for (unsigned i = 0, e = UsedBlocks.size(); i != e; ++i) + if (UsedBlocks[i]) cerr << i << ", "; cerr << "\n Killed by:"; if (Kills.empty()) cerr << " No instructions.\n"; @@ -72,6 +75,7 @@ } VarInfo &VI = VirtRegInfo[RegIdx]; VI.AliveBlocks.resize(MF->getNumBlockIDs()); + VI.UsedBlocks.resize(MF->getNumBlockIDs()); return VI; } @@ -154,6 +158,9 @@ MachineInstr *MI) { assert(VRInfo.DefInst && "Register use before def!"); + unsigned BBNum = MBB->getNumber(); + + VRInfo.UsedBlocks[BBNum] = true; VRInfo.NumUses++; // Check to see if this basic block is already a kill block... @@ -176,7 +183,7 @@ // If this virtual register is already marked as alive in this basic block, // that means it is alive in at least one of the successor block, it's not // a kill. - if (!VRInfo.AliveBlocks[MBB->getNumber()]) + if (!VRInfo.AliveBlocks[BBNum]) VRInfo.Kills.push_back(MI); // Update all dominating blocks to mark them known live. Modified: llvm/trunk/lib/CodeGen/PHIElimination.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PHIElimination.cpp?rev=43866&r1=43865&r2=43866&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/PHIElimination.cpp (original) +++ llvm/trunk/lib/CodeGen/PHIElimination.cpp Wed Nov 7 19:20:48 2007 @@ -167,6 +167,8 @@ // 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; } // Adjust the VRegPHIUseCount map to account for the removal of this PHI @@ -217,6 +219,7 @@ // instruction kills the incoming value. // LiveVariables::VarInfo &InRegVI = LV->getVarInfo(SrcReg); + InRegVI.UsedBlocks[opBlock.getNumber()] = true; // Loop over all of the successors of the basic block, checking to see // if the value is either live in the block, or if it is killed in the Modified: llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp?rev=43866&r1=43865&r2=43866&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp (original) +++ llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp Wed Nov 7 19:20:48 2007 @@ -202,6 +202,10 @@ 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. + varInfoB.UsedBlocks[mbbi->getNumber()] = true; if (LV.removeVirtualRegisterKilled(regB, mbbi, mi)) LV.addVirtualRegisterKilled(regB, prevMi); From resistor at mac.com Wed Nov 7 19:22:24 2007 From: resistor at mac.com (Owen Anderson) Date: Thu, 08 Nov 2007 01:22:24 -0000 Subject: [llvm-commits] [llvm] r43867 - /llvm/trunk/include/llvm/CodeGen/LiveVariables.h Message-ID: <200711080122.lA81MOfZ001823@zion.cs.uiuc.edu> Author: resistor Date: Wed Nov 7 19:22:24 2007 New Revision: 43867 URL: http://llvm.org/viewvc/llvm-project?rev=43867&view=rev Log: Oops, forgot to commit this file. 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=43867&r1=43866&r2=43867&view=diff ============================================================================== --- llvm/trunk/include/llvm/CodeGen/LiveVariables.h (original) +++ llvm/trunk/include/llvm/CodeGen/LiveVariables.h Wed Nov 7 19:22:24 2007 @@ -83,6 +83,10 @@ /// BitVector AliveBlocks; + /// UsedBlocks - Set of blocks of which this value is actually used. This + /// is a bit set which uses the basic block number as an index. + BitVector UsedBlocks; + /// NumUses - Number of uses of this register across the entire function. /// unsigned NumUses; From resistor at mac.com Wed Nov 7 19:22:53 2007 From: resistor at mac.com (Owen Anderson) Date: Thu, 08 Nov 2007 01:22:53 -0000 Subject: [llvm-commits] [llvm] r43868 - /llvm/trunk/include/llvm/CodeGen/MachineDominators.h Message-ID: <200711080122.lA81MrDE001870@zion.cs.uiuc.edu> Author: resistor Date: Wed Nov 7 19:22:53 2007 New Revision: 43868 URL: http://llvm.org/viewvc/llvm-project?rev=43868&view=rev Log: Fix MachineDominators' getAnalysisUsage. Modified: llvm/trunk/include/llvm/CodeGen/MachineDominators.h Modified: llvm/trunk/include/llvm/CodeGen/MachineDominators.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineDominators.h?rev=43868&r1=43867&r2=43868&view=diff ============================================================================== --- llvm/trunk/include/llvm/CodeGen/MachineDominators.h (original) +++ llvm/trunk/include/llvm/CodeGen/MachineDominators.h Wed Nov 7 19:22:53 2007 @@ -54,6 +54,11 @@ delete DT; } + virtual void getAnalysisUsage(AnalysisUsage &AU) const { + AU.setPreservesAll(); + MachineFunctionPass::getAnalysisUsage(AU); + } + /// getRoots - Return the root blocks of the current CFG. This may include /// multiple blocks if we are computing post dominators. For forward /// dominators, this will always be a single block (the entry node). @@ -76,10 +81,6 @@ return false; } - virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.setPreservesAll(); - } - inline bool dominates(MachineDomTreeNode* A, MachineDomTreeNode* B) const { return DT->dominates(A, B); } From resistor at mac.com Wed Nov 7 19:32:46 2007 From: resistor at mac.com (Owen Anderson) Date: Thu, 08 Nov 2007 01:32:46 -0000 Subject: [llvm-commits] [llvm] r43869 - /llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Message-ID: <200711080132.lA81Wkis002203@zion.cs.uiuc.edu> Author: resistor Date: Wed Nov 7 19:32:45 2007 New Revision: 43869 URL: http://llvm.org/viewvc/llvm-project?rev=43869&view=rev Log: Take another stab at getting isLiveIn() and isLiveOut() right. Modified: llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Modified: llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp?rev=43869&r1=43868&r2=43869&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp (original) +++ llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Wed Nov 7 19:32:45 2007 @@ -225,10 +225,9 @@ if (V.AliveBlocks.test(MBB->getNumber())) return true; - for (std::vector::iterator I = V.Kills.begin(), - E = V.Kills.end(); I != E; ++I) - if ((*I)->getParent() == MBB) - return true; + if (V.DefInst->getParent() != MBB && + V.UsedBlocks.test(MBB->getNumber())) + return true; return false; } @@ -236,11 +235,15 @@ /// isLiveOut - help method that determines, from a VarInfo, if a register is /// live out of a block. bool isLiveOut(LiveVariables::VarInfo& V, MachineBasicBlock* MBB) { - if (V.AliveBlocks.test(MBB->getNumber())) - return true; - - if (V.DefInst->getParent() == MBB) + if (MBB == V.DefInst->getParent() || + V.UsedBlocks.test(MBB->getNumber())) { + for (std::vector::iterator I = V.Kills.begin(), + E = V.Kills.end(); I != E; ++I) + if ((*I)->getParent() == MBB) + return false; + return true; + } return false; } From dalej at apple.com Wed Nov 7 19:54:46 2007 From: dalej at apple.com (Dale Johannesen) Date: Thu, 08 Nov 2007 01:54:46 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43870 - in /llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp: atomic-10.C atomic-3.C atomic-9.C barrier-1.C block-0.C critical-1.C flush-1.C for-10.C for-13.C for-4.C for-5.C for-6.C for-7.C for-8.C for-9.C macro-3.C master-3.C ordered-1.C tpl-barrier-1.C tpl-master-1.C Message-ID: <200711080154.lA81slfY003054@zion.cs.uiuc.edu> Author: johannes Date: Wed Nov 7 19:54:46 2007 New Revision: 43870 URL: http://llvm.org/viewvc/llvm-project?rev=43870&view=rev Log: Disable some more tests for llvm. Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-10.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-3.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-9.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/barrier-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/block-0.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/critical-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/flush-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-10.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-13.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-4.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-5.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-6.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-7.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-8.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-9.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/macro-3.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/master-3.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/ordered-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/tpl-barrier-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/tpl-master-1.C Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-10.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/atomic-10.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-10.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-10.C Wed Nov 7 19:54:46 2007 @@ -1,6 +1,8 @@ // PR middle-end/28046 // { dg-do compile } // { dg-options "-fopenmp -fdump-tree-gimple" } +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int a[3], b; struct C { int x; int y; } c; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-3.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/atomic-3.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-3.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-3.C Wed Nov 7 19:54:46 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int *xyzzy; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-9.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/atomic-9.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-9.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-9.C Wed Nov 7 19:54:46 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ volatile int *bar(void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/barrier-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/barrier-1.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/barrier-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/barrier-1.C Wed Nov 7 19:54:46 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void f1(void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/block-0.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/block-0.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/block-0.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/block-0.C Wed Nov 7 19:54:46 2007 @@ -1,5 +1,7 @@ // { dg-do compile } // { dg-options "-fopenmp -fdump-tree-omplower" } +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void bar(); void foo() Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/critical-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/critical-1.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/critical-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/critical-1.C Wed Nov 7 19:54:46 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-omplower" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/flush-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/flush-1.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/flush-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/flush-1.C Wed Nov 7 19:54:46 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void f1(void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-10.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/for-10.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-10.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-10.C Wed Nov 7 19:54:46 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-13.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/for-13.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-13.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-13.C Wed Nov 7 19:54:46 2007 @@ -3,6 +3,8 @@ // { dg-do compile } // { dg-options "-fopenmp -fdump-tree-lower" } +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); void foo(void) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-4.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/for-4.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-4.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-4.C Wed Nov 7 19:54:46 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-5.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/for-5.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-5.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-5.C Wed Nov 7 19:54:46 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-6.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/for-6.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-6.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-6.C Wed Nov 7 19:54:46 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-7.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/for-7.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-7.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-7.C Wed Nov 7 19:54:46 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-8.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/for-8.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-8.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-8.C Wed Nov 7 19:54:46 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-9.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/for-9.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-9.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-9.C Wed Nov 7 19:54:46 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/macro-3.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/macro-3.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/macro-3.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/macro-3.C Wed Nov 7 19:54:46 2007 @@ -1,6 +1,8 @@ // PR preprocessor/27746 // { dg-do compile } // { dg-options "-fopenmp -fdump-tree-omplower" } +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #define omp FOO #define p parallel Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/master-3.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/master-3.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/master-3.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/master-3.C Wed Nov 7 19:54:46 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-omplower" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/ordered-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/ordered-1.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/ordered-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/ordered-1.C Wed Nov 7 19:54:46 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-omplower" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/tpl-barrier-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/tpl-barrier-1.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/tpl-barrier-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/tpl-barrier-1.C Wed Nov 7 19:54:46 2007 @@ -1,6 +1,8 @@ // PR c++/24735 // { dg-do compile } // { dg-options "-fopenmp -fdump-tree-gimple" } +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ template void f1 () { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/tpl-master-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/tpl-master-1.C?rev=43870&r1=43869&r2=43870&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/tpl-master-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/tpl-master-1.C Wed Nov 7 19:54:46 2007 @@ -1,6 +1,8 @@ // PR c++/24734 // { dg-do compile } // { dg-options "-fopenmp -fdump-tree-gimple" } +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int i; From dalej at apple.com Wed Nov 7 19:58:23 2007 From: dalej at apple.com (Dale Johannesen) Date: Thu, 08 Nov 2007 01:58:23 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43871 - in /llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa: block1.C copyprop-1.C empty-1.C ivopts-1.C nothrow-1.C pointer-reference-alias.C pr14814.C pr15791-3.C pr15791-4.C pr15791-5.C pr18178.C pr19807.C pr23948.C pr26406.C pr27090.C ssa-cast-1.C ssa-sra-1.C ssa-sra-2.C tmmti-2.C Message-ID: <200711080158.lA81wONu003198@zion.cs.uiuc.edu> Author: johannes Date: Wed Nov 7 19:58:22 2007 New Revision: 43871 URL: http://llvm.org/viewvc/llvm-project?rev=43871&view=rev Log: Disable more testcases for llvm. Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/block1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/empty-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/ivopts-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pointer-reference-alias.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr14814.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-3.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-4.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-5.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr18178.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr19807.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr23948.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr26406.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr27090.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/ssa-cast-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/ssa-sra-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/ssa-sra-2.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/tmmti-2.C Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/block1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/block1.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/block1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/block1.C Wed Nov 7 19:58:22 2007 @@ -1,6 +1,8 @@ // PR 13764: We were inserting an extra body block in all functions, but // it's only really necessary for [cd]tors. // { dg-options "-fdump-tree-gimple" } +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void bar (void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/copyprop-1.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-dce2" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Verify that we can eliminate the useless conversions to/from const qualified pointer types Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/empty-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/empty-1.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/empty-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/empty-1.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct S {}; S bar (const S &a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/ivopts-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/ivopts-1.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/ivopts-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/ivopts-1.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-ivopts" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct Foo { Foo() : s(1) {} Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/nothrow-1.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-cfg" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-skip-if "" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */ double a; void t() Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pointer-reference-alias.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/pointer-reference-alias.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pointer-reference-alias.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pointer-reference-alias.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int *a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr14814.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/pr14814.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr14814.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr14814.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-forwprop2" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ class YY { public: YY(const YY &v) { e[0] = v.e[0]; e[1] = v.e[1]; e[2] = v.e[2]; } Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-3.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/pr15791-3.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-3.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-3.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int i, unsigned j) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-4.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/pr15791-4.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-4.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-4.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int i, int j) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-5.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/pr15791-5.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-5.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-5.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int foo(int i, int j) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr18178.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/pr18178.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr18178.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr18178.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ // Define this to see it work. // #define WORK_WORK_WORK Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr19807.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/pr19807.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr19807.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr19807.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int a[4]; int *x, *y, *z; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr23948.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/pr23948.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr23948.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr23948.C Wed Nov 7 19:58:22 2007 @@ -1,4 +1,6 @@ /* { dg-options "-O1 -ffast-math -fdump-tree-recip" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-do compile } */ struct MIOFILE { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr26406.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/pr26406.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr26406.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr26406.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int *f(int *b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr27090.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/pr27090.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr27090.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr27090.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ template struct Bar Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/ssa-cast-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/ssa-cast-1.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/ssa-cast-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/ssa-cast-1.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int &f(int *a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/ssa-sra-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/ssa-sra-1.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/ssa-sra-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/ssa-sra-1.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void link_error(); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/ssa-sra-2.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/ssa-sra-2.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/ssa-sra-2.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/ssa-sra-2.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void link_error(); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/tmmti-2.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/tmmti-2.C?rev=43871&r1=43870&r2=43871&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/tmmti-2.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/tmmti-2.C Wed Nov 7 19:58:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options { -O -fdump-tree-optimized } } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int a[4][8]; From dalej at apple.com Wed Nov 7 19:59:23 2007 From: dalej at apple.com (Dale Johannesen) Date: Thu, 08 Nov 2007 01:59:23 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43872 - /llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/opt/nothrow1.C Message-ID: <200711080159.lA81xNMm003238@zion.cs.uiuc.edu> Author: johannes Date: Wed Nov 7 19:59:23 2007 New Revision: 43872 URL: http://llvm.org/viewvc/llvm-project?rev=43872&view=rev Log: Disable for llvm. Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/opt/nothrow1.C Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/opt/nothrow1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/opt/nothrow1.C?rev=43872&r1=43871&r2=43872&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/opt/nothrow1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/opt/nothrow1.C Wed Nov 7 19:59:23 2007 @@ -1,6 +1,8 @@ // Test that the nothrow optimization works properly. // { dg-do compile } // { dg-options "-O -fdump-tree-optimized" } +// LLVM LOCAL fdump not supported +// { dg-require-fdump "" } extern void blah() throw(); From dalej at apple.com Wed Nov 7 20:08:00 2007 From: dalej at apple.com (Dale Johannesen) Date: Thu, 08 Nov 2007 02:08:00 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43873 - in /llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp: atomic-10.c atomic-3.c atomic-9.c barrier-1.c critical-1.c critical-3.c empty.c flush-1.c for-10.c for-13.c for-18.c for-19.c for-4.c for-5.c for-6.c for-7.c for-8.c for-9.c macro-3.c master-3.c ordered-1.c pr27388-1.c pr27388-2.c pr27388-3.c Message-ID: <200711080208.lA82819U003629@zion.cs.uiuc.edu> Author: johannes Date: Wed Nov 7 20:08:00 2007 New Revision: 43873 URL: http://llvm.org/viewvc/llvm-project?rev=43873&view=rev Log: Disable more testcases for llvm. Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-10.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-9.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/barrier-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/critical-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/critical-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/empty.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/flush-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-10.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-13.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-18.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-19.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-7.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-8.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-9.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/macro-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/master-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/ordered-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-3.c Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-10.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-10.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-10.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-10.c Wed Nov 7 20:08:00 2007 @@ -1,6 +1,8 @@ /* PR middle-end/28046 */ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int a[3], b; struct C { int x; int y; } c; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-3.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-3.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int *xyzzy; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-9.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-9.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-9.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-9.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ volatile int *bar(void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/barrier-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/barrier-1.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/barrier-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/barrier-1.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void f1(void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/critical-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/critical-1.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/critical-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/critical-1.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/critical-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/critical-3.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/critical-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/critical-3.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ // { dg-do compile } // { dg-options "-fopenmp -fdump-tree-ompexp" } +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void bar(void); void foo(void) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/empty.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/empty.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/empty.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/empty.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O -fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ main() { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/flush-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/flush-1.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/flush-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/flush-1.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void f1(void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-10.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-10.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-10.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-10.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-13.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-13.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-13.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-13.c Wed Nov 7 20:08:00 2007 @@ -3,6 +3,8 @@ // { dg-do compile } // { dg-options "-fopenmp -fdump-tree-ompexp" } +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); void foo(void) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-18.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-18.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-18.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-18.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O -fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void foo (int *a, int i) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-19.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-19.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-19.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-19.c Wed Nov 7 20:08:00 2007 @@ -3,6 +3,8 @@ copied to the omp_fn function. */ /* { dg-do compile } */ /* { dg-options "-O -fopenmp -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void foo (int *a, int i, int j, int k, int l, int m) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-4.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-4.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-5.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-5.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-6.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-6.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-6.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-7.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-7.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-7.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-7.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-8.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-8.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-8.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-8.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-9.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-9.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-9.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-9.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/macro-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/macro-3.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/macro-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/macro-3.c Wed Nov 7 20:08:00 2007 @@ -1,6 +1,8 @@ /* PR preprocessor/27746 */ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-omplower" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #define omp FOO #define p parallel Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/master-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/master-3.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/master-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/master-3.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/ordered-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/ordered-1.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/ordered-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/ordered-1.c Wed Nov 7 20:08:00 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-ompexp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-1.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-1.c Wed Nov 7 20:08:00 2007 @@ -1,6 +1,8 @@ /* PR middle-end/27388 */ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-omplower" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int n, o; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-2.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-2.c Wed Nov 7 20:08:00 2007 @@ -1,6 +1,8 @@ /* PR middle-end/27388 */ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-omplower" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void baz (int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-3.c?rev=43873&r1=43872&r2=43873&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-3.c Wed Nov 7 20:08:00 2007 @@ -1,6 +1,8 @@ /* PR middle-end/27388 */ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-omplower" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void bar (int); From dalej at apple.com Wed Nov 7 20:12:13 2007 From: dalej at apple.com (Dale Johannesen) Date: Thu, 08 Nov 2007 02:12:13 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43874 - in /llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple: altivec-faltivec-1.c altivec-faltivec-2.c altivec-maltivec-1.c vect-ndist-1.c Message-ID: <200711080212.lA82CE4n003811@zion.cs.uiuc.edu> Author: johannes Date: Wed Nov 7 20:12:13 2007 New Revision: 43874 URL: http://llvm.org/viewvc/llvm-project?rev=43874&view=rev Log: Disable more tests for llvm. Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-maltivec-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/vect-ndist-1.c Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-1.c?rev=43874&r1=43873&r2=43874&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-1.c Wed Nov 7 20:12:13 2007 @@ -3,6 +3,8 @@ /* For 64-bit we need 64-bit headers. */ /* { dg-xfail-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */ /* { dg-options "-mcpu=G3 -O3 -finline-limit=9999 -faltivec -Wa,-force_cpusubtype_ALL -fdump-ipa-cgraph -S" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Inliner should not inline AltiVec(tm) functions when -faltivec is on. */ /* Selective inlining of functions that use Altivec */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-2.c?rev=43874&r1=43873&r2=43874&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-2.c Wed Nov 7 20:12:13 2007 @@ -3,6 +3,8 @@ /* For 64-bit we need 64-bit headers. */ /* { dg-xfail-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */ /* { dg-options "-O3 -finline-limit=9999 -faltivec -Wa,-force_cpusubtype_ALL -fdump-ipa-cgraph -S" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Inliner should inline always-inline AltiVec(tm) functions when -faltivec is on. */ /* Selective inlining of functions that use Altivec */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-maltivec-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-maltivec-1.c?rev=43874&r1=43873&r2=43874&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-maltivec-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-maltivec-1.c Wed Nov 7 20:12:13 2007 @@ -3,6 +3,8 @@ /* For 64-bit we need 64-bit headers. */ /* { dg-xfail-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */ /* { dg-options "-O3 -finline-limit=9999 -maltivec -Wa,-force_cpusubtype_ALL -fdump-ipa-cgraph -S -faltivec" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Inliner should inline AltiVec(tm) functions normally when -maltivec is on. */ /* Selective inlining of functions that use Altivec */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/vect-ndist-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/vect-ndist-1.c?rev=43874&r1=43873&r2=43874&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/vect-ndist-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/vect-ndist-1.c Wed Nov 7 20:12:13 2007 @@ -1,6 +1,8 @@ /* APPLE LOCAL file AV data dependence */ /* { dg-do run { target powerpc*-*-* } } */ /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-stats -maltivec" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include #include From dalej at apple.com Wed Nov 7 20:22:14 2007 From: dalej at apple.com (Dale Johannesen) Date: Thu, 08 Nov 2007 02:22:14 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43875 - /llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ Message-ID: <200711080222.lA82MGeN004405@zion.cs.uiuc.edu> Author: johannes Date: Wed Nov 7 20:22:14 2007 New Revision: 43875 URL: http://llvm.org/viewvc/llvm-project?rev=43875&view=rev Log: Disable more tests for llvm. Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-43.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-44.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-45.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-47.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-alloca-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-andxor-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-cond-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convnotconv-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convround-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandnot-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-even-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mod-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mulconj-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xorand-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/minmax-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/nrv3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/nrv4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/nrv5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/opt-diary-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20115-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20130-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr21032.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr23584.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr23911.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pure-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/strict-overflow-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/strict-overflow-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/strict-overflow-4.c Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-43.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-43.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-43.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-43.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fno-trapping-math -fdump-tree-gimple -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void f(int); extern void link_error (); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-44.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-44.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-44.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-44.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fno-trapping-math -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void f(int); extern void link_error (); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-45.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-45.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-45.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-45.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fno-trapping-math -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void f(int); extern void link_error (); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-47.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-47.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-47.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-47.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do run } */ /* { dg-options "-ffast-math -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern double sqrt (double); extern double pow (double, double); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-3.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-3.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple -fwrapv" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #define ABS(x) (x > 0 ? x : -x) int f (int a) { return ABS (ABS(a)); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-4.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-4.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple -fwrapv" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern float fabsf (float); extern float cabsf (_Complex float); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-alloca-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-alloca-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-alloca-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-alloca-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-useless" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void *alloca (__SIZE_TYPE__); void link_error (); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-andxor-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-andxor-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-andxor-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-andxor-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int test1(int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-cond-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-cond-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-cond-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-cond-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ _Bool test1(int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convnotconv-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convnotconv-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convnotconv-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convnotconv-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int test1(int a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convround-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convround-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convround-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convround-1.c Wed Nov 7 20:22:14 2007 @@ -1,6 +1,8 @@ /* PR middle-end/28473. */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern double round(double); extern double floor(double); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-funsafe-math-optimizations -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ float f(float x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-2.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-2.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-ffinite-math-only -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ double f(double x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandnot-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandnot-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandnot-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandnot-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int test1(int a) { return !(a & 4); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-1.c Wed Nov 7 20:22:14 2007 @@ -1,6 +1,8 @@ /* PR middle-end/21137 */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern void foo(); void test1(int a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-2.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-2.c Wed Nov 7 20:22:14 2007 @@ -1,6 +1,8 @@ /* PR middle-end/14752 */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void bar (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-3.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-3.c Wed Nov 7 20:22:14 2007 @@ -1,6 +1,8 @@ /* PR middle-end/29726 */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void foo (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int test1(int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-2.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-2.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int test1(int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-3.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-3.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int test1(int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-even-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-even-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-even-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-even-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int test1(int a) { return !(a & 1); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mod-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mod-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mod-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mod-1.c Wed Nov 7 20:22:14 2007 @@ -1,6 +1,8 @@ /* { dg-do compile } */ /* { dg-require-effective-target int32plus } */ /* { dg-options "-fdump-tree-gimple -fstrict-overflow" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #define ABS(x) (x > 0 ? x : -x) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mulconj-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mulconj-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mulconj-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mulconj-1.c Wed Nov 7 20:22:14 2007 @@ -1,6 +1,8 @@ /* PR tree-optimization/23452 */ /* { dg-do compile } */ /* { dg-options "-O2 -ffast-math -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ _Complex double foo(_Complex double z) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f (int a, int b) { return ~a ^ ~b; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-2.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-2.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f (int a, int b) { return ~(a ^ -(b + 1)); } Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xorand-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xorand-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xorand-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xorand-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int test1(int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/minmax-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/minmax-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/minmax-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/minmax-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do run } */ /* { dg-options "-fdump-tree-original" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Check that MIN-MAX and MAX-MIN combinations are folded. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fno-strict-overflow -O2 -fdump-tree-final_cleanup" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Source: Ian Lance Taylor. Dual of strict-overflow-1.c. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-2.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-2.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fno-strict-overflow -O2 -fdump-tree-final_cleanup" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Source: Ian Lance Taylor. Dual of strict-overflow-2.c. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-3.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-3.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fno-strict-overflow -O2 -fdump-tree-final_cleanup" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Source: Ian Lance Taylor. Dual of strict-overflow-3.c. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-4.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-4.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fno-strict-overflow -O2 -fdump-tree-final_cleanup" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Source: Ian Lance Taylor. Dual of strict-overflow-4.c. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-5.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-5.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fno-strict-overflow -O2 -fdump-tree-final_cleanup" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Dual of strict-overflow-5.c. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-6.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-6.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/no-strict-overflow-6.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fno-strict-overflow -O2 -fdump-tree-final_cleanup" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Source: Ian Lance Taylor. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/nrv3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/nrv3.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/nrv3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/nrv3.c Wed Nov 7 20:22:14 2007 @@ -2,6 +2,8 @@ return slot are call-clobbered. */ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef struct { int x[20]; void *y; } S; typedef struct { int a; S b; } T; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/nrv4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/nrv4.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/nrv4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/nrv4.c Wed Nov 7 20:22:14 2007 @@ -2,6 +2,8 @@ indirect reference to something that may be call-clobbered. */ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef struct { int x[20]; void *y; } S; S nrv_candidate (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/nrv5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/nrv5.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/nrv5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/nrv5.c Wed Nov 7 20:22:14 2007 @@ -2,6 +2,8 @@ something that may be call-clobbered. */ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef struct { int x[20]; void *y; } S; typedef struct { int a; S b; } T; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/opt-diary-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/opt-diary-3.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/opt-diary-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/opt-diary-3.c Wed Nov 7 20:22:14 2007 @@ -2,7 +2,11 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_int } */ /* { dg-options "-dA -O2 -ftree-vectorize -fdump-tree-vect-stats -maltivec -gdwarf-2 -fopt-diary" { target powerpc*-*-* } } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-options "-dA -O2 -ftree-vectorize -fdump-tree-vect-stats -msse2 -gdwarf-2 -fopt-diary" { target i?86-*-* x86_64-*-* } } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #define N 16 Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f (int a) { return (a << 3) << 6; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-2.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-2.c Wed Nov 7 20:22:14 2007 @@ -1,6 +1,8 @@ /* { dg-do compile } */ /* { dg-require-effective-target int32plus } */ /* { dg-options "-fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f (int a) { return (a << 31) << 6; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fstrict-overflow -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Test for folding abs(x) where appropriate. */ #define abs(x) x > 0 ? x : -x extern double fabs (double); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-2.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-2.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple -ffast-math" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Test for folding abs(x) where appropriate. */ #define abs(x) x > 0 ? x : -x extern double fabs (double); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-3.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-3.c Wed Nov 7 20:22:14 2007 @@ -1,6 +1,8 @@ /* { dg-do compile } */ /* SH4 without -mieee defaults to -ffinite-math-only. */ /* { dg-options "-fdump-tree-gimple -fno-finite-math-only" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Test for folding abs(x) where appropriate. */ #define abs(x) x > 0 ? x : -x extern double fabs (double); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-4.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-4.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int a (int x) { return ~x + 1; /* -x */ } Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20115-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20115-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20115-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20115-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dom1" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern int foo (void) __attribute__((pure)); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20130-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20130-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20130-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20130-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int z (int a) { return a * -1; } Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fno-wrapv -fstrict-overflow -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int i) { return (i - 2) > i; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-2.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-2.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fwrapv -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f (int i) { return (i - 2) > i; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-3.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-3.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-ffast-math -fno-wrapv -fstrict-overflow -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int i) { return (i - 2) <= i; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-4.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-4.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fno-wrapv -fstrict-overflow -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int i) { return i < (i - 2); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-5.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-5.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fsignaling-nans -fwrapv -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int i) { return i < (i - 2); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-6.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-6.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-6.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-ffast-math -fno-wrapv -fstrict-overflow -fdump-tree-gimple" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int f(int i) { return i >= (i - 2); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr21032.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr21032.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr21032.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr21032.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-optimized -frounding-math" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ void bar(float x); void foo(double x) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr23584.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr23584.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr23584.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr23584.c Wed Nov 7 20:22:14 2007 @@ -4,6 +4,8 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-ipa-pure-const" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ int test1 (void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr23911.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr23911.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr23911.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr23911.c Wed Nov 7 20:22:14 2007 @@ -2,6 +2,8 @@ that CSE would catch later on. */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-store_ccp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ double _Complex *a; static const double _Complex b[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pure-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pure-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pure-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pure-1.c Wed Nov 7 20:22:14 2007 @@ -4,6 +4,8 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-ipa-pure-const" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ struct test_a { volatile int a; }; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/strict-overflow-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/strict-overflow-1.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/strict-overflow-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/strict-overflow-1.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fstrict-overflow -O2 -fdump-tree-final_cleanup" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Source: Ian Lance Taylor. Dual of no-strict-overflow-1.c. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/strict-overflow-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/strict-overflow-2.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/strict-overflow-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/strict-overflow-2.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fstrict-overflow -O2 -fdump-tree-final_cleanup" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Source: Ian Lance Taylor. Dual of no-strict-overflow-2.c. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/strict-overflow-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/strict-overflow-4.c?rev=43875&r1=43874&r2=43875&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/strict-overflow-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/strict-overflow-4.c Wed Nov 7 20:22:14 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-fstrict-overflow -O2 -fdump-tree-final_cleanup" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* Source: Ian Lance Taylor. Dual of no-strict-overflow-4.c. */ From dalej at apple.com Wed Nov 7 20:24:23 2007 From: dalej at apple.com (Dale Johannesen) Date: Thu, 08 Nov 2007 02:24:23 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43876 - in /llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa: ipa-1.c ipa-2.c ipa-3.c ipa-4.c ipa-5.c Message-ID: <200711080224.lA82ON7R004483@zion.cs.uiuc.edu> Author: johannes Date: Wed Nov 7 20:24:22 2007 New Revision: 43876 URL: http://llvm.org/viewvc/llvm-project?rev=43876&view=rev Log: Disable more testcases. Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-5.c Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-1.c?rev=43876&r1=43875&r2=43876&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-1.c Wed Nov 7 20:24:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O3 -fipa-cp -fdump-ipa-cp -fno-early-inlining" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-2.c?rev=43876&r1=43875&r2=43876&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-2.c Wed Nov 7 20:24:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O3 -fipa-cp -fdump-ipa-cp -fno-early-inlining" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-3.c?rev=43876&r1=43875&r2=43876&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-3.c Wed Nov 7 20:24:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O3 -fipa-cp -fdump-ipa-cp -fno-early-inlining" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-4.c?rev=43876&r1=43875&r2=43876&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-4.c Wed Nov 7 20:24:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O3 -fipa-cp -fdump-ipa-cp" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-5.c?rev=43876&r1=43875&r2=43876&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/ipa/ipa-5.c Wed Nov 7 20:24:22 2007 @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O3 -fipa-cp -fdump-ipa-cp -fno-early-inlining" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */ /* Float & short constants. */ From dalej at apple.com Wed Nov 7 20:30:05 2007 From: dalej at apple.com (Dale Johannesen) Date: Thu, 08 Nov 2007 02:30:05 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43877 - in /llvm-gcc-4.2/trunk/gcc/testsuite: gcc.dg/torture/builtin-convert-4.c gcc.target/i386/reload-1.c gcc.target/i386/vectorize1.c obj-c++.dg/stubify-2.mm objc.dg/stubify-2.m Message-ID: <200711080230.lA82U6WH004734@zion.cs.uiuc.edu> Author: johannes Date: Wed Nov 7 20:30:05 2007 New Revision: 43877 URL: http://llvm.org/viewvc/llvm-project?rev=43877&view=rev Log: disable yet more testcases Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/torture/builtin-convert-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.target/i386/reload-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.target/i386/vectorize1.c llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/stubify-2.mm llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/stubify-2.m Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/torture/builtin-convert-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/torture/builtin-convert-4.c?rev=43877&r1=43876&r2=43877&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/torture/builtin-convert-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/torture/builtin-convert-4.c Wed Nov 7 20:30:05 2007 @@ -9,6 +9,8 @@ /* { dg-options "-ftrapping-math -fdump-tree-original" } */ /* { dg-options "-ftrapping-math -fdump-tree-original -mmacosx-version-min=10.3" { target powerpc-*-darwin* } } */ /* { dg-options "-ftrapping-math -fdump-tree-original -std=c99" { target *-*-solaris2* } } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ #include "../builtins-config.h" Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.target/i386/reload-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.target/i386/reload-1.c?rev=43877&r1=43876&r2=43877&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.target/i386/reload-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.target/i386/reload-1.c Wed Nov 7 20:30:05 2007 @@ -1,6 +1,8 @@ /* APPLE LOCAL file mainline 2007-04-24 5122634 */ /* { dg-do compile { target i?86-*-* } } */ /* { dg-options "-O3 -msse2 -fdump-rtl-csa" } */ +/* LLVM LOCAL fdump not supported */ +/* { dg-require-fdump "" } */ /* { dg-skip-if "" { i?86-*-* } { "-m64" } { "" } } */ /* { dg-final { scan-rtl-dump "deleted 5 dead insns" "csa" } }*/ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.target/i386/vectorize1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.target/i386/vectorize1.c?rev=43877&r1=43876&r2=43877&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.target/i386/vectorize1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.target/i386/vectorize1.c Wed Nov 7 20:30:05 2007 @@ -1,5 +1,7 @@ /* PR middle-end/28915 */ /* { dg-options "-msse -O2 -ftree-vectorize -fdump-tree-vect" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ extern char lanip[3][40]; typedef struct Modified: llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/stubify-2.mm URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/obj-c%2B%2B.dg/stubify-2.mm?rev=43877&r1=43876&r2=43877&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/stubify-2.mm (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/stubify-2.mm Wed Nov 7 20:30:05 2007 @@ -4,6 +4,8 @@ /* { dg-do compile { target *-*-darwin* } } */ /* { dg-options "-mdynamic-no-pic -fdump-rtl-jump" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ typedef struct objc_object { } *id ; int x = 41 ; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/stubify-2.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/stubify-2.m?rev=43877&r1=43876&r2=43877&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/stubify-2.m (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/stubify-2.m Wed Nov 7 20:30:05 2007 @@ -5,6 +5,8 @@ /* { dg-do compile { target *-*-darwin* } } */ /* { dg-skip-if "" { i?86-*-darwin* } } */ /* { dg-options "-mdynamic-no-pic -fdump-rtl-jump" } */ +/* LLVM LOCAL test not applicable */ +/* { dg-require-fdump "" } */ /* APPLE LOCAL radar 4894756 */ /* { dg-skip-if "" { *-*-darwin* } { "-m64" } { "" } } */ From clattner at apple.com Wed Nov 7 21:48:15 2007 From: clattner at apple.com (Chris Lattner) Date: Wed, 7 Nov 2007 19:48:15 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r43870 - in /llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp: atomic-10.C atomic-3.C atomic-9.C barrier-1.C block-0.C critical-1.C flush-1.C for-10.C for-13.C for-4.C for-5.C for-6.C for-7.C for-8.C for-9.C macro-3.C master-3.C ordered-1.C tpl-barrier-1.C tpl-master-1.C In-Reply-To: <200711080154.lA81slfY003054@zion.cs.uiuc.edu> References: <200711080154.lA81slfY003054@zion.cs.uiuc.edu> Message-ID: > URL: http://llvm.org/viewvc/llvm-project?rev=43870&view=rev > Log: > Disable some more tests for llvm. Hey Dale, > = > = > = > = > = > = > = > = > ====================================================================== > --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-10.C > (original) > +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-10.C Wed > Nov 7 19:54:46 2007 > @@ -1,6 +1,8 @@ > // PR middle-end/28046 > // { dg-do compile } > // { dg-options "-fopenmp -fdump-tree-gimple" } > +/* LLVM LOCAL test not applicable */ > +/* { dg-require-fdump "" } */ does -fdump-tree-gimple not work? I thought were we running the gimplifier? -Chris From criswell at uiuc.edu Wed Nov 7 22:04:44 2007 From: criswell at uiuc.edu (John Criswell) Date: Thu, 08 Nov 2007 04:04:44 -0000 Subject: [llvm-commits] [poolalloc] r43878 - /poolalloc/branches/SVA/README Message-ID: <200711080404.lA844ifa012350@zion.cs.uiuc.edu> Author: criswell Date: Wed Nov 7 22:04:43 2007 New Revision: 43878 URL: http://llvm.org/viewvc/llvm-project?rev=43878&view=rev Log: Test commit. Modified: poolalloc/branches/SVA/README Modified: poolalloc/branches/SVA/README URL: http://llvm.org/viewvc/llvm-project/poolalloc/branches/SVA/README?rev=43878&r1=43877&r2=43878&view=diff ============================================================================== --- poolalloc/branches/SVA/README (original) +++ poolalloc/branches/SVA/README Wed Nov 7 22:04:43 2007 @@ -69,3 +69,4 @@ about LLVM. The list is low volume. You can subscribe to it at http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev. + From dalej at apple.com Wed Nov 7 22:47:04 2007 From: dalej at apple.com (Dale Johannesen) Date: Wed, 7 Nov 2007 20:47:04 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r43870 - in /llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp: atomic-10.C atomic-3.C atomic-9.C barrier-1.C block-0.C critical-1.C flush-1.C for-10.C for-13.C for-4.C for-5.C for-6.C for-7.C for-8.C for-9.C macro-3.C master-3.C ordered-1.C tpl-barrier-1.C tpl-master-1.C In-Reply-To: References: <200711080154.lA81slfY003054@zion.cs.uiuc.edu> Message-ID: <23515925-DF80-4742-A29D-A6FE84B85199@apple.com> >> // PR middle-end/28046 >> // { dg-do compile } >> // { dg-options "-fopenmp -fdump-tree-gimple" } >> +/* LLVM LOCAL test not applicable */ >> +/* { dg-require-fdump "" } */ > > does -fdump-tree-gimple not work? I thought were we running the > gimplifier? So it does. That's annoying, I'll have to go through the -fdump options one by bloody one.... From clattner at apple.com Wed Nov 7 22:57:13 2007 From: clattner at apple.com (Chris Lattner) Date: Wed, 7 Nov 2007 20:57:13 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r43870 - in /llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp: atomic-10.C atomic-3.C atomic-9.C barrier-1.C block-0.C critical-1.C flush-1.C for-10.C for-13.C for-4.C for-5.C for-6.C for-7.C for-8.C for-9.C macro-3.C master-3.C ordered-1.C tpl-barrier-1.C tpl-master-1.C In-Reply-To: <23515925-DF80-4742-A29D-A6FE84B85199@apple.com> References: <200711080154.lA81slfY003054@zion.cs.uiuc.edu> <23515925-DF80-4742-A29D-A6FE84B85199@apple.com> Message-ID: <4EA3F280-DD1C-4074-A9AD-2A45E7E53E86@apple.com> On Nov 7, 2007, at 8:47 PM, Dale Johannesen wrote: > >>> // PR middle-end/28046 >>> // { dg-do compile } >>> // { dg-options "-fopenmp -fdump-tree-gimple" } >>> +/* LLVM LOCAL test not applicable */ >>> +/* { dg-require-fdump "" } */ >> >> does -fdump-tree-gimple not work? I thought were we running the >> gimplifier? > > So it does. That's annoying, I'll have to go through the -fdump > options one by bloody one.... :( sorry, -Chris From echristo at apple.com Wed Nov 7 23:28:48 2007 From: echristo at apple.com (Eric Christopher) Date: Wed, 7 Nov 2007 21:28:48 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r43870 - in /llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp: atomic-10.C atomic-3.C atomic-9.C barrier-1.C block-0.C critical-1.C flush-1.C for-10.C for-13.C for-4.C for-5.C for-6.C for-7.C for-8.C for-9.C macro-3.C master-3.C ordered-1.C tpl-barrier-1.C tpl-master-1.C In-Reply-To: <23515925-DF80-4742-A29D-A6FE84B85199@apple.com> References: <200711080154.lA81slfY003054@zion.cs.uiuc.edu> <23515925-DF80-4742-A29D-A6FE84B85199@apple.com> Message-ID: <1D83E588-8CAA-47EA-A359-F84BA6BB5D0B@apple.com> On Nov 7, 2007, at 8:47 PM, Dale Johannesen wrote: > >>> // PR middle-end/28046 >>> // { dg-do compile } >>> // { dg-options "-fopenmp -fdump-tree-gimple" } >>> +/* LLVM LOCAL test not applicable */ >>> +/* { dg-require-fdump "" } */ >> >> does -fdump-tree-gimple not work? I thought were we running the >> gimplifier? > > So it does. That's annoying, I'll have to go through the -fdump > options one by bloody one.... > I think gimple and tree-original are the only ones that llvm cares about. IIRC you don't care much past that (cgraph might be the only other one, but i doubt it). -eric From asl at math.spbu.ru Wed Nov 7 23:36:04 2007 From: asl at math.spbu.ru (Anton Korobeynikov) Date: Thu, 08 Nov 2007 08:36:04 +0300 Subject: [llvm-commits] [llvm-gcc-4.2] r43870 - in /llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp: atomic-10.C atomic-3.C atomic-9.C barrier-1.C block-0.C critical-1.C flush-1.C for-10.C for-13.C for-4.C for-5.C for-6.C for-7.C for-8.C for-9.C macro-3.C master-3.C ordered-1.C tpl-barrier-1.C tpl-master-1.C In-Reply-To: <1D83E588-8CAA-47EA-A359-F84BA6BB5D0B.SS755SS@apple.com> References: <200711080154.lA81slfY003054@zion.cs.uiuc.edu> <23515925-DF80-4742-A29D-A6FE84B85199@apple.com> <1D83E588-8CAA-47EA-A359-F84BA6BB5D0B.SS755SS@apple.com> Message-ID: <1194500164.10807.28.camel@asl.dorms.spbu.ru> > I think gimple and tree-original are the only ones that llvm cares > about. IIRC you don't care much past that (cgraph might be the only > other one, but i doubt it). In 4.2 llvm-convert is operating on "CFG gimple" (this isn't true for 4.0), so dumps after cgraph construction seems to be also alive. -- With best regards, Anton Korobeynikov. Faculty of Mathematics & Mechanics, Saint Petersburg State University. From echristo at apple.com Wed Nov 7 23:43:40 2007 From: echristo at apple.com (Eric Christopher) Date: Wed, 7 Nov 2007 21:43:40 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r43870 - in /llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp: atomic-10.C atomic-3.C atomic-9.C barrier-1.C block-0.C critical-1.C flush-1.C for-10.C for-13.C for-4.C for-5.C for-6.C for-7.C for-8.C for-9.C macro-3.C master-3.C ordered-1.C tpl-barrier-1.C tpl-master-1.C In-Reply-To: <1194500164.10807.28.camel@asl.dorms.spbu.ru> References: <200711080154.lA81slfY003054@zion.cs.uiuc.edu> <23515925-DF80-4742-A29D-A6FE84B85199@apple.com> <1D83E588-8CAA-47EA-A359-F84BA6BB5D0B.SS755SS@apple.com> <1194500164.10807.28.camel@asl.dorms.spbu.ru> Message-ID: <493E2B9A-D580-4BC8-8129-40BECBA622CB@apple.com> On Nov 7, 2007, at 9:36 PM, Anton Korobeynikov wrote: > >> I think gimple and tree-original are the only ones that llvm cares >> about. IIRC you don't care much past that (cgraph might be the only >> other one, but i doubt it). > In 4.2 llvm-convert is operating on "CFG gimple" (this isn't true for > 4.0), so dumps after cgraph construction seems to be also alive. Ah ha. Thanks. -eric From evan.cheng at apple.com Thu Nov 8 01:43:26 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Wed, 7 Nov 2007 23:43:26 -0800 Subject: [llvm-commits] [llvm] r43844 - in /llvm/trunk/lib/Target/X86: X86RegisterInfo.cpp X86RegisterInfo.td In-Reply-To: <1194472861.10807.19.camel@asl.dorms.spbu.ru> References: <200711072148.lA7LmZep025041.SS9385SS@zion.cs.uiuc.edu> <1194472861.10807.19.camel@asl.dorms.spbu.ru> Message-ID: <5C4D33A6-3DA3-4007-814C-646C5431492E@apple.com> On Nov 7, 2007, at 2:01 PM, Anton Korobeynikov wrote: > Dale, > >> Complete conditionalization of Dwarf reg numbers. > This looks pretty hackish. The numbers used before were definitely > correct for x86-32/linux. I dunno about darwin, but it looks like > "turning everything on darwin to be default implementation" is not a > good approach. :) The numbers were wrong from Darwin and x86-64. I think the approach is fine. But pleasejust remove the numbers from X86RegisterInfo.td since they are wrong for some of the targets. It's misleading to leave them in. > > And, if you need to conditionalize depending on target, table approach > (like in i386.h) will be definitely better, otherwise we'll end with > spaghetti-like code, when all supported targets will be in place. > That's good advice. Is that easy to do, Dale? Evan > -- > With best regards, Anton Korobeynikov. > > Faculty of Mathematics & Mechanics, Saint Petersburg State University. > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From resistor at mac.com Thu Nov 8 01:55:48 2007 From: resistor at mac.com (Owen Anderson) Date: Thu, 08 Nov 2007 07:55:48 -0000 Subject: [llvm-commits] [llvm] r43885 - /llvm/trunk/lib/CodeGen/BreakCriticalMachineEdges.cpp Message-ID: <200711080755.lA87tn0l024055@zion.cs.uiuc.edu> Author: resistor Date: Thu Nov 8 01:55:43 2007 New Revision: 43885 URL: http://llvm.org/viewvc/llvm-project?rev=43885&view=rev Log: Add the majority of machine-level critical edge breaking pass. Most of this was written by Fernando, cleanup and updating to TOT by me. This still needs a bit of work, particularly to handle jump tables properly. Added: llvm/trunk/lib/CodeGen/BreakCriticalMachineEdges.cpp Added: llvm/trunk/lib/CodeGen/BreakCriticalMachineEdges.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/BreakCriticalMachineEdges.cpp?rev=43885&view=auto ============================================================================== --- llvm/trunk/lib/CodeGen/BreakCriticalMachineEdges.cpp (added) +++ llvm/trunk/lib/CodeGen/BreakCriticalMachineEdges.cpp Thu Nov 8 01:55:43 2007 @@ -0,0 +1,131 @@ +//===----------- BreakCriticalMachineEdges - Break critical edges ---------===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by Fernando Pereira and is distributed under +// the University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===---------------------------------------------------------------------===// +// +// Break all of the critical edges in the CFG by inserting a dummy basic block. +// This pass may be "required" by passes that cannot deal with critical edges. +// Notice that this pass invalidates the CFG, because the same BasicBlock is +// used as parameter for the src MachineBasicBlock and the new dummy +// MachineBasicBlock. +// +//===---------------------------------------------------------------------===// + +#include "llvm/CodeGen/Passes.h" +#include "llvm/CodeGen/MachineFunctionPass.h" +#include "llvm/CodeGen/MachineInstr.h" +#include "llvm/CodeGen/MachineJumpTableInfo.h" +#include "llvm/Target/TargetInstrInfo.h" +#include "llvm/Target/TargetMachine.h" +#include "llvm/ADT/Statistic.h" +#include "llvm/Support/Compiler.h" + +using namespace llvm; + +namespace { + struct VISIBILITY_HIDDEN BreakCriticalMachineEdges : + public MachineFunctionPass { + static char ID; // Pass identification + BreakCriticalMachineEdges() : MachineFunctionPass((intptr_t)&ID) {} + + bool runOnMachineFunction(MachineFunction& Fn); + void splitCriticalEdge(MachineBasicBlock* A, MachineBasicBlock* B); + }; + + char BreakCriticalMachineEdges::ID = 0; + RegisterPass X("critical-machine-edges", + "Break critical machine code edges"); +} + +//const PassInfo *llvm::BreakCriticalMachineEdgesID = X.getPassInfo(); + +void BreakCriticalMachineEdges::splitCriticalEdge(MachineBasicBlock* src, + MachineBasicBlock* dst) { + const BasicBlock* srcBB = src->getBasicBlock(); + + MachineBasicBlock* crit_mbb = new MachineBasicBlock(srcBB); + + // modify the llvm control flow graph + src->removeSuccessor(dst); + src->addSuccessor(crit_mbb); + crit_mbb->addSuccessor(dst); + + // insert the new block into the machine function. + src->getParent()->getBasicBlockList().insert(src->getParent()->end(), + crit_mbb); + + // insert a unconditional branch linking the new block to dst + const TargetMachine& TM = src->getParent()->getTarget(); + const TargetInstrInfo* TII = TM.getInstrInfo(); + std::vector emptyConditions; + TII->InsertBranch(*crit_mbb, dst, (MachineBasicBlock*)0, emptyConditions); + + // modify every branch in src that points to dst to point to the new + // machine basic block instead: + MachineBasicBlock::iterator mii = src->end(); + bool found_branch = false; + while (mii != src->begin()) { + mii--; + // if there are no more branches, finish the loop + if (!TII->isTerminatorInstr(mii->getOpcode())) { + break; + } + + // Scan the operands of this branch, replacing any uses of dst with + // crit_mbb. + for (unsigned i = 0, e = mii->getNumOperands(); i != e; ++i) { + MachineOperand & mo = mii->getOperand(i); + if (mo.isMachineBasicBlock() && + mo.getMachineBasicBlock() == dst) { + found_branch = true; + mo.setMachineBasicBlock(crit_mbb); + } + } + } + + // TODO: This is tentative. It may be necessary to fix this code. Maybe + // I am inserting too many gotos, but I am trusting that the asm printer + // will optimize the unnecessary gotos. + if(!found_branch) { + TII->InsertBranch(*src, crit_mbb, (MachineBasicBlock*)0, emptyConditions); + } + + /// Change all the phi functions in dst, so that the incoming block be + /// crit_mbb, instead of src + for(mii = dst->begin(); mii != dst->end(); mii++) { + /// the first instructions are always phi functions. + if(mii->getOpcode() != TargetInstrInfo::PHI) + break; + + for (unsigned u = 0; u != mii->getNumOperands(); ++u) + if (mii->getOperand(u).isMachineBasicBlock() && + mii->getOperand(u).getMachineBasicBlock() == src) + mii->getOperand(u).setMachineBasicBlock(crit_mbb); + } +} + +bool BreakCriticalMachineEdges::runOnMachineFunction(MachineFunction& F) { + std::vector SourceBlocks; + std::vector DestBlocks; + + for(MachineFunction::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI) { + for(MachineBasicBlock::succ_iterator SI = FI->succ_begin(), + SE = FI->succ_end(); SI != SE; ++SI) { + // predecessor with multiple successors, successor with multiple + // predecessors. + if (FI->succ_size() > 1 && (*SI)->pred_size() > 1) { + SourceBlocks.push_back(FI); + DestBlocks.push_back(*SI); + } + } + } + + for(unsigned u = 0; u < SourceBlocks.size() > 0; u++) + splitCriticalEdge(SourceBlocks[u], DestBlocks[u]); + + return false; +} \ No newline at end of file From isanbard at gmail.com Thu Nov 8 02:58:50 2007 From: isanbard at gmail.com (Bill Wendling) Date: Thu, 08 Nov 2007 08:58:50 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43886 - /llvm-gcc-4.2/trunk/gnattools/ Message-ID: <200711080858.lA88wrRM027975@zion.cs.uiuc.edu> Author: void Date: Thu Nov 8 02:58:47 2007 New Revision: 43886 URL: http://llvm.org/viewvc/llvm-project?rev=43886&view=rev Log: Removing to sync with Apple GCC 4.2 Removed: llvm-gcc-4.2/trunk/gnattools/ From isanbard at gmail.com Thu Nov 8 03:11:53 2007 From: isanbard at gmail.com (Bill Wendling) Date: Thu, 08 Nov 2007 09:11:53 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43887 - in /llvm-gcc-4.2/trunk: boehm-gc/ libffi/ libjava/ libmudflap/ libobjc/ libssp/ zlib/ Message-ID: <200711080911.lA89Btnq028616@zion.cs.uiuc.edu> Author: void Date: Thu Nov 8 03:11:48 2007 New Revision: 43887 URL: http://llvm.org/viewvc/llvm-project?rev=43887&view=rev Log: Removing libraries to sync with Apple GCC 4.2. Removed: llvm-gcc-4.2/trunk/boehm-gc/ llvm-gcc-4.2/trunk/libffi/ llvm-gcc-4.2/trunk/libjava/ llvm-gcc-4.2/trunk/libmudflap/ llvm-gcc-4.2/trunk/libobjc/ llvm-gcc-4.2/trunk/libssp/ llvm-gcc-4.2/trunk/zlib/ From baldrick at free.fr Thu Nov 8 03:18:44 2007 From: baldrick at free.fr (Duncan Sands) Date: Thu, 8 Nov 2007 10:18:44 +0100 Subject: [llvm-commits] [llvm-gcc-4.2] r43886 - /llvm-gcc-4.2/trunk/gnattools/ In-Reply-To: <200711080858.lA88wrRM027975@zion.cs.uiuc.edu> References: <200711080858.lA88wrRM027975@zion.cs.uiuc.edu> Message-ID: <200711081018.44325.baldrick@free.fr> > Removing to sync with Apple GCC 4.2 > > Removed: > llvm-gcc-4.2/trunk/gnattools/ Argh! The Ada front-end won't build without this - is it going to come back at some point? D. From baldrick at free.fr Thu Nov 8 03:15:04 2007 From: baldrick at free.fr (Duncan Sands) Date: Thu, 8 Nov 2007 10:15:04 +0100 Subject: [llvm-commits] [llvm-gcc-4.0] r43842 - /llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp In-Reply-To: <16e5fdf90711071606x6aa9663av9f6670ad6dded9e0@mail.gmail.com> References: <200711072059.lA7KxVOF022613@zion.cs.uiuc.edu> <251BF81A-2AA7-4F87-B461-964168B66E03@apple.com> <16e5fdf90711071606x6aa9663av9f6670ad6dded9e0@mail.gmail.com> Message-ID: <200711081015.05716.baldrick@free.fr> > > Also, Bill, after Duncan has tested and commits his patch to 4.2, can > > you please backport it to 4.0? > > > Duncan mentioned that he was going to attempt this. :-) I will if no-one else does, but I'd rather not. Pretty please? :) D. From evan.cheng at apple.com Thu Nov 8 03:25:34 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Thu, 08 Nov 2007 09:25:34 -0000 Subject: [llvm-commits] [llvm] r43888 - in /llvm/trunk: lib/CodeGen/SelectionDAG/DAGCombiner.cpp test/CodeGen/X86/2007-11-07-MulBy4.ll Message-ID: <200711080925.lA89PaEH029129@zion.cs.uiuc.edu> Author: evancheng Date: Thu Nov 8 03:25:29 2007 New Revision: 43888 URL: http://llvm.org/viewvc/llvm-project?rev=43888&view=rev Log: If both parts of smul_lohi, etc. are used, don't simplify. If only one part is used, try simplify it. Added: llvm/trunk/test/CodeGen/X86/2007-11-07-MulBy4.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=43888&r1=43887&r2=43888&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Thu Nov 8 03:25:29 2007 @@ -1420,7 +1420,8 @@ bool DAGCombiner::SimplifyNodeWithTwoResults(SDNode *N, unsigned LoOp, unsigned HiOp) { // If the high half is not needed, just compute the low half. - if (!N->hasAnyUseOfValue(1) && + bool HiExists = N->hasAnyUseOfValue(1); + if (!HiExists && (!AfterLegalize || TLI.isOperationLegal(LoOp, N->getValueType(0)))) { DAG.ReplaceAllUsesOfValueWith(SDOperand(N, 0), @@ -1431,7 +1432,8 @@ } // If the low half is not needed, just compute the high half. - if (!N->hasAnyUseOfValue(0) && + bool LoExists = N->hasAnyUseOfValue(0); + if (!LoExists && (!AfterLegalize || TLI.isOperationLegal(HiOp, N->getValueType(1)))) { DAG.ReplaceAllUsesOfValueWith(SDOperand(N, 1), @@ -1441,36 +1443,35 @@ return true; } - // If the two computed results can be siplified separately, separate them. - SDOperand Lo = DAG.getNode(LoOp, N->getValueType(0), - N->op_begin(), N->getNumOperands()); - SDOperand Hi = DAG.getNode(HiOp, N->getValueType(1), - N->op_begin(), N->getNumOperands()); - unsigned LoExists = !Lo.use_empty(); - unsigned HiExists = !Hi.use_empty(); - SDOperand LoOpt = Lo; - SDOperand HiOpt = Hi; - if (!LoExists || !HiExists) { - SDOperand Pair = DAG.getNode(ISD::BUILD_PAIR, MVT::Other, Lo, Hi); - assert(Pair.use_empty() && "Pair with type MVT::Other already exists!"); - LoOpt = combine(Lo.Val); - HiOpt = combine(Hi.Val); - if (!LoOpt.Val) - LoOpt = Pair.getOperand(0); - if (!HiOpt.Val) - HiOpt = Pair.getOperand(1); - DAG.DeleteNode(Pair.Val); - } - if ((LoExists || LoOpt != Lo) && - (HiExists || HiOpt != Hi) && - TLI.isOperationLegal(LoOpt.getOpcode(), LoOpt.getValueType()) && - TLI.isOperationLegal(HiOpt.getOpcode(), HiOpt.getValueType())) { - DAG.ReplaceAllUsesOfValueWith(SDOperand(N, 0), LoOpt); - DAG.ReplaceAllUsesOfValueWith(SDOperand(N, 1), HiOpt); - return true; + // If both halves are used, return as it is. + if (LoExists && HiExists) + return false; + + // If the two computed results can be simplified separately, separate them. + bool RetVal = false; + if (LoExists) { + SDOperand Lo = DAG.getNode(LoOp, N->getValueType(0), + N->op_begin(), N->getNumOperands()); + SDOperand LoOpt = combine(Lo.Val); + if (LoOpt.Val && LoOpt != Lo && + TLI.isOperationLegal(LoOpt.getOpcode(), LoOpt.getValueType())) { + RetVal = true; + DAG.ReplaceAllUsesOfValueWith(SDOperand(N, 0), LoOpt); + } } - return false; + if (HiExists) { + SDOperand Hi = DAG.getNode(HiOp, N->getValueType(1), + N->op_begin(), N->getNumOperands()); + SDOperand HiOpt = combine(Hi.Val); + if (HiOpt.Val && HiOpt != Hi && + TLI.isOperationLegal(HiOpt.getOpcode(), HiOpt.getValueType())) { + RetVal = true; + DAG.ReplaceAllUsesOfValueWith(SDOperand(N, 1), HiOpt); + } + } + + return RetVal; } SDOperand DAGCombiner::visitSMUL_LOHI(SDNode *N) { Added: llvm/trunk/test/CodeGen/X86/2007-11-07-MulBy4.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2007-11-07-MulBy4.ll?rev=43888&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/X86/2007-11-07-MulBy4.ll (added) +++ llvm/trunk/test/CodeGen/X86/2007-11-07-MulBy4.ll Thu Nov 8 03:25:29 2007 @@ -0,0 +1,129 @@ +; RUN: llvm-as < %s | llc -march=x86 | not grep imul + + %struct.eebb = type { %struct.eebb*, i16* } + %struct.hf = type { %struct.hf*, i16*, i8*, i32, i32, %struct.eebb*, i32, i32, i8*, i8*, i8*, i8*, i16*, i8*, i16*, %struct.ri, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [30 x i32], %struct.eebb, i32, i8* } + %struct.foo_data = type { i32, i32, i32, i32*, i32, i32, i8*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i8*, i16*, i16*, i16*, i16*, i32, i32, i32, %struct.ri*, i8*, %struct.hf* } + %struct.ri = type { %struct.ri*, i32, i8*, i16*, i32*, i32 } + +define fastcc i32 @foo(i16* %eptr, i8* %ecode, %struct.foo_data* %md, i32 %ims) { +entry: + %tmp36 = load i32* null, align 4 ; [#uses=1] + %tmp37 = icmp ult i32 0, %tmp36 ; [#uses=1] + br i1 %tmp37, label %cond_next79, label %cond_true + +cond_true: ; preds = %entry + ret i32 0 + +cond_next79: ; preds = %entry + %tmp85 = load i32* null, align 4 ; [#uses=1] + %tmp86 = icmp ult i32 0, %tmp85 ; [#uses=1] + br i1 %tmp86, label %cond_next130, label %cond_true89 + +cond_true89: ; preds = %cond_next79 + ret i32 0 + +cond_next130: ; preds = %cond_next79 + %tmp173 = icmp eq i32 0, 0 ; [#uses=1] + br i1 %tmp173, label %cond_next201, label %cond_true176 + +cond_true176: ; preds = %cond_next130 + ret i32 0 + +cond_next201: ; preds = %cond_next130 + switch i32 0, label %bb19955 [ + i32 0, label %bb1266 + i32 1, label %bb5018 + i32 2, label %bb5075 + i32 3, label %cond_true5534 + i32 4, label %cond_true5534 + i32 5, label %bb6039 + i32 6, label %bb6181 + i32 7, label %bb6323 + i32 8, label %bb6463 + i32 9, label %bb6605 + i32 10, label %bb6746 + i32 11, label %cond_next5871 + i32 16, label %bb5452 + i32 17, label %bb5395 + i32 19, label %bb4883 + i32 20, label %bb5136 + i32 23, label %bb12899 + i32 64, label %bb2162 + i32 69, label %bb1447 + i32 70, label %bb1737 + i32 71, label %bb1447 + i32 72, label %bb1737 + i32 73, label %cond_true1984 + i32 75, label %bb740 + i32 80, label %bb552 + ] + +bb552: ; preds = %cond_next201 + ret i32 0 + +bb740: ; preds = %cond_next201 + ret i32 0 + +bb1266: ; preds = %cond_next201 + ret i32 0 + +bb1447: ; preds = %cond_next201, %cond_next201 + ret i32 0 + +bb1737: ; preds = %cond_next201, %cond_next201 + ret i32 0 + +cond_true1984: ; preds = %cond_next201 + ret i32 0 + +bb2162: ; preds = %cond_next201 + ret i32 0 + +bb4883: ; preds = %cond_next201 + ret i32 0 + +bb5018: ; preds = %cond_next201 + ret i32 0 + +bb5075: ; preds = %cond_next201 + ret i32 0 + +bb5136: ; preds = %cond_next201 + ret i32 0 + +bb5395: ; preds = %cond_next201 + ret i32 0 + +bb5452: ; preds = %cond_next201 + ret i32 0 + +cond_true5534: ; preds = %cond_next201, %cond_next201 + ret i32 0 + +cond_next5871: ; preds = %cond_next201 + ret i32 0 + +bb6039: ; preds = %cond_next201 + ret i32 0 + +bb6181: ; preds = %cond_next201 + ret i32 0 + +bb6323: ; preds = %cond_next201 + ret i32 0 + +bb6463: ; preds = %cond_next201 + ret i32 0 + +bb6605: ; preds = %cond_next201 + ret i32 0 + +bb6746: ; preds = %cond_next201 + ret i32 0 + +bb12899: ; preds = %cond_next201 + ret i32 0 + +bb19955: ; preds = %cond_next201 + ret i32 0 +} From isanbard at gmail.com Thu Nov 8 03:42:58 2007 From: isanbard at gmail.com (Bill Wendling) Date: Thu, 8 Nov 2007 01:42:58 -0800 Subject: [llvm-commits] [llvm-gcc-4.0] r43842 - /llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp In-Reply-To: <200711081015.05716.baldrick@free.fr> References: <200711072059.lA7KxVOF022613@zion.cs.uiuc.edu> <251BF81A-2AA7-4F87-B461-964168B66E03@apple.com> <16e5fdf90711071606x6aa9663av9f6670ad6dded9e0@mail.gmail.com> <200711081015.05716.baldrick@free.fr> Message-ID: On Nov 8, 2007, at 1:15 AM, Duncan Sands wrote: >>> Also, Bill, after Duncan has tested and commits his patch to 4.2, >>> can >>> you please backport it to 4.0? >>> >> Duncan mentioned that he was going to attempt this. :-) > > I will if no-one else does, but I'd rather not. Pretty please? :) > I'm willing to give it a try, if I can. ;-) -bw From isanbard at gmail.com Thu Nov 8 03:43:24 2007 From: isanbard at gmail.com (Bill Wendling) Date: Thu, 8 Nov 2007 01:43:24 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r43886 - /llvm-gcc-4.2/trunk/gnattools/ In-Reply-To: <200711081018.44325.baldrick@free.fr> References: <200711080858.lA88wrRM027975@zion.cs.uiuc.edu> <200711081018.44325.baldrick@free.fr> Message-ID: <10A7BBAA-80BC-47A1-8DC4-630DC8FF75BF@gmail.com> Shoot! I thought it wasn't used...I'll resurrect it. -bw On Nov 8, 2007, at 1:18 AM, Duncan Sands wrote: >> Removing to sync with Apple GCC 4.2 >> >> Removed: >> llvm-gcc-4.2/trunk/gnattools/ > > Argh! The Ada front-end won't build without this - is it > going to come back at some point? > > D. From baldrick at free.fr Thu Nov 8 03:51:53 2007 From: baldrick at free.fr (Duncan Sands) Date: Thu, 8 Nov 2007 10:51:53 +0100 Subject: [llvm-commits] [llvm-gcc-4.2] r43399 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp In-Reply-To: <3AAB426E-4CC6-47E0-B59B-721E6FABEC82@apple.com> References: <200710262027.l9QKRSbh024383@zion.cs.uiuc.edu> <200711070946.48420.baldrick@free.fr> <3AAB426E-4CC6-47E0-B59B-721E6FABEC82@apple.com> Message-ID: <200711081051.54464.baldrick@free.fr> Hi Dale, > While that's nonstandard, it's hard to imagine a memcpy > implementation that would screw it up. > But they can partially overlap: how does mainline handle this? I know it used to get it wrong (the testcase I sent was filched from gcc bugzilla), but the bug was marked as resolved, without a link to the resolving changeset. Maybe they only solved the memcpy from a location to itself problem, and not the overlapping case? Ciao, D. From isanbard at gmail.com Thu Nov 8 04:10:57 2007 From: isanbard at gmail.com (Bill Wendling) Date: Thu, 08 Nov 2007 10:10:57 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43889 - in /llvm-gcc-4.2/trunk/gnattools: ./ ChangeLog Makefile.in configure configure.ac Message-ID: <200711081010.lA8AAwh1031698@zion.cs.uiuc.edu> Author: void Date: Thu Nov 8 04:10:49 2007 New Revision: 43889 URL: http://llvm.org/viewvc/llvm-project?rev=43889&view=rev Log: Totally shouldn't have removed this. Sorry Duncan. :-( Added: llvm-gcc-4.2/trunk/gnattools/ llvm-gcc-4.2/trunk/gnattools/ChangeLog llvm-gcc-4.2/trunk/gnattools/Makefile.in llvm-gcc-4.2/trunk/gnattools/configure (with props) llvm-gcc-4.2/trunk/gnattools/configure.ac Added: llvm-gcc-4.2/trunk/gnattools/ChangeLog URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gnattools/ChangeLog?rev=43889&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gnattools/ChangeLog (added) +++ llvm-gcc-4.2/trunk/gnattools/ChangeLog Thu Nov 8 04:10:49 2007 @@ -0,0 +1,60 @@ +2007-05-13 Release Manager + + * GCC 4.2.0 released. + +2006-10-10 Brooks Moses + + * Makefile.in: Added empty "pdf" target. + +2006-06-03 Carlos O'Donell + + * Makefile.in: Add html and install-html targets. + +2005-03-09 Arnaud Charlet + + * Makefile.in: Fix incorrect use of ' in shell command + +2005-02-02 Nathanael Nerode + + * Makefile.in: Remove use of cc_set_by_configure; just use + plain old CC from the top level in this case. + +2005-01-30 Nathanael Nerode + Merge from mainline at tag libada-gnattools-merge-20050129: + * configure.ac: Changes propagated from gcc/ada/Makefile.in. + * Makefile.in: Changes relocated from gcc/ada/Makefile.in. + +2004-12-13 Nathanael Nerode + + * Makefile.in: Reinstate stamp-gnatlib check. + +2004-12-02 Nathanael Nerode + + * Makefile.in: Inline gnattools{1,1-re,2,3,4} targets from + gcc/ada/configure.ac into gnattools-native and gnattools-cross + targets, collecting flags as appropriate from here, + gcc/ada/Makefile.in, gcc/ada/configure.ac, etc. Attempt to retain + identical behavior. + * configure.ac: Add necessary configure bits from + gcc/ada/configure.ac. + * configure: Regenerate. + +2004-08-16 Nathanael Nerode + + * configure.ac: Replace AC_CANONICAL_SYSTEM with _BUILD, _HOST, + _TARGET. Replace _GCC_TOPLEV_NONCANONICAL_TARGET with + ACX_NONCANONICAL_TARGET, and replace now-redundant AC_SUBST. + * configure: Regenerate. + +2004-07-18 Nathanael Nerode + + * Makefile.in, configure.ac: Remove libada-specific targets and + variables. + * configure: Regenerate. + * New directory, cloned from libada. + +Copyright 2004, 2005 Free Software Foundation, Inc. + +This ChangeLog is free software; the Free Software Foundation gives +unlimited permission to copy, distribute, and modify it. + Added: llvm-gcc-4.2/trunk/gnattools/Makefile.in URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gnattools/Makefile.in?rev=43889&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gnattools/Makefile.in (added) +++ llvm-gcc-4.2/trunk/gnattools/Makefile.in Thu Nov 8 04:10:49 2007 @@ -0,0 +1,346 @@ +# Makefile for gnattools +# Copyright 2003, 2004 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Default target; must be first. +all: gnattools + +# Standard autoconf-set variables. +SHELL = @SHELL@ +srcdir = @srcdir@ +build = @build@ +target = @target@ +prefix = @prefix@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ + +# Nonstandard autoconf-set variables. +LN_S=@LN_S@ +target_noncanonical=@target_noncanonical@ + +# Variables for the user (or the top level) to override. +objext=.o +TRACE=no +ADA_FOR_BUILD= +ADA_FOR_TARGET= +LDFLAGS= +STAGE_PREFIX= +PWD_COMMAND = $${PWDCMD-pwd} + +# The tedious process of getting CFLAGS right. +CFLAGS=-g +LOOSE_WARN = -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes +GCC_WARN_CFLAGS = $(LOOSE_WARN) $(NOCOMMON_FLAG) + +ADA_CFLAGS= +T_ADA_CFLAGS= +# HPPA is literally the only target which sets X_ADA_CFLAGS +X_ADA_CFLAGS=@x_ada_cflags@ +ALL_ADA_CFLAGS=$(X_ADA_CFLAGS) $(T_ADA_CFLAGS) $(ADA_CFLAGS) + +# Variables for gnattools. +ADAFLAGS= -gnatpg -gnata +ADA_INCLUDE_DIR = $(libsubdir)/adainclude +ADA_RTL_OBJ_DIR = $(libsubdir)/adalib + +# For finding the GCC build dir, which is used far too much +GCC_DIR=../gcc +# Include fragment generated by GCC configure; shared with libada for now. +include $(GCC_DIR)/libada-mk +# Variables based on those gleaned from the GCC makefile. :-P +libsubdir=$(libdir)/gcc/$(target_noncanonical)/$(gcc_version) + +# Get possible host-specific override for libsubdir (ick). +xmake_file=$(subst /config,/../gcc/config,$(gcc_xmake_file)) +ifneq ($(xmake_file),) +include $(xmake_file) +endif + +# Absolute srcdir for gcc/ada (why do we want absolute? I dunno) +fsrcdir := $(shell cd $(srcdir)/../gcc/ada/; ${PWD_COMMAND}) + +# Useful "subroutines" for the excess includes +INCLUDES_FOR_SUBDIR = -I. -I.. -I../.. -I$(fsrcdir) -I$(fsrcdir)/../config \ + -I$(fsrcdir)/../../include -I$(fsrcdir)/.. +ADA_INCLUDES_FOR_SUBDIR = -I. -I$(fsrcdir) + +# Variables for gnattools1, native +TOOLS_FLAGS_TO_PASS_1= \ + "CC=../../xgcc -B../../" \ + "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \ + "LDFLAGS=$(LDFLAGS)" \ + "ADAFLAGS=$(ADAFLAGS)" \ + "INCLUDES=$(INCLUDES_FOR_SUBDIR)" \ + "ADA_INCLUDES=-I- -I../rts $(ADA_INCLUDES_FOR_SUBDIR)"\ + "exeext=$(exeext)" \ + "fsrcdir=$(fsrcdir)" \ + "srcdir=$(fsrcdir)" \ + "GNATBIND=../../gnatbind" \ + "TOOLSCASE=native" + +# Variables for regnattools +TOOLS_FLAGS_TO_PASS_1re= \ + "CC=../../xgcc -B../../" \ + "CFLAGS=$(CFLAGS)" \ + "ADAFLAGS=$(ADAFLAGS)" \ + "INCLUDES=$(INCLUDES_FOR_SUBDIR)" \ + "ADA_INCLUDES=-I../rts $(ADA_INCLUDES_FOR_SUBDIR)"\ + "exeext=$(exeext)" \ + "fsrcdir=$(fsrcdir)" \ + "srcdir=$(fsrcdir)" \ + "GNATMAKE=../../gnatmake" \ + "GNATLINK=../../gnatlink" \ + "GNATBIND=../../gnatbind" \ + "TOOLSCASE=cross" \ + "INCLUDES=" + +# Variables for gnattools2, native +TOOLS_FLAGS_TO_PASS_NATIVE= \ + "CC=../../xgcc -B../../" \ + "CFLAGS=$(CFLAGS)" \ + "ADAFLAGS=$(ADAFLAGS)" \ + "INCLUDES=$(INCLUDES_FOR_SUBDIR)" \ + "ADA_INCLUDES=-I../rts $(ADA_INCLUDES_FOR_SUBDIR)" \ + "exeext=$(exeext)" \ + "fsrcdir=$(fsrcdir)" \ + "srcdir=$(fsrcdir)" \ + "GNATMAKE=../../gnatmake" \ + "GNATLINK=../../gnatlink" \ + "GNATBIND=../../gnatbind" \ + "TOOLSCASE=native" + +# Variables for gnattools, cross +TOOLS_FLAGS_TO_PASS_CROSS= \ + "CC=$(CC)" \ + "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \ + "LDFLAGS=$(LDFLAGS)" \ + "ADAFLAGS=$(ADAFLAGS)" \ + "INCLUDES=$(INCLUDES_FOR_SUBDIR)" \ + "ADA_INCLUDES=-I$(RTS_DIR)../adainclude -I$(RTS_DIR) $(ADA_INCLUDES_FOR_SUBDIR)" \ + "exeext=$(exeext)" \ + "fsrcdir=$(fsrcdir)" \ + "srcdir=$(fsrcdir)" \ + "GNATMAKE=gnatmake" \ + "GNATLINK=gnatlink" \ + "GNATBIND=gnatbind" \ + "TOOLSCASE=cross" \ + "LIBGNAT=" + +# File lists +# ---------- + +# File associations set by configure +EXTRA_GNATTOOLS = @EXTRA_GNATTOOLS@ +TOOLS_TARGET_PAIRS = @TOOLS_TARGET_PAIRS@ + +# These are built by gnatmake, and in both native and cross configurations. +GNATTOOLS2_FILES = \ + ../../gnatchop$(exeext) \ + ../../gnat$(exeext) \ + ../../gnatkr$(exeext) \ + ../../gnatls$(exeext) \ + ../../gnatprep$(exeext) \ + ../../gnatxref$(exeext) \ + ../../gnatfind$(exeext) \ + ../../gnatname$(exeext) \ + ../../gnatclean$(exeext) \ + ../../gprmake$(exeext) + +# Makefile targets +# ---------------- + +.PHONY: gnattools gnattools-native gnattools-cross regnattools +gnattools: @default_gnattools_target@ + +# Sanity check +$(GCC_DIR)/stamp-gnatlib: + @if [ ! -f $(GCC_DIR)/stamp-gnatlib ] ; \ + then \ + echo "Cannot build gnattools while gnatlib is out of date or unbuilt" ; \ + false; \ + else \ + true; \ + fi + + +# Build directory for the tools. Let's copy the target-dependent +# sources using the same mechanism as for gnatlib. The other sources are +# accessed using the vpath directive in ada/Makefile.in + +$(GCC_DIR)/stamp-tools: + -rm -rf $(GCC_DIR)/ada/tools + -mkdir -p $(GCC_DIR)/ada/tools + -(cd $(GCC_DIR)/ada/tools; $(LN_S) ../sdefault.adb .) + -$(foreach PAIR,$(TOOLS_TARGET_PAIRS), \ + rm -f $(GCC_DIR)/ada/tools/$(word 1,$(subst <, ,$(PAIR)));\ + $(LN_S) $(fsrcdir)/$(word 2,$(subst <, ,$(PAIR))) \ + $(GCC_DIR)/ada/tools/$(word 1,$(subst <, ,$(PAIR)));) + touch $(GCC_DIR)/stamp-tools + +# gnatmake/link tools cannot always be built with gnatmake/link for bootstrap +# reasons: gnatmake should be built with a recent compiler, a recent compiler +# may not generate ALI files compatible with an old gnatmake so it is important +# to be able to build gnatmake without a version of gnatmake around. Once +# everything has been compiled once, gnatmake can be recompiled with itself +# (see target regnattools) +gnattools-native: $(GCC_DIR)/stamp-tools $(GCC_DIR)/stamp-gnatlib + # gnattools1 + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ + $(TOOLS_FLAGS_TO_PASS_1) \ + ../../gnatmake$(exeext) ../../gnatlink$(exeext) ../../gnatbl$(exeext) + # gnattools2 + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ + $(TOOLS_FLAGS_TO_PASS_NATIVE) \ + $(GNATTOOLS2_FILES) + +# gnatmake/link can be built with recent gnatmake/link if they are available. +# This is especially convenient for building cross tools or for rebuilding +# the tools when the original bootstrap has already be done. +regnattools: $(GCC_DIR)/stamp-gnatlib + # gnattools1-re + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ + $(TOOLS_FLAGS_TO_PASS_1re) \ + gnatmake-re gnatlink-re + # gnattools2 + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ + $(TOOLS_FLAGS_TO_PASS_NATIVE) \ + $(GNATTOOLS2_FILES) + +# For cross builds of gnattools, +# put the host RTS dir first in the PATH to hide the default runtime +# files that are among the sources +# FIXME: This should be done in configure. +RTS_DIR:=$(strip $(subst \,/,$(shell gnatls -v | grep adalib ))) +gnattools-cross: $(GCC_DIR)/stamp-tools + # gnattools1-re + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ + $(TOOLS_FLAGS_TO_PASS_CROSS) INCLUDES="" \ + gnatmake-re gnatlink-re + # gnattools2 + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ + $(TOOLS_FLAGS_TO_PASS_CROSS) \ + $(GNATTOOLS2_FILES) + # gnattools4 (cross only) + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ + $(TOOLS_FLAGS_TO_PASS_CROSS) \ + top_buildir=../../.. \ + ../../vxaddr2line$(exeext) + # Rename cross tools to where the GCC makefile wants them when + # installing. FIXME: installation should be done elsewhere. + if [ -f $(GCC_DIR)/gnatbind$(exeext) ] ; then \ + mv $(GCC_DIR)/gnatbind$(exeext) $(GCC_DIR)/gnatbind-cross$(exeext); \ + fi + if [ -f $(GCC_DIR)/gnatbl$(exeext) ] ; then \ + mv $(GCC_DIR)/gnatbl$(exeext) $(GCC_DIR)/gnatbl-cross$(exeext); \ + fi + if [ -f $(GCC_DIR)/gnatchop$(exeext) ] ; then \ + mv $(GCC_DIR)/gnatchop$(exeext) $(GCC_DIR)/gnatchop-cross$(exeext); \ + fi + if [ -f $(GCC_DIR)/gnat$(exeext) ] ; then \ + mv $(GCC_DIR)/gnat$(exeext) $(GCC_DIR)/gnat-cross$(exeext); \ + fi + if [ -f $(GCC_DIR)/gnatkr$(exeext) ] ; then \ + mv $(GCC_DIR)/gnatkr$(exeext) $(GCC_DIR)/gnatkr-cross$(exeext); \ + fi + if [ -f $(GCC_DIR)/gnatlink$(exeext) ] ; then \ + mv $(GCC_DIR)/gnatlink$(exeext) $(GCC_DIR)/gnatlink-cross$(exeext); \ + fi + if [ -f $(GCC_DIR)/gnatls$(exeext) ] ; then \ + mv $(GCC_DIR)/gnatls$(exeext) $(GCC_DIR)/gnatls-cross$(exeext); \ + fi + if [ -f $(GCC_DIR)/gnatmake$(exeext) ] ; then \ + mv $(GCC_DIR)/gnatmake$(exeext) $(GCC_DIR)/gnatmake-cross$(exeext); \ + fi + if [ -f $(GCC_DIR)/gnatmem$(exeext) ] ; then \ + mv $(GCC_DIR)/gnatmem$(exeext) $(GCC_DIR)/gnatmem-cross$(exeext); \ + fi + if [ -f $(GCC_DIR)/gnatname$(exeext) ] ; then \ + mv $(GCC_DIR)/gnatname$(exeext) $(GCC_DIR)/gnatname-cross$(exeext); \ + fi + if [ -f $(GCC_DIR)/gnatprep$(exeext) ] ; then \ + mv $(GCC_DIR)/gnatprep$(exeext) $(GCC_DIR)/gnatprep-cross$(exeext); \ + fi + if [ -f $(GCC_DIR)/gnatxref$(exeext) ] ; then \ + mv $(GCC_DIR)/gnatxref$(exeext) $(GCC_DIR)/gnatxref-cross$(exeext); \ + fi + if [ -f $(GCC_DIR)/gnatfind$(exeext) ] ; then \ + mv $(GCC_DIR)/gnatfind$(exeext) $(GCC_DIR)/gnatfind-cross$(exeext); \ + fi + if [ -f $(GCC_DIR)/gnatclean$(exeext) ] ; then \ + mv $(GCC_DIR)/gnatclean$(exeext) $(GCC_DIR)/gnatclean-cross$(exeext); \ + fi + if [ -f $(GCC_DIR)/gnatsym$(exeext) ] ; then \ + mv $(GCC_DIR)/gnatsym$(exeext) $(GCC_DIR)/gnatsym-cross$(exeext); \ + fi + +# Other +# ----- + +# Check uninstalled version. +check: + +# Check installed version. +installcheck: + +# Build info (none here). +info: + +# Build DVI (none here). +dvi: + +# Build PDF (none here). +pdf: + +# Build HTML (none here). +html: + +# Build TAGS (none here). +TAGS: + +# Installation rules. +install: + +install-info: + +install-html: + +# Cleaning rules. +mostlyclean: + +clean: + +distclean: + $(RM) Makefile config.status config.log + +maintainer-clean: + +# Rules for rebuilding this Makefile. +Makefile: $(srcdir)/Makefile.in config.status + CONFIG_FILES=$@ ; \ + CONFIG_HEADERS= ; \ + $(SHELL) ./config.status + +config.status: $(srcdir)/configure + $(SHELL) ./config.status --recheck + +$(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac + cd $(srcdir) && autoconf + +# Don't export variables to the environment, in order to not confuse +# configure. +.NOEXPORT: + Added: llvm-gcc-4.2/trunk/gnattools/configure URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gnattools/configure?rev=43889&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gnattools/configure (added) +++ llvm-gcc-4.2/trunk/gnattools/configure Thu Nov 8 04:10:49 2007 @@ -0,0 +1,2574 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59. +# +# Copyright (C) 2003 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="Makefile.in" +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAINT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S x_ada_cflags default_gnattools_target TOOLS_TARGET_PAIRS EXTRA_GNATTOOLS LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -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 && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -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 && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -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 && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + 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 && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # 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 this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-maintainer-mode + enable make rules and dependencies not useful (and + sometimes confusing) to the casual installer + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd "$ac_popdir" + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright (C) 2003 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + + + + +# Command-line options. +# Very limited version of AC_MAINTAINER_MODE. +# Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then + enableval="$enable_maintainer_mode" + case ${enable_maintainer_mode} in + yes) MAINT='' ;; + no) MAINT='#' ;; + *) { { echo "$as_me:$LINENO: error: --enable-maintainer-mode must be yes or no" >&5 +echo "$as_me: error: --enable-maintainer-mode must be yes or no" >&2;} + { (exit 1); exit 1; }; } ;; + esac + maintainer_mode=${enableval} +else + MAINT='#' +fi; + +# Start of actual configure tests + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $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. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking target system type" >&5 +echo $ECHO_N "checking target system type... $ECHO_C" >&6 +if test "${ac_cv_target+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_target_alias=$target_alias +test "x$ac_cv_target_alias" = "x" && + ac_cv_target_alias=$ac_cv_host_alias +ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +echo "${ECHO_T}$ac_cv_target" >&6 +target=$ac_cv_target +target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + +# Autoconf M4 include file defining utility macros for complex Canadian +# cross builds. + + + + + + + + + +#### +# _NCN_TOOL_PREFIXES: Some stuff that oughtta be done in AC_CANONICAL_SYSTEM +# or AC_INIT. +# These demand that AC_CANONICAL_SYSTEM be called beforehand. + +#### +# NCN_CHECK_TARGET_TOOL(variable, prog-to-check-for,[value-if-not-found],[path]) +# Like AC_CHECK_TOOL, but tries a prefix of the target, not the host. +# Code is pretty much lifted from autoconf2.53. + + + +#### +# NCN_STRICT_CHECK_TOOL(variable, prog-to-check-for,[value-if-not-found],[path]) +# Like AC_CHECK_TOOL, but requires the prefix if build!=host. + + + +#### +# NCN_STRICT_CHECK_TARGET_TOOL(variable, prog-to-check-for,[value-if-not-found],[path]) +# Like NCN_CHECK_TARGET_TOOL, but requires the prefix if build!=target. + + +### +# AC_PROG_CPP_WERROR +# Used for autoconf 2.5x to force AC_PREPROC_IFELSE to reject code which +# triggers warnings from the preprocessor. Will be in autoconf 2.58. +# For now, using this also overrides header checks to use only the +# preprocessor (matches 2.13 behavior; matching 2.58's behavior is a +# bit harder from here). +# Eventually autoconf will default to checking headers with the compiler +# instead, and we'll have to do this differently. + +# AC_PROG_CPP_WERROR + +# Test for GNAT. +# We require the gnatbind program, and a compiler driver that +# understands Ada. We use the user's CC setting, already found. +# +# Sets the shell variable have_gnat to yes or no as appropriate, and +# substitutes GNATBIND. + + + + + + + + + + + + case ${build_alias} in + "") build_noncanonical=${build} ;; + *) build_noncanonical=${build_alias} ;; +esac + + case ${host_alias} in + "") host_noncanonical=${build_noncanonical} ;; + *) host_noncanonical=${host_alias} ;; +esac + + case ${target_alias} in + "") target_noncanonical=${host_noncanonical} ;; + *) target_noncanonical=${target_alias} ;; +esac + + + + +# Need to pass this down for now :-P +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + + +# Determine x_ada_cflags +case $host in + hppa*) x_ada_cflags=-mdisable-indexing ;; + *) x_ada_cflags= ;; +esac + + +# Determine what to build for 'gnattools' +if test $build = $target ; then + # Note that build=target is almost certainly the wrong test; FIXME + default_gnattools_target="gnattools-native" +else + default_gnattools_target="gnattools-cross" +fi + + +# Target-specific stuff (defaults) +TOOLS_TARGET_PAIRS= + +EXTRA_GNATTOOLS= + + +# Per-target case statement +# ------------------------- +case "${target}" in + alpha*-dec-vx*) # Unlike all other Vxworks + ;; + m68k*-wrs-vx* \ + | powerpc*-wrs-vxworks \ + | sparc*-wrs-vx* \ + | *86-wrs-vxworks \ + | xscale*-wrs-vx* \ + | xscale*-wrs-coff \ + | mips*-wrs-vx*) + TOOLS_TARGET_PAIRS="mlib-tgt.adbconfcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then we branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +cat >confdef2opt.sed <<\_ACEOF +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +t quote +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +t quote +d +: quote +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +s,\[,\\&,g +s,\],\\&,g +s,\$,$$,g +p +_ACEOF +# We use echo to avoid assuming a particular line-breaking character. +# The extra dot is to prevent the shell from consuming trailing +# line-breaks from the sub-command output. A line-break within +# single-quotes doesn't work because, if this script is created in a +# platform that uses two characters for line-breaks (e.g., DOS), tr +# would break. +ac_LF_and_DOT=`echo; echo .` +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +rm -f confdef2opt.sed + + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, 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 + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + + + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s, at SHELL@,$SHELL,;t t +s, at PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s, at PACKAGE_NAME@,$PACKAGE_NAME,;t t +s, at PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s, at PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s, at PACKAGE_STRING@,$PACKAGE_STRING,;t t +s, at PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s, at exec_prefix@,$exec_prefix,;t t +s, at prefix@,$prefix,;t t +s, at program_transform_name@,$program_transform_name,;t t +s, at bindir@,$bindir,;t t +s, at sbindir@,$sbindir,;t t +s, at libexecdir@,$libexecdir,;t t +s, at datadir@,$datadir,;t t +s, at sysconfdir@,$sysconfdir,;t t +s, at sharedstatedir@,$sharedstatedir,;t t +s, at localstatedir@,$localstatedir,;t t +s, at libdir@,$libdir,;t t +s, at includedir@,$includedir,;t t +s, at oldincludedir@,$oldincludedir,;t t +s, at infodir@,$infodir,;t t +s, at mandir@,$mandir,;t t +s, at build_alias@,$build_alias,;t t +s, at host_alias@,$host_alias,;t t +s, at target_alias@,$target_alias,;t t +s, at DEFS@,$DEFS,;t t +s, at ECHO_C@,$ECHO_C,;t t +s, at ECHO_N@,$ECHO_N,;t t +s, at ECHO_T@,$ECHO_T,;t t +s, at LIBS@,$LIBS,;t t +s, at MAINT@,$MAINT,;t t +s, at INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s, at INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s, at INSTALL_DATA@,$INSTALL_DATA,;t t +s, at build@,$build,;t t +s, at build_cpu@,$build_cpu,;t t +s, at build_vendor@,$build_vendor,;t t +s, at build_os@,$build_os,;t t +s, at host@,$host,;t t +s, at host_cpu@,$host_cpu,;t t +s, at host_vendor@,$host_vendor,;t t +s, at host_os@,$host_os,;t t +s, at target@,$target,;t t +s, at target_cpu@,$target_cpu,;t t +s, at target_vendor@,$target_vendor,;t t +s, at target_os@,$target_os,;t t +s, at target_noncanonical@,$target_noncanonical,;t t +s, at LN_S@,$LN_S,;t t +s, at x_ada_cflags@,$x_ada_cflags,;t t +s, at default_gnattools_target@,$default_gnattools_target,;t t +s, at TOOLS_TARGET_PAIRS@,$TOOLS_TARGET_PAIRS,;t t +s, at EXTRA_GNATTOOLS@,$EXTRA_GNATTOOLS,;t t +s, at LIBOBJS@,$LIBOBJS,;t t +s, at LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s, at configure_input@,$configure_input,;t t +s, at srcdir@,$ac_srcdir,;t t +s, at abs_srcdir@,$ac_abs_srcdir,;t t +s, at top_srcdir@,$ac_top_srcdir,;t t +s, at abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s, at builddir@,$ac_builddir,;t t +s, at abs_builddir@,$ac_abs_builddir,;t t +s, at top_builddir@,$ac_top_builddir,;t t +s, at abs_top_builddir@,$ac_abs_top_builddir,;t t +s, at INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + Propchange: llvm-gcc-4.2/trunk/gnattools/configure ------------------------------------------------------------------------------ svn:executable = * Added: llvm-gcc-4.2/trunk/gnattools/configure.ac URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gnattools/configure.ac?rev=43889&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gnattools/configure.ac (added) +++ llvm-gcc-4.2/trunk/gnattools/configure.ac Thu Nov 8 04:10:49 2007 @@ -0,0 +1,163 @@ +# Configure script for libada. +# Copyright 2003, 2004 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +AC_INIT +AC_PREREQ([2.59]) + +AC_CONFIG_SRCDIR([Makefile.in]) + +# Command-line options. +# Very limited version of AC_MAINTAINER_MODE. +AC_ARG_ENABLE([maintainer-mode], + [AC_HELP_STRING([--enable-maintainer-mode], + [enable make rules and dependencies not useful (and + sometimes confusing) to the casual installer])], + [case ${enable_maintainer_mode} in + yes) MAINT='' ;; + no) MAINT='#' ;; + *) AC_MSG_ERROR([--enable-maintainer-mode must be yes or no]) ;; + esac + maintainer_mode=${enableval}], + [MAINT='#']) +AC_SUBST([MAINT])dnl + +# Start of actual configure tests + +AC_PROG_INSTALL + +AC_CANONICAL_BUILD +AC_CANONICAL_HOST +AC_CANONICAL_TARGET + +sinclude(../config/acx.m4) +ACX_NONCANONICAL_TARGET + +# Need to pass this down for now :-P +AC_PROG_LN_S + +# Determine x_ada_cflags +case $host in + hppa*) x_ada_cflags=-mdisable-indexing ;; + *) x_ada_cflags= ;; +esac +AC_SUBST([x_ada_cflags]) + +# Determine what to build for 'gnattools' +if test $build = $target ; then + # Note that build=target is almost certainly the wrong test; FIXME + default_gnattools_target="gnattools-native" +else + default_gnattools_target="gnattools-cross" +fi +AC_SUBST([default_gnattools_target]) + +# Target-specific stuff (defaults) +TOOLS_TARGET_PAIRS= +AC_SUBST(TOOLS_TARGET_PAIRS) +EXTRA_GNATTOOLS= +AC_SUBST(EXTRA_GNATTOOLS) + +# Per-target case statement +# ------------------------- +case "${target}" in + alpha*-dec-vx*) # Unlike all other Vxworks + ;; + m68k*-wrs-vx* \ + | powerpc*-wrs-vxworks \ + | sparc*-wrs-vx* \ + | *86-wrs-vxworks \ + | xscale*-wrs-vx* \ + | xscale*-wrs-coff \ + | mips*-wrs-vx*) + TOOLS_TARGET_PAIRS="mlib-tgt.adb References: <200711080858.lA88wrRM027975@zion.cs.uiuc.edu> <200711081018.44325.baldrick@free.fr> Message-ID: <8076D79C-E718-48CD-A5B4-C65BCCA91C2E@gmail.com> On Nov 8, 2007, at 1:18 AM, Duncan Sands wrote: >> Removing to sync with Apple GCC 4.2 >> >> Removed: >> llvm-gcc-4.2/trunk/gnattools/ > > Argh! The Ada front-end won't build without this - is it > going to come back at some point? Readded. Sorry about this. -bw From asl at math.spbu.ru Thu Nov 8 06:54:40 2007 From: asl at math.spbu.ru (Anton Korobeynikov) Date: Thu, 08 Nov 2007 15:54:40 +0300 Subject: [llvm-commits] [llvm-gcc-4.2] r43887 - in /llvm-gcc-4.2/trunk: boehm-gc/ libffi/ libjava/ libmudflap/ libobjc/ libssp/ zlib/ In-Reply-To: <200711080911.lA89Btnq028616.SS566SS@zion.cs.uiuc.edu> References: <200711080911.lA89Btnq028616.SS566SS@zion.cs.uiuc.edu> Message-ID: <1194526480.10807.44.camel@asl.dorms.spbu.ru> Bill, > llvm-gcc-4.2/trunk/libobjc/ I expect, that nobody will use objc fe on non-darwin, but anyway - why removing libobjc (and not just excluding from build)? -- With best regards, Anton Korobeynikov. Faculty of Mathematics & Mechanics, Saint Petersburg State University. From lauro.venancio at gmail.com Thu Nov 8 11:20:07 2007 From: lauro.venancio at gmail.com (Lauro Ramos Venancio) Date: Thu, 08 Nov 2007 17:20:07 -0000 Subject: [llvm-commits] [llvm] r43892 - in /llvm/trunk: include/llvm/Intrinsics.td include/llvm/IntrinsicsARM.td lib/Target/ARM/ARMISelLowering.cpp test/CodeGen/ARM/thread_pointer.ll Message-ID: <200711081720.lA8HK8rn026546@zion.cs.uiuc.edu> Author: laurov Date: Thu Nov 8 11:20:05 2007 New Revision: 43892 URL: http://llvm.org/viewvc/llvm-project?rev=43892&view=rev Log: [ARM] Implement __builtin_thread_pointer. Added: llvm/trunk/include/llvm/IntrinsicsARM.td llvm/trunk/test/CodeGen/ARM/thread_pointer.ll Modified: llvm/trunk/include/llvm/Intrinsics.td llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp Modified: llvm/trunk/include/llvm/Intrinsics.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Intrinsics.td?rev=43892&r1=43891&r2=43892&view=diff ============================================================================== --- llvm/trunk/include/llvm/Intrinsics.td (original) +++ llvm/trunk/include/llvm/Intrinsics.td Thu Nov 8 11:20:05 2007 @@ -268,3 +268,4 @@ include "llvm/IntrinsicsPowerPC.td" include "llvm/IntrinsicsX86.td" +include "llvm/IntrinsicsARM.td" Added: llvm/trunk/include/llvm/IntrinsicsARM.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IntrinsicsARM.td?rev=43892&view=auto ============================================================================== --- llvm/trunk/include/llvm/IntrinsicsARM.td (added) +++ llvm/trunk/include/llvm/IntrinsicsARM.td Thu Nov 8 11:20:05 2007 @@ -0,0 +1,21 @@ +//===- IntrinsicsARM.td - Defines ARM intrinsics -----------*- tablegen -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by Lauro Ramos Venancio and is distributed under the +// University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file defines all of the ARM-specific intrinsics. +// +//===----------------------------------------------------------------------===// + + +//===----------------------------------------------------------------------===// +// TLS + +let TargetPrefix = "arm" in { // All intrinsics start with "llvm.arm.". + def int_arm_thread_pointer : GCCBuiltin<"__builtin_thread_pointer">, + Intrinsic<[llvm_ptr_ty],[IntrNoMem]>; +} Modified: llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp?rev=43892&r1=43891&r2=43892&view=diff ============================================================================== --- llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp (original) +++ llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp Thu Nov 8 11:20:05 2007 @@ -23,6 +23,7 @@ #include "llvm/CallingConv.h" #include "llvm/Constants.h" #include "llvm/Instruction.h" +#include "llvm/Intrinsics.h" #include "llvm/CodeGen/MachineBasicBlock.h" #include "llvm/CodeGen/MachineFrameInfo.h" #include "llvm/CodeGen/MachineFunction.h" @@ -213,7 +214,10 @@ if (!UseSoftFloat && Subtarget->hasVFP2() && !Subtarget->isThumb()) // Turn f64->i64 into FMRRD iff target supports vfp2. setOperationAction(ISD::BIT_CONVERT, MVT::i64, Custom); - + + // We want to custom lower some of our intrinsics. + setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::Other, Custom); + setOperationAction(ISD::SETCC , MVT::i32, Expand); setOperationAction(ISD::SETCC , MVT::f32, Expand); setOperationAction(ISD::SETCC , MVT::f64, Expand); @@ -882,6 +886,16 @@ return DAG.getNode(ARMISD::PIC_ADD, PtrVT, Result, PICLabel); } +static SDOperand LowerINTRINSIC_WO_CHAIN(SDOperand Op, SelectionDAG &DAG) { + MVT::ValueType PtrVT = DAG.getTargetLoweringInfo().getPointerTy(); + unsigned IntNo = cast(Op.getOperand(0))->getValue(); + switch (IntNo) { + default: return SDOperand(); // Don't custom lower most intrinsics. + case Intrinsic::arm_thread_pointer: + return DAG.getNode(ARMISD::THREAD_POINTER, PtrVT); + } +} + static SDOperand LowerVASTART(SDOperand Op, SelectionDAG &DAG, unsigned VarArgsFrameIndex) { // vastart just stores the address of the VarArgsFrameIndex slot into the @@ -1410,6 +1424,7 @@ case ISD::FRAMEADDR: break; case ISD::GLOBAL_OFFSET_TABLE: return LowerGLOBAL_OFFSET_TABLE(Op, DAG); case ISD::MEMCPY: return LowerMEMCPY(Op, DAG); + case ISD::INTRINSIC_WO_CHAIN: return LowerINTRINSIC_WO_CHAIN(Op, DAG); } return SDOperand(); } Added: llvm/trunk/test/CodeGen/ARM/thread_pointer.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/thread_pointer.ll?rev=43892&view=auto ============================================================================== --- llvm/trunk/test/CodeGen/ARM/thread_pointer.ll (added) +++ llvm/trunk/test/CodeGen/ARM/thread_pointer.ll Thu Nov 8 11:20:05 2007 @@ -0,0 +1,10 @@ +; RUN: llvm-as < %s | llc -march=arm -mtriple=arm-linux-gnueabi | \ +; RUN: grep {__aeabi_read_tp} + +define i8* @test() { +entry: + %tmp1 = call i8* @llvm.arm.thread.pointer( ) ; [#uses=0] + ret i8* %tmp1 +} + +declare i8* @llvm.arm.thread.pointer() From clattner at apple.com Thu Nov 8 11:21:29 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 8 Nov 2007 09:21:29 -0800 Subject: [llvm-commits] [llvm-gcc-4.0] r43842 - /llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp In-Reply-To: References: <200711072059.lA7KxVOF022613@zion.cs.uiuc.edu> <251BF81A-2AA7-4F87-B461-964168B66E03@apple.com> <16e5fdf90711071606x6aa9663av9f6670ad6dded9e0@mail.gmail.com> <200711081015.05716.baldrick@free.fr> Message-ID: On Nov 8, 2007, at 1:42 AM, Bill Wendling wrote: > On Nov 8, 2007, at 1:15 AM, Duncan Sands wrote: > >>>> Also, Bill, after Duncan has tested and commits his patch to 4.2, >>>> can >>>> you please backport it to 4.0? >>>> >>> Duncan mentioned that he was going to attempt this. :-) >> >> I will if no-one else does, but I'd rather not. Pretty please? :) >> > I'm willing to give it a try, if I can. ;-) Thanks Bill! -Chris From clattner at apple.com Thu Nov 8 11:23:00 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 8 Nov 2007 09:23:00 -0800 Subject: [llvm-commits] [llvm] r43892 - in /llvm/trunk: include/llvm/Intrinsics.td include/llvm/IntrinsicsARM.td lib/Target/ARM/ARMISelLowering.cpp test/CodeGen/ARM/thread_pointer.ll In-Reply-To: <200711081720.lA8HK8rn026546@zion.cs.uiuc.edu> References: <200711081720.lA8HK8rn026546@zion.cs.uiuc.edu> Message-ID: On Nov 8, 2007, at 9:20 AM, Lauro Ramos Venancio wrote: > URL: http://llvm.org/viewvc/llvm-project?rev=43892&view=rev > Log: > [ARM] Implement __builtin_thread_pointer. Hey Lauro, Is __builtin_thread_pointer ARM specific? -Chris From lauro.venancio at gmail.com Thu Nov 8 11:25:30 2007 From: lauro.venancio at gmail.com (Lauro Ramos Venancio) Date: Thu, 8 Nov 2007 14:25:30 -0300 Subject: [llvm-commits] [llvm] r43892 - in /llvm/trunk: include/llvm/Intrinsics.td include/llvm/IntrinsicsARM.td lib/Target/ARM/ARMISelLowering.cpp test/CodeGen/ARM/thread_pointer.ll In-Reply-To: References: <200711081720.lA8HK8rn026546@zion.cs.uiuc.edu> Message-ID: <9c10c9f0711080925s5e3bbec8te5596ec65e54faec@mail.gmail.com> 2007/11/8, Chris Lattner : > On Nov 8, 2007, at 9:20 AM, Lauro Ramos Venancio wrote: > > URL: http://llvm.org/viewvc/llvm-project?rev=43892&view=rev > > Log: > > [ARM] Implement __builtin_thread_pointer. > > Hey Lauro, > > Is __builtin_thread_pointer ARM specific? > > -Chris > Yes. It is defined in gcc/config/arm/arm.c. Lauro From alenhar2 at cs.uiuc.edu Thu Nov 8 11:39:28 2007 From: alenhar2 at cs.uiuc.edu (Andrew Lenharth) Date: Thu, 08 Nov 2007 17:39:28 -0000 Subject: [llvm-commits] [llvm] r43893 - in /llvm/trunk: lib/Transforms/Scalar/InstructionCombining.cpp test/Transforms/InstCombine/2007-11-07-OpaqueAlignCrash.ll Message-ID: <200711081739.lA8HdSFh027487@zion.cs.uiuc.edu> Author: alenhar2 Date: Thu Nov 8 11:39:28 2007 New Revision: 43893 URL: http://llvm.org/viewvc/llvm-project?rev=43893&view=rev Log: Fix PR1780 Added: llvm/trunk/test/Transforms/InstCombine/2007-11-07-OpaqueAlignCrash.ll Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp?rev=43893&r1=43892&r2=43893&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Thu Nov 8 11:39:28 2007 @@ -7582,7 +7582,7 @@ unsigned PrefAlign = 0) { if (GlobalVariable *GV = dyn_cast(V)) { unsigned Align = GV->getAlignment(); - if (Align == 0 && TD) + if (Align == 0 && TD && !isa(GV->getType()->getElementType())) Align = TD->getPrefTypeAlignment(GV->getType()->getElementType()); // If there is a large requested alignment and we can, bump up the alignment Added: llvm/trunk/test/Transforms/InstCombine/2007-11-07-OpaqueAlignCrash.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/2007-11-07-OpaqueAlignCrash.ll?rev=43893&view=auto ============================================================================== --- llvm/trunk/test/Transforms/InstCombine/2007-11-07-OpaqueAlignCrash.ll (added) +++ llvm/trunk/test/Transforms/InstCombine/2007-11-07-OpaqueAlignCrash.ll Thu Nov 8 11:39:28 2007 @@ -0,0 +1,19 @@ +; RUN: llvm-as < %s | opt -instcombine -disable-output +; PR1780 + +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:32:32" +target triple = "i686-pc-linux-gnu" + +%opaque_t = type opaque + + at g = external global %opaque_t + +define i32 @foo() { +entry: + %x = load i8* bitcast (%opaque_t* @g to i8*) + %y = load i32* bitcast (%opaque_t* @g to i32*) + %z = zext i8 %x to i32 + %r = add i32 %y, %z + ret i32 %r +} + From clattner at apple.com Thu Nov 8 11:45:09 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 8 Nov 2007 09:45:09 -0800 Subject: [llvm-commits] [llvm] r43892 - in /llvm/trunk: include/llvm/Intrinsics.td include/llvm/IntrinsicsARM.td lib/Target/ARM/ARMISelLowering.cpp test/CodeGen/ARM/thread_pointer.ll In-Reply-To: <9c10c9f0711080925s5e3bbec8te5596ec65e54faec@mail.gmail.com> References: <200711081720.lA8HK8rn026546@zion.cs.uiuc.edu> <9c10c9f0711080925s5e3bbec8te5596ec65e54faec@mail.gmail.com> Message-ID: <3EABD814-96A4-4959-903B-3532D89E99D8@apple.com> On Nov 8, 2007, at 9:25 AM, Lauro Ramos Venancio wrote: > 2007/11/8, Chris Lattner : >> On Nov 8, 2007, at 9:20 AM, Lauro Ramos Venancio wrote: >>> URL: http://llvm.org/viewvc/llvm-project?rev=43892&view=rev >>> Log: >>> [ARM] Implement __builtin_thread_pointer. >> >> Hey Lauro, >> >> Is __builtin_thread_pointer ARM specific? >> >> -Chris >> > > Yes. It is defined in gcc/config/arm/arm.c. Ok, thanks! -Chris From clattner at apple.com Thu Nov 8 11:47:18 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 8 Nov 2007 09:47:18 -0800 Subject: [llvm-commits] [llvm] r43893 - in /llvm/trunk: lib/Transforms/Scalar/InstructionCombining.cpp test/Transforms/InstCombine/2007-11-07-OpaqueAlignCrash.ll In-Reply-To: <200711081739.lA8HdSFh027487@zion.cs.uiuc.edu> References: <200711081739.lA8HdSFh027487@zion.cs.uiuc.edu> Message-ID: <25787BAC-76FB-4AC0-A5A7-D213F908E94D@apple.com> On Nov 8, 2007, at 9:39 AM, Andrew Lenharth wrote: > Author: alenhar2 > Date: Thu Nov 8 11:39:28 2007 > New Revision: 43893 > URL: http://llvm.org/viewvc/llvm-project?rev=43893&view=rev > Log: > Fix PR1780 Nice, thanks Andrew! It would be slightly more robust to check for Ty->isSized() instead of checking for opaquetype specifically. This fixes the theoretical case of things like {opaque, int}. Thanks for tackling this! -Chris > Added: > llvm/trunk/test/Transforms/InstCombine/2007-11-07- > OpaqueAlignCrash.ll > Modified: > llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp > > Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/ > Scalar/InstructionCombining.cpp?rev=43893&r1=43892&r2=43893&view=diff > > ====================================================================== > ======== > --- llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp > (original) > +++ llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Thu > Nov 8 11:39:28 2007 > @@ -7582,7 +7582,7 @@ > unsigned PrefAlign = 0) { > if (GlobalVariable *GV = dyn_cast(V)) { > unsigned Align = GV->getAlignment(); > - if (Align == 0 && TD) > + if (Align == 0 && TD && !isa(GV->getType()- > >getElementType())) > Align = TD->getPrefTypeAlignment(GV->getType()- > >getElementType()); > > // If there is a large requested alignment and we can, bump up > the alignment > > Added: llvm/trunk/test/Transforms/InstCombine/2007-11-07- > OpaqueAlignCrash.ll > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/ > InstCombine/2007-11-07-OpaqueAlignCrash.ll?rev=43893&view=auto > > ====================================================================== > ======== > --- llvm/trunk/test/Transforms/InstCombine/2007-11-07- > OpaqueAlignCrash.ll (added) > +++ llvm/trunk/test/Transforms/InstCombine/2007-11-07- > OpaqueAlignCrash.ll Thu Nov 8 11:39:28 2007 > @@ -0,0 +1,19 @@ > +; RUN: llvm-as < %s | opt -instcombine -disable-output > +; PR1780 > + > +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:32:32" > +target triple = "i686-pc-linux-gnu" > + > +%opaque_t = type opaque > + > + at g = external global %opaque_t > + > +define i32 @foo() { > +entry: > + %x = load i8* bitcast (%opaque_t* @g to i8*) > + %y = load i32* bitcast (%opaque_t* @g to i32*) > + %z = zext i8 %x to i32 > + %r = add i32 %y, %z > + ret i32 %r > +} > + > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From alenhar2 at cs.uiuc.edu Thu Nov 8 12:45:15 2007 From: alenhar2 at cs.uiuc.edu (Andrew Lenharth) Date: Thu, 08 Nov 2007 18:45:15 -0000 Subject: [llvm-commits] [llvm] r43897 - in /llvm/trunk: lib/Transforms/Scalar/InstructionCombining.cpp test/Transforms/InstCombine/2007-11-07-OpaqueAlignCrash.ll Message-ID: <200711081845.lA8IjGgE032105@zion.cs.uiuc.edu> Author: alenhar2 Date: Thu Nov 8 12:45:15 2007 New Revision: 43897 URL: http://llvm.org/viewvc/llvm-project?rev=43897&view=rev Log: Better check Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp llvm/trunk/test/Transforms/InstCombine/2007-11-07-OpaqueAlignCrash.ll Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp?rev=43897&r1=43896&r2=43897&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Thu Nov 8 12:45:15 2007 @@ -7582,7 +7582,7 @@ unsigned PrefAlign = 0) { if (GlobalVariable *GV = dyn_cast(V)) { unsigned Align = GV->getAlignment(); - if (Align == 0 && TD && !isa(GV->getType()->getElementType())) + if (Align == 0 && TD && GV->getType()->getElementType()->isSized()) Align = TD->getPrefTypeAlignment(GV->getType()->getElementType()); // If there is a large requested alignment and we can, bump up the alignment Modified: llvm/trunk/test/Transforms/InstCombine/2007-11-07-OpaqueAlignCrash.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/2007-11-07-OpaqueAlignCrash.ll?rev=43897&r1=43896&r2=43897&view=diff ============================================================================== --- llvm/trunk/test/Transforms/InstCombine/2007-11-07-OpaqueAlignCrash.ll (original) +++ llvm/trunk/test/Transforms/InstCombine/2007-11-07-OpaqueAlignCrash.ll Thu Nov 8 12:45:15 2007 @@ -6,12 +6,15 @@ %opaque_t = type opaque +%op_ts = type {opaque, i32} + @g = external global %opaque_t + at h = external global %op_ts define i32 @foo() { entry: %x = load i8* bitcast (%opaque_t* @g to i8*) - %y = load i32* bitcast (%opaque_t* @g to i32*) + %y = load i32* bitcast (%op_ts* @h to i32*) %z = zext i8 %x to i32 %r = add i32 %y, %z ret i32 %r From isanbard at gmail.com Thu Nov 8 12:54:57 2007 From: isanbard at gmail.com (Bill Wendling) Date: Thu, 8 Nov 2007 10:54:57 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r43887 - in /llvm-gcc-4.2/trunk: boehm-gc/ libffi/ libjava/ libmudflap/ libobjc/ libssp/ zlib/ In-Reply-To: <1194526480.10807.44.camel@asl.dorms.spbu.ru> References: <200711080911.lA89Btnq028616.SS566SS@zion.cs.uiuc.edu> <1194526480.10807.44.camel@asl.dorms.spbu.ru> Message-ID: <16e5fdf90711081054jb3ebf5m616998cee03978bf@mail.gmail.com> Hi Anton, > > llvm-gcc-4.2/trunk/libobjc/ > I expect, that nobody will use objc fe on non-darwin, but anyway - why > removing libobjc (and not just excluding from build)? > Good question. Right now, I'm just trying to sync our tree with what's in Apple GCC 4.2's TOT. My guess is that if we don't remove some directories, we will probably run into situations where the Makefiles will start to build then even though we told them not to. I really don't have a strong opinions. For instance, we could keep it in the repository and then ignore it like we do libstdc++-v3 (which is also removed in their TOT). Comments? -bw From echristo at apple.com Thu Nov 8 13:00:50 2007 From: echristo at apple.com (Eric Christopher) Date: Thu, 8 Nov 2007 11:00:50 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r43887 - in /llvm-gcc-4.2/trunk: boehm-gc/ libffi/ libjava/ libmudflap/ libobjc/ libssp/ zlib/ In-Reply-To: <16e5fdf90711081054jb3ebf5m616998cee03978bf@mail.gmail.com> References: <200711080911.lA89Btnq028616.SS566SS@zion.cs.uiuc.edu> <1194526480.10807.44.camel@asl.dorms.spbu.ru> <16e5fdf90711081054jb3ebf5m616998cee03978bf@mail.gmail.com> Message-ID: <60095573-B4E5-460E-99D5-1A8D4B722360@apple.com> On Nov 8, 2007, at 10:54 AM, Bill Wendling wrote: > Hi Anton, > >>> llvm-gcc-4.2/trunk/libobjc/ >> I expect, that nobody will use objc fe on non-darwin, but anyway - >> why >> removing libobjc (and not just excluding from build)? >> > Good question. Right now, I'm just trying to sync our tree with what's > in Apple GCC 4.2's TOT. My guess is that if we don't remove some > directories, we will probably run into situations where the Makefiles > will start to build then even though we told them not to. > > I really don't have a strong opinions. For instance, we could keep it > in the repository and then ignore it like we do libstdc++-v3 (which is > also removed in their TOT). > > Comments? Honestly I'd think you'd want to keep them for other OS's, the darwin libstdc++ avoidance should be platform specific and linux will want the directories to build. -eric From isanbard at gmail.com Thu Nov 8 13:02:28 2007 From: isanbard at gmail.com (Bill Wendling) Date: Thu, 08 Nov 2007 19:02:28 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43899 - in /llvm-gcc-4.2/trunk/gcc/testsuite: ./ bugs/powerpc/ g++.apple/ g++.dg/ g++.dg/ext/ g++.dg/ext/visibility/ g++.dg/tc1/ g++.old-deja/g++.mike/ gcc.apple/ gcc.dg/ gcc.dg/tree-ssa/ gcc.target/i386/ lib/ obj-c++.dg/ objc.dg/ objc/execute/ Message-ID: <200711081902.lA8J2VXO001629@zion.cs.uiuc.edu> Author: void Date: Thu Nov 8 13:02:27 2007 New Revision: 43899 URL: http://llvm.org/viewvc/llvm-project?rev=43899&view=rev Log: Updating to Apple GCC 4.2's TOT. Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/5533365.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/altivec-5494442.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-64.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-65.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/permissive-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/align2.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/align3.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/align4.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.old-deja/g++.mike/lookup-1.C llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/4874471.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/5490617.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-5280301.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-5447227.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-64.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-65.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-66.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-14a.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/ivcanon-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/ppc-5450903.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/private.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/x86-5543378.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/attr-unused-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtin-alloca-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtin-alloca-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/flt-rounds.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pragma-darwin-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/unwind-1.c llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/cxx-typeconv-func-1.mm llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/enhanced-proto-4.mm llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/newproperty-bitfield-1.mm llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/newproperty-warn-direct-ivar-access.mm llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/objc-neg-selector.mm llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/protocol-atttribute-1.mm llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-cfstring-8.m llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/enhanced-proto-4.m llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-attr-encode-1.m llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-bitfield-1.m llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-neg-1.m llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-warn-direct-ivar-access.m llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-gc-10.m llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-15.m llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/protocol-atttribute-1.m llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/pubtypes-id-test.m llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/super-finalize-3.m llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/unavailable.m llvm-gcc-4.2/trunk/gcc/testsuite/objc/execute/trivial.m Removed: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ivcanon-1.c Modified: llvm-gcc-4.2/trunk/gcc/testsuite/ChangeLog llvm-gcc-4.2/trunk/gcc/testsuite/ChangeLog.apple llvm-gcc-4.2/trunk/gcc/testsuite/bugs/powerpc/g++.xfail llvm-gcc-4.2/trunk/gcc/testsuite/bugs/powerpc/obj-c++.xfail llvm-gcc-4.2/trunk/gcc/testsuite/bugs/powerpc/objc.xfail llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/4474655.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-array-ref.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-10.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-2.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-54.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-59.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-10.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-11.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-12.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-13.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-14.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-15.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-3.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-4.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-5.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/format-security-attribute-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/format-security-attribute-2.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/pubtypes.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/time-sort.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/time-sort.h llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/align-test-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/alignof2.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/visibility/class1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tc1/dr101.C llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/4283414.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-array-ref.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-54.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-59.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-11.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-12.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-13.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-14.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-15.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-16.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030714-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.target/i386/local2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.target/i386/sse-99.c llvm-gcc-4.2/trunk/gcc/testsuite/lib/scantree.exp llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/newproperty-nowarn-unused-param.mm llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/objc2-protocol-3.mm llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/class-attribute-1.m llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-1.m llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-2.m llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-protocol-3.m Modified: llvm-gcc-4.2/trunk/gcc/testsuite/ChangeLog URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/ChangeLog?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/ChangeLog (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/ChangeLog Thu Nov 8 13:02:27 2007 @@ -1,3 +1,25 @@ +2007-10-07 Geoffrey Keating + + * gcc.dg/pragma-darwin-2.c: New. + +2007-09-14 Geoffrey Keating + + * gcc.dg/unwind-1.c: New. + +2007-08-03 Geoffrey Keating + + Radar 3274130, 5295549 + * g++.dg/ext/align2.C: New. + * g++.dg/ext/align3.C: New. + * g++.dg/ext/align4.C: New. + + * gcc.dg/align-6.c: New. + * gcc.dg/align-5.c: New. + * gcc.dg/align-4.c: New. + * gcc.dg/attr-unused-1.c: New. + + * gcc.dg/align-3.c: New. + 2007-06-14 Geoff Keating * g++.dg/ext/visibility/overload-1.C: New. Modified: llvm-gcc-4.2/trunk/gcc/testsuite/ChangeLog.apple URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/ChangeLog.apple?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/ChangeLog.apple (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/ChangeLog.apple Thu Nov 8 13:02:27 2007 @@ -1,3 +1,186 @@ +2007-10-30 Hui-May Chang + + Radar 5543378 + * gcc.apple/x86-5543378.c: New. + +2007-10-25 Josh Conner + + Radar 3399553 + * gcc.dg/flt-rounds.c: New. + +2007-10-19 Hui-May Chang + + Radar 5450903 + * gcc.apple/ppc-5450903.c: New. + +2007-10-15 Hui-May Chang + + Radar 5494442 + * g++.apple/altivec-5494442.C: Renamed from apple-altivec-5494442.C. + +2007-10-15 Caroline Tice + + Radar 5359827 + * testsuite/objc.dg/pubtypes-id-test.m: New test case. + * testsuite/g++.apple/pubtypes.c: Change test case to accept any size + for the pubtypes section, to eliminate having to change this every + time the pubtypes section changes. + +2007-10-12 Hui-May Chang + + Radar 5494442 + * g++.apple/apple-altivec-5494442.C: Replaced -O3 by -O2. + +2007-10-12 Hui-May Chang + + Radar 5494442 + * g++.apple/apple-altivec-5494442.C: New. + +2007-10-12 Hui-May Chang + + Radar 5533365 + * g++.apple/5533365.C: New. + +2007-10-08 Eric Christopher + + Radar 5516808 + * gcc.apple/altivec-6.c: New. + +2007-10-05 Eric Christopher + + Radar 5490617 + * gcc.apple/5490617.c: New. + +2007-09-26 Hui-May Chang + + Radar 5280301 + * gcc.apple/altivec-5280301.c: New. + +2007-09-21 Hui-May Chang + + Radar 5447227 + * gcc.apple/altivec-5447227.c: New. + +2007-09-05 Hui-May Chang + + Radar 5457234 + * g++.dg/ext/alignof2.C: Modified the test to skip for + ppc darwin targets. + +2007-09-04 Hui-May Chang + + Radar 5155743 + * gcc.dg/builtin-alloca-1.c: New. + * gcc.dg/builtin-alloca-2.c: New. + +2007-08-22 Fariborz Jahanian + + Radar 4947311 + * objc.dg/protocol-atttribute-1.m: Add + * obj-c++.dg/protocol-atttribute-1.mm: Add + +2007-08-21 Hui-May Chang + + Radar 4874197 + * gcc.apple/4283414.c: Added mainline candidate comment. + +2007-08-21 Fariborz Jahanian + + Radar 5424473 + * objc.dg/super-finalize-3.m: Add + +2007-08-20 Fariborz Jahanian + + Radar 5422751 + * objc.dg/objc2-protocol-3.m: Removed. + * obj-c++.dg/objc2-protocol-3.mm: Removed. + +2007-08-16 Fariborz Jahanian + + Radar 3533972 + * obj-c++.dg/cxx-typeconv-func-1.mm: New + +2007-08-14 Hui-May Chang + + Radar 4870336, 4874471, 4874208 + * gcc.apple/4874471.c: New. + +2007-08-14 Fariborz Jahanian + + Radar 5409313 + * obj-c++.dg/objc-neg-selector.mm: New + +2007-08-14 Fariborz Jahanian + + Radar 5407792 + * objc.dg/newproperty-attr-encode-1.m: New + +2007-08-10 Fariborz Jahanian + + Radar 5376125 + * objc.dg/newproperty-warn-direct-ivar-access.m: New + * obj-c++.dg/newproperty-warn-direct-ivar-access.mm: New + +2007-08-10 Stuart Hastings + + Radar 5238795 4448096 + * g++.apple/4474655.C: Remove. + +2007-08-10 Fariborz Jahanian + + Radar 5398274 + * obj-c++.dg/newproperty-nowarn-unused-param.mm: Expanded + +2007-08-09 Hui-May Chang + + Radar 4875125 + * gcc.target/i386/sse-99.c. Added -mtune=generic option. + +2007-08-09 Fariborz Jahanian + + Radar 3742561 (test change) + * obj-c++/objc-gc-aggr-assign-1.mm: Test changed for ppc32. + +2007-08-08 Fariborz Jahanian + + Radar 5389292 + * objc.dg/newproperty-bitfield-1.m: Add + * obj-c++.dg/newproperty-bitfield-1.mm: Add + +2007-08-08 Hui-May Chang + + Radar 4875094 + * gcc.target/i386/local2.c : Added APPLE LOCAL marker. + +2007-08-07 Fariborz Jahanian + + Radar 5390587 + * objc.dg/newproperty-neg-1.m: Add + +2007-08-06 Fariborz Jahanian + + Radar 4653422 + * objc.dg/enhanced-proto-4.m: Add + * obj-c++.dg/enhanced-proto-4.mm: Add + +2007-08-03 Hui-May Chang + + Radar 4875094 + * gcc.target/i386/local2.c : Modified the test to skip for + darwin targets. + +2007-07-31 Stuart Hastings + + Radar 4874513 + * gcc/testsuite/gcc.dg/tree-ssa/ivcanon-1.c: Moved to + gcc/testsuite/gcc.apple; revised testcase to work around + improved jump-threader. + +2007-07-31 Fariborz Jahanian + + Radar 3742561 (test change) + * objc.dg/objc-gc-aggr-assign-1.m: Test changed for ppc32. + 2007-07-31 Fariborz Jahanian Radar 5259868 Modified: llvm-gcc-4.2/trunk/gcc/testsuite/bugs/powerpc/g++.xfail URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/bugs/powerpc/g%2B%2B.xfail?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/bugs/powerpc/g++.xfail (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/bugs/powerpc/g++.xfail Thu Nov 8 13:02:27 2007 @@ -38,12 +38,8 @@ 5103220: tmpdir-g++.dg-struct-layout-1/t011 cp_compat_x_tst.o-cp_compat_y_tst.o execute 5103220: tmpdir-g++.dg-struct-layout-1/t015 cp_compat_x_tst.o-cp_compat_y_tst.o execute 5103220: tmpdir-g++.dg-struct-layout-1/t020 cp_compat_x_tst.o-cp_compat_y_tst.o execute -5103220: tmpdir-g++.dg-struct-layout-1/t024 cp_compat_x_tst.o compile, (internal compiler error) -5103220: tmpdir-g++.dg-struct-layout-1/t026 cp_compat_x_tst.o compile, (internal compiler error) -5103220: tmpdir-g++.dg-struct-layout-1/t027 cp_compat_x_tst.o compile, (internal compiler error) -5103220: tmpdir-g++.dg-struct-layout-1/t028 cp_compat_x_tst.o compile, (internal compiler error) -5103220: tmpdir-g++.dg-struct-layout-1/t029 cp_compat_x_tst.o compile, (internal compiler error) -5103220: tmpdir-g++.dg-struct-layout-1/t030 cp_compat_x_tst.o compile, (internal compiler error) +5103220: tmpdir-g++.dg-struct-layout-1/t026 cp_compat_x_tst.o-cp_compat_y_tst.o execute +5103220: tmpdir-g++.dg-struct-layout-1/t027 cp_compat_x_tst.o-cp_compat_y_tst.o execute # # The following tests fail only when the c++ suite is run on x86 5087173: g++.old-deja/g++.other/crash41.C (test for errors, line 10) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/bugs/powerpc/obj-c++.xfail URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/bugs/powerpc/obj-c%2B%2B.xfail?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/bugs/powerpc/obj-c++.xfail (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/bugs/powerpc/obj-c++.xfail Thu Nov 8 13:02:27 2007 @@ -10,7 +10,7 @@ ### file and make sure the Radar is closed. ### ###------------------------------------------------------------------ -5004398: obj-c++.dg/objc2-const-str-64bit-1.mm scan-assembler LC1:\n\t.quad\t_OBJC_CLASS_\\$_NSConstantString +5405050: obj-c++.dg/gnu-runtime-3.mm (test for excess errors) # # the following fail with -m64 only 5272224: obj-c++.dg/const-str-3.mm execution test Modified: llvm-gcc-4.2/trunk/gcc/testsuite/bugs/powerpc/objc.xfail URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/bugs/powerpc/objc.xfail?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/bugs/powerpc/objc.xfail (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/bugs/powerpc/objc.xfail Thu Nov 8 13:02:27 2007 @@ -11,10 +11,10 @@ ### ###------------------------------------------------------------------ # -4239991: objc.dg/encode-7.m (test for excess errors) -4239991: objc.dg/encode-8.m (test for excess errors) -4239991: objc.dg/gnu-runtime-3.m (test for excess errors) -4239991: objc.dg/type-stream-1.m (test for excess errors) +5405050: objc.dg/encode-7.m (test for excess errors) +5405050: objc.dg/encode-8.m (test for excess errors) +5405050: objc.dg/gnu-runtime-3.m (test for excess errors) +5405050: objc.dg/type-stream-1.m (test for excess errors) 4943900: objc/execute/string1.m compilation, -O0 -fnext-runtime 4943900: objc/execute/string1.m compilation, -O1 -fnext-runtime 4943900: objc/execute/string1.m compilation, -O2 -fnext-runtime @@ -167,14 +167,15 @@ 5299997: objc/execute/string4.m compilation, -fast -fgnu-runtime # # the following fail with -m64 only -5245963: objc/execute/protocol-isEqual-3.m execution, -O0 -fnext-runtime -5245963: objc/execute/protocol-isEqual-3.m execution, -O1 -fnext-runtime -5245963: objc/execute/protocol-isEqual-3.m execution, -O2 -fnext-runtime -5245963: objc/execute/protocol-isEqual-3.m execution, -O3 -fomit-frame-pointer -fnext-runtime -5245963: objc/execute/protocol-isEqual-3.m execution, -O3 -g -fnext-runtime -5245963: objc/execute/protocol-isEqual-3.m execution, -Os -fnext-runtime -5245963: objc/execute/protocol-isEqual-3.m execution, -fast -fnext-runtime -5272224: objc.dg/const-str-3.m execution test +5297256: objc/execute/exceptions/foward-1.m execution, -O0 -fnext-runtime +5297256: objc/execute/exceptions/foward-1.m execution, -O1 -fnext-runtime +5297256: objc/execute/exceptions/foward-1.m execution, -O2 -fnext-runtime +5297256: objc/execute/exceptions/foward-1.m execution, -O3 -fomit-frame-pointer -fnext-runtime +5297256: objc/execute/exceptions/foward-1.m execution, -O3 -fomit-frame-pointer -funroll-loops -fnext-runtime +5297256: objc/execute/exceptions/foward-1.m execution, -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions -fnext-runtime +5297256: objc/execute/exceptions/foward-1.m execution, -O3 -g -fnext-runtime +5297256: objc/execute/exceptions/foward-1.m execution, -Os -fnext-runtime +5297256: objc/execute/exceptions/foward-1.m execution, -fast -fnext-runtime # # the following fail for ppc only 5303263: objc.dg/encode-8.m execution test @@ -194,7 +195,6 @@ 5303263: objc.dg-struct-layout-encoding-1/t024_main.m execution test # # the following fail for ppc 32-bit only -5297200: objc.dg/objc-gc-3.m execution test # # the following fail for ppc 64-bit only 5303263: objc/execute/bf-14.m execution, -O0 -fgnu-runtime @@ -250,18 +250,5 @@ # the following fail for x86 # # the following failures are for x86 -m64 only -5297256: objc/execute/exceptions/foward-1.m execution, -O0 -fnext-runtime -5297256: objc/execute/exceptions/foward-1.m execution, -O1 -fnext-runtime -5297256: objc/execute/exceptions/foward-1.m execution, -O2 -fnext-runtime -5297256: objc/execute/exceptions/foward-1.m execution, -O3 -fomit-frame-pointer -fnext-runtime -5297256: objc/execute/exceptions/foward-1.m execution, -O3 -fomit-frame-pointer -funroll-loops -fnext-runtime -5297256: objc/execute/exceptions/foward-1.m execution, -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions -fnext-runtime -5297256: objc/execute/exceptions/foward-1.m execution, -O3 -g -fnext-runtime -5297256: objc/execute/exceptions/foward-1.m execution, -Os -fnext-runtime -5297256: objc/execute/exceptions/foward-1.m execution, -fast -fnext-runtime -5297325: objc.dg/stubify-1.m scan-assembler-not (bl|call)[ \t]+_objc_msgSend\n -5297325: objc.dg/stubify-1.m scan-assembler (bl|call)[ \t]+L_objc_msgSend\\$stub\n -5297325: objc.dg/stubify-1.m scan-assembler-not (bl|call)[ \t]+_bogonic\n -5297325: objc.dg/stubify-1.m scan-assembler (bl|call)[ \t]+L_bogonic\\$stub\n # # the following failures are for -mmacosx-version-min=10.5 only Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/4474655.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/4474655.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/4474655.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/4474655.C Thu Nov 8 13:02:27 2007 @@ -1,17 +0,0 @@ -/* APPLE LOCAL file 4474655 4448096 */ -/* { dg-do compile { target i?86-apple-darwin* } } */ -/* { dg-options "-O2 -fapple-kext -mfpmath=sse -msse2" } */ -#include -double d = 42.0; -unsigned int i; -main () -{ - i = d; - return 0; -} -/* The SSE-only double -> uint32 conversion uses several vector - instructions (including "maxsd"). For a brief period, -fapple-kext - disabled SSE vector instructions; this test insures that these - instructions are permitted and generated. See also - gcc.apple/4448096-1.c. */ -/* { dg-final { scan-assembler "(maxsd|cvttsd2si)" } } */ Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/5533365.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/5533365.C?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/5533365.C (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/5533365.C Thu Nov 8 13:02:27 2007 @@ -0,0 +1,51 @@ +/* APPLE LOCAL file 5533365 */ +/* { dg-do compile { target i?86*-*-darwin* } } */ +/* { dg-options "-O2" } */ +typedef long long __m64 __attribute__ ((__vector_size__ (8))); +typedef float __m128 __attribute__ ((__vector_size__ (16))); +typedef double __v2df __attribute__ ((__vector_size__ (16))); +typedef long long __v2di __attribute__ ((__vector_size__ (16))); +typedef __v2di __m128i; +typedef __v2df __m128d; + +static inline __m128d __attribute__ ((__always_inline__, __nodebug__)) +_mm_min_pd (__m128d __A, __m128d __B) +{ + return (__m128d)__builtin_ia32_minpd ((__v2df)__A, (__v2df)__B); +} + +static inline __m128d __attribute__ ((__always_inline__, __nodebug__)) +_mm_move_sd (__m128d __A, __m128d __B) +{ + return (__m128d) __builtin_ia32_movsd ((__v2df)__A, (__v2df)__B); +} + +static inline __m128i __attribute__ ((__always_inline__, __nodebug__)) +_mm_cvtpd_epi32 (__m128d __A) +{ + return (__m128i)__builtin_ia32_cvtpd2dq ((__v2df) __A); +} + +union __attribute__((aligned(16))) XMM128 +{ + __m128d d; + __m128i i; +}; + +__inline__ __m128i foo (const __m128d &srcLo, const __m128i &src) +{ + const static __m128d max_val = {(double)0x7FFFFFFF, (double)0x7FFFFFFF}; + __m128d lo = _mm_min_pd(srcLo, max_val); + XMM128 Lo,s1; + Lo.i= _mm_cvtpd_epi32(lo); + s1.i = src; + Lo.d = _mm_move_sd(s1.d,Lo.d); + return Lo.i; +} + +int main() +{ + XMM128 tmp, tmp1, tmp2; + tmp.i = foo (tmp1.d, tmp2.i); + return 0; +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/altivec-5494442.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/altivec-5494442.C?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/altivec-5494442.C (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/altivec-5494442.C Thu Nov 8 13:02:27 2007 @@ -0,0 +1,259 @@ +/* APPLE LOCAL file altivec-5494442.C */ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-options "-m64 -faltivec -O2" } */ +class T +{ +public: + T(); + __attribute__((altivec(vector__))) unsigned char proc1 (__attribute__((altivec(vector__))) unsigned char y); + __attribute__((altivec(vector__))) unsigned char proc2 (__attribute__((altivec(vector__))) unsigned char uv); +}; + +class M +{ + void foo(unsigned ,unsigned); +public: + M(); +}; + +static void bar (unsigned char *savg, unsigned char *tavg, + unsigned char *ds, unsigned char *dt, + unsigned char *cur, unsigned char *cur_uv, unsigned char *out, + unsigned char *motin, unsigned char *m3, int even, + unsigned hz, unsigned h1, int l1, int f1, unsigned si1, unsigned si2, unsigned t16, T *p) +{ + int i; + __attribute__((altivec(vector__))) unsigned char sv00, sv10, tv00, tv10, dtv00, dtv10, dsv00, dsv10; + __attribute__((altivec(vector__))) unsigned char sv01, sv11, tv01, tv11, dtv01, dtv11, dsv01, dsv11; + __attribute__((altivec(vector__))) unsigned char sv00e, tv00e, sv10e, tv10e, sv01e, tv01e, sv11e, tv11e; + __attribute__((altivec(vector__))) unsigned char dsumev00, dsumev01, dsumev10, dsumev11; + __attribute__((altivec(vector__))) unsigned char dsumov00, dsumov01, dsumov10, dsumov11; + unsigned t16_uv = t16 >> 1; + if (even) + cur+=32; + for(i = 0; i < 8; i++) { + dsv00 = *(__attribute__((altivec(vector__))) unsigned char *)ds; + dsv10 = *(__attribute__((altivec(vector__))) unsigned char *)(ds+16); + dsv01 = *(__attribute__((altivec(vector__))) unsigned char *)(ds+32); + dsv11 = *(__attribute__((altivec(vector__))) unsigned char *)(ds+48); + dtv00 = *(__attribute__((altivec(vector__))) unsigned char *)dt; + dtv10 = *(__attribute__((altivec(vector__))) unsigned char *)(dt+16); + dtv01 = *(__attribute__((altivec(vector__))) unsigned char *)(dt+32); + dtv11 = *(__attribute__((altivec(vector__))) unsigned char *)(dt+48); + sv00 = *(__attribute__((altivec(vector__))) unsigned char *)savg; + tv00 = *(__attribute__((altivec(vector__))) unsigned char *)tavg; + tv10 = *(__attribute__((altivec(vector__))) unsigned char *)(tavg+16); + sv01 = *(__attribute__((altivec(vector__))) unsigned char *)(savg+32); + sv11 = *(__attribute__((altivec(vector__))) unsigned char *)(savg+48); + tv01 = *(__attribute__((altivec(vector__))) unsigned char *)(tavg+32); + tv11 = *(__attribute__((altivec(vector__))) unsigned char *)(tavg+48); + __attribute__((altivec(vector__))) unsigned char dmtv00 = + *(__attribute__((altivec(vector__))) unsigned char *)motin; + __attribute__((altivec(vector__))) unsigned char dmtv10 = + *(__attribute__((altivec(vector__))) unsigned char *)(motin+16); + __attribute__((altivec(vector__))) unsigned char dmmv00 = + *(__attribute__((altivec(vector__))) unsigned char *)(motin+si1); + __attribute__((altivec(vector__))) unsigned char dmmv10 = + *(__attribute__((altivec(vector__))) unsigned char *)(motin+si1+16); + __attribute__((altivec(vector__))) unsigned char dmtv01 = + *(__attribute__((altivec(vector__))) unsigned char *)(motin+2*si1); + __attribute__((altivec(vector__))) unsigned char dmtv11 = + *(__attribute__((altivec(vector__))) unsigned char *)(motin+2*si1+16); + __attribute__((altivec(vector__))) unsigned char dmmv01 = + *(__attribute__((altivec(vector__))) unsigned char *)(motin+3*si1); + __attribute__((altivec(vector__))) unsigned char dmmv11 = + *(__attribute__((altivec(vector__))) unsigned char *)(motin+3*si1+16); + __attribute__((altivec(vector__))) unsigned char dmbv01 = + *(__attribute__((altivec(vector__))) unsigned char *)(motin+4*si1); + __attribute__((altivec(vector__))) unsigned char dmbv11 = + *(__attribute__((altivec(vector__))) unsigned char *)(motin+4*si1+16); + *(__attribute__((altivec(vector__))) unsigned char *)m3 = dtv00; + *(__attribute__((altivec(vector__))) unsigned char *)(m3+16) = dtv10; + *(__attribute__((altivec(vector__))) unsigned char *)(m3+si1*2) = dtv01; + *(__attribute__((altivec(vector__))) unsigned char *)(m3+si1*2+16) = dtv11; + dtv10 = vec_max (dtv10, dmmv10); + dtv01 = vec_max (dtv01, dmmv01); + dtv11 = vec_max (dtv11, dmmv11); + dtv00 = vec_max (dtv00, vec_max(dmtv00, dmtv01)); + dtv10 = vec_max (dtv10, vec_max(dmtv10, dmtv11)); + dtv01 = vec_max (dtv01, vec_max(dmtv01, dmbv01)); + dtv11 = vec_max (dtv11, vec_max(dmtv11, dmbv11)); + sv10e = (__attribute__((altivec(vector__))) unsigned char)vec_mule (sv10,dtv10); + sv10 = (__attribute__((altivec(vector__))) unsigned char)vec_mulo (sv10,dtv10); + tv10e = (__attribute__((altivec(vector__))) unsigned char)vec_mule (tv10,dsv10); + tv10 = (__attribute__((altivec(vector__))) unsigned char)vec_mulo (tv10,dsv10); + sv01e = (__attribute__((altivec(vector__))) unsigned char)vec_mule (sv01,dtv01); + sv01 = (__attribute__((altivec(vector__))) unsigned char)vec_mulo (sv01,dtv01); + tv01e = (__attribute__((altivec(vector__))) unsigned char)vec_mule (tv01,dsv01); + tv01 = (__attribute__((altivec(vector__))) unsigned char)vec_mulo (tv01,dsv01); + sv11e = (__attribute__((altivec(vector__))) unsigned char)vec_mule (sv11,dtv11); + sv11 = (__attribute__((altivec(vector__))) unsigned char)vec_mulo (sv11,dtv11); + tv11e = (__attribute__((altivec(vector__))) unsigned char)vec_mule (tv11,dsv11); + tv11 = (__attribute__((altivec(vector__))) unsigned char)vec_mulo (tv11,dsv11); + sv10 = (__attribute__((altivec(vector__))) unsigned char)vec_adds ( + (__attribute__((altivec(vector__))) unsigned short)sv10, + (__attribute__((altivec(vector__))) unsigned short)tv10); + sv01e = (__attribute__((altivec(vector__))) unsigned char)vec_adds ( + (__attribute__((altivec(vector__))) unsigned short)sv01e, + (__attribute__((altivec(vector__))) unsigned short)tv01e); + sv01 = (__attribute__((altivec(vector__))) unsigned char)vec_adds ( + (__attribute__((altivec(vector__))) unsigned short)sv01, + (__attribute__((altivec(vector__))) unsigned short)tv01); + sv11e = (__attribute__((altivec(vector__))) unsigned char)vec_adds ( + (__attribute__((altivec(vector__))) unsigned short)sv11e, + (__attribute__((altivec(vector__))) unsigned short)tv11e); + sv11 = (__attribute__((altivec(vector__))) unsigned char)vec_adds ( + (__attribute__((altivec(vector__))) unsigned short)sv11, + (__attribute__((altivec(vector__))) unsigned short)tv11); + tv00e = (__attribute__((altivec(vector__))) unsigned char)vec_mule ( + (__attribute__((altivec(vector__))) unsigned short)sv00e, + (__attribute__((altivec(vector__))) unsigned short)dsumev00); + tv00 = (__attribute__((altivec(vector__))) unsigned char)vec_mulo ( + (__attribute__((altivec(vector__))) unsigned short)sv00e, + (__attribute__((altivec(vector__))) unsigned short)dsumev00); + sv11e = (__attribute__((altivec(vector__))) unsigned char)vec_mule ( + (__attribute__((altivec(vector__))) unsigned short)sv11, + (__attribute__((altivec(vector__))) unsigned short)dsumov11); + sv00e = *(__attribute__((altivec(vector__))) unsigned char *)(cur_uv); + tv00e = *(__attribute__((altivec(vector__))) unsigned char *)(cur_uv+t16_uv+((f1 && i == 0) << 5)); + tv11e = *(__attribute__((altivec(vector__))) unsigned char *)(cur_uv+32+t16_uv); + tv00 = *(__attribute__((altivec(vector__))) unsigned char *)cur; + tv10 = *(__attribute__((altivec(vector__))) unsigned char *)(cur+t16); + tv01 = *(__attribute__((altivec(vector__))) unsigned char *)(cur+32); + tv11 = *(__attribute__((altivec(vector__))) unsigned char *)(cur+32+t16); + if (even) { + dsv00 = (__attribute__((altivec(vector__))) unsigned char)vec_mule ( + tv00e, (__attribute__((altivec(vector__))) unsigned char)(3)); + dtv00 = (__attribute__((altivec(vector__))) unsigned char)vec_mulo ( + tv00e, (__attribute__((altivec(vector__))) unsigned char )(3)); + dsv01 = (__attribute__((altivec(vector__))) unsigned char)vec_add ( + (__attribute__((altivec(vector__))) unsigned short)dsv01, + (__attribute__((altivec(vector__))) unsigned short)dsv10); + dtv01 = (__attribute__((altivec(vector__))) unsigned char)vec_add ( + (__attribute__((altivec(vector__))) unsigned short)dtv01, + (__attribute__((altivec(vector__))) unsigned short)dtv10); + dsv00 = (__attribute__((altivec(vector__))) unsigned char)vec_add ( + (__attribute__((altivec(vector__))) unsigned short)dsv00, + (__attribute__((altivec(vector__))) unsigned short)dsv11); + dtv00 = (__attribute__((altivec(vector__))) unsigned char)vec_add ( + (__attribute__((altivec(vector__))) unsigned short)dtv00, + (__attribute__((altivec(vector__))) unsigned short)dtv11); + dsv01 = (__attribute__((altivec(vector__))) unsigned char)vec_sr ( + (__attribute__((altivec(vector__))) unsigned short)dsv01, + (__attribute__((altivec(vector__))) unsigned short)(3)); + dtv01 = (__attribute__((altivec(vector__))) unsigned char)vec_sr ( + (__attribute__((altivec(vector__))) unsigned short)dtv01, + (__attribute__((altivec(vector__))) unsigned short)(3)); + dsv00 = (__attribute__((altivec(vector__))) unsigned char)vec_sr ( + (__attribute__((altivec(vector__))) unsigned short)dsv00, + (__attribute__((altivec(vector__))) unsigned short)(3)); + dtv00 = (__attribute__((altivec(vector__))) unsigned char)vec_sr ( + (__attribute__((altivec(vector__))) unsigned short)dtv00, + (__attribute__((altivec(vector__))) unsigned short)(3)); + sv01e = vec_perm (dsv01, dtv01, dsv01); + tv01e = vec_perm (dsv00, dtv00, dsv00); + sv00e = vec_avg (sv00e, sv01e); + tv00e = vec_avg (tv00e, tv01e); + sv10e = vec_avg (sv01e, sv11e); + tv10e = vec_avg (tv01e, tv11e); + sv10 = p->proc1 (sv10); + tv00 = p->proc1 (tv00); + tv10 = p->proc1 (tv10); + sv11 = p->proc1 (sv11); + tv01 = p->proc1 (tv01); + tv11 = p->proc1 (tv11); + sv00e = p->proc2 (sv00e); + tv00e = p->proc2 (tv00e); + sv01e = p->proc2 (sv01e); + tv01e = p->proc2 (tv01e); + sv10e = p->proc2 (sv10e); + tv10e = p->proc2 (tv10e); + sv11e = p->proc2 (sv11e); + tv11e = p->proc2 (tv11e); + } + else { + if (hz == h1) { + *(__attribute__((altivec(vector__))) unsigned char *)(out+si2+16 ) = + vec_mergel (sv10e, sv00); + *(__attribute__((altivec(vector__))) unsigned char *)(out+2*si2 ) = + vec_mergeh (sv01e, tv01); + *(__attribute__((altivec(vector__))) unsigned char *)(out+2*si2+16) = + vec_mergel (sv01e, tv01); + *(__attribute__((altivec(vector__))) unsigned char *)(out+3*si2 ) = + vec_mergeh (sv11e, sv01); + *(__attribute__((altivec(vector__))) unsigned char *)(out+3*si2+16) = + vec_mergel (sv11e, sv01); + } + else + { + tv11e = p->proc2(tv11e); + *(__attribute__((altivec(vector__))) unsigned char *)out = + vec_mergeh (sv00e, tv00); + *(__attribute__((altivec(vector__))) unsigned char *)(out+16) = + vec_mergel (sv00e, tv00); + *(__attribute__((altivec(vector__))) unsigned char *)(out+32) = + vec_mergeh (tv00e, tv10); + *(__attribute__((altivec(vector__))) unsigned char *)(out+48) = + vec_mergel (tv00e, tv10); + *(__attribute__((altivec(vector__))) unsigned char *)(out+si2) = + vec_mergeh (sv10e, sv00); + *(__attribute__((altivec(vector__))) unsigned char *)(out+si2+16) = + vec_mergel (sv10e, sv00); + *(__attribute__((altivec(vector__))) unsigned char *)(out+si2+32) = + vec_mergeh (tv10e, sv10); + *(__attribute__((altivec(vector__))) unsigned char *)(out+si2+48) = + vec_mergel (tv10e, sv10); + *(__attribute__((altivec(vector__))) unsigned char *)(out+2*si2) = + vec_mergeh (sv01e, tv01); + *(__attribute__((altivec(vector__))) unsigned char *)(out+2*si2+16) = + vec_mergel (sv01e, tv01); + *(__attribute__((altivec(vector__))) unsigned char *)(out+2*si2+32) = + vec_mergeh (tv01e, tv11); + *(__attribute__((altivec(vector__))) unsigned char *)(out+2*si2+48) = + vec_mergel (tv01e, tv11); + *(__attribute__((altivec(vector__))) unsigned char *)(out+3*si2) = + vec_mergeh (sv11e, sv01); + *(__attribute__((altivec(vector__))) unsigned char *)(out+3*si2+16) = + vec_mergel (sv11e, sv01); + *(__attribute__((altivec(vector__))) unsigned char *)(out+3*si2+32) = + vec_mergeh (tv11e, sv11); + *(__attribute__((altivec(vector__))) unsigned char *)(out+3*si2+48) = + vec_mergel (tv11e, sv11); + } + } + ds += 64; + dt += 64; + savg += 64; + tavg += 64; + cur += 64; + cur_uv += ((!(l1 && i > 3)) << 5); + out += 4*si2; + motin += 4*si1; + m3 += 4*si1; + } +} + +void M::foo(unsigned si1, unsigned si2) +{ + unsigned char tavg[3][32*16]; + unsigned char savg[3][32*16]; + unsigned char dtsum[32*16]; + unsigned char dssum[32*16]; + unsigned t16; + unsigned even = 0; + unsigned hz = 0; + unsigned char *cur; + unsigned char *cur_uv; + unsigned char *motin; + unsigned char *m3; + unsigned char *res; + unsigned cc; + unsigned h1; + T *p = __null; + int l1; + int f1; + bar (savg[cc], tavg[cc], dssum, dtsum, cur, cur_uv, res, motin, m3, even, + hz, h1, l1, f1, si1, si2, t16,p); + bar (savg[cc], tavg[cc], dssum, dtsum, cur, cur_uv, res, motin, m3, even, + hz, h1, l1, f1, si1, si2, t16,p); +} Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-array-ref.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-array-ref.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-array-ref.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-array-ref.C Thu Nov 8 13:02:27 2007 @@ -18,4 +18,3 @@ { func(); } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-10.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-block-10.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-10.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-10.C Thu Nov 8 13:02:27 2007 @@ -8,4 +8,3 @@ and ebx, 0fffffffCh// zero low two bits } } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-2.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-block-2.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-2.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-2.C Thu Nov 8 13:02:27 2007 @@ -98,4 +98,3 @@ abort (); return 0; } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-54.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-block-54.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-54.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-54.C Thu Nov 8 13:02:27 2007 @@ -2,7 +2,7 @@ /* APPLE LOCAL x86_64 */ /* { dg-require-effective-target ilp32 } */ /* { dg-options { -fasm-blocks -msse3 } } */ -/* { dg-final { scan-assembler "movq -16\\\(%ebp\\\), %mm0" } } */ +/* { dg-final { scan-assembler "movq -\(16|36\)\\\(%ebp\\\), %mm0" } } */ /* Radar 4515069 */ void foo() { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-59.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-block-59.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-59.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-59.C Thu Nov 8 13:02:27 2007 @@ -2,7 +2,7 @@ /* { dg-do compile { target i?86*-*-darwin* } } */ /* { dg-options { -fasm-blocks -msse3 -O2 } } */ /* { dg-require-effective-target ilp32 } */ -/* { dg-final { scan-assembler "-24\\\(%ebp,%edx,2\\\), %ebx" } } */ +/* { dg-final { scan-assembler "-\(40|44\)\\\(%ebp,%edx,2\\\), %ebx" } } */ /* Radar 4699545 */ void bar() { Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-64.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-block-64.C?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-64.C (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-64.C Thu Nov 8 13:02:27 2007 @@ -0,0 +1,76 @@ +/* { dg-do compile { target i?86*-*-darwin* } } */ +/* { dg-options { -fasm-blocks -O2 } } */ +/* Radar 5315594 */ + +typedef unsigned char unsigned8; +typedef long long int64; +typedef long int32; +typedef short int16; +typedef char int8; +typedef unsigned long uint32; +typedef uint32 DWORD; +struct MMARRAY +{ + DWORD RESULT1[ 2 ]; + DWORD RESULT2[ 2 ]; + DWORD Fst4DSTPIX[ 2 ]; + DWORD Snd4DSTPIX[ 2 ]; + DWORD _scr[ 2 ]; +}; + +void X_ScreenBlend ( const unsigned8 *sPtr, unsigned8 *dPtr, const unsigned8 *mPtr, + int32 rows, int32 cols, int32 sRowBytes, int32 dRowBytes, + int32 mRowBytes) +{ + int32 sRowB, dRowB, mRowB, Loop8Extras, NumCols; + int64 RNDVAL = 0x007F007F007F007FLL; + int64 LoByteMask = 0x00FF00FF00FF00FFLL; + int64 val254 = 0x00fe00fe00fe00feLL; + int64 ZEROMASK = 0x0; + int64 ONESMASK = 0x0001000100010001LL; + int64 SIGNMASK = 0x8000800080008000LL; + + MMARRAY *pqArray; + MMARRAY qArray; + + if ( rows <= 0 || cols <= 0 ) + return; + + asm { + xor eax, eax + xor edx, edx + mov ax, WORD PTR sRowBytes + xor ecx, ecx + mov dx, WORD PTR dRowBytes + mov sRowB, eax + mov cx, WORD PTR mRowBytes + xor eax, eax + mov ax, WORD PTR cols + mov mRowB, ecx + mov dRowB, edx + lea ecx, qArray + mov ebx, eax + add ecx, 7 + shr eax, 3 + and ecx, 0fffffff8h + mov pqArray, ecx + and ebx, 7 + mov NumCols, eax + mov Loop8Extras, ebx + Row: + mov esi, sPtr + mov edi, dPtr + mov edx, mPtr + mov ebx, sRowB + mov ecx, dRowB + add ebx, esi + mov eax, mRowB + mov sPtr, ebx + add ecx, edi + add eax, edx + mov dPtr, ecx + mov mPtr, eax + mov ecx, NumCols + mov ebx, 4 + } +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-65.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-block-65.C?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-65.C (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-block-65.C Thu Nov 8 13:02:27 2007 @@ -0,0 +1,8 @@ +/* { dg-do compile { target *-*-darwin* } } */ +/* { dg-options { -fasm-blocks } } */ +/* Radar 5474682 */ + +void foo() { + asm { jmp C } + asm { C: nop } +} Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-function-1.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-1.C Thu Nov 8 13:02:27 2007 @@ -36,4 +36,3 @@ abort (); return 0; } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-10.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-function-10.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-10.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-10.C Thu Nov 8 13:02:27 2007 @@ -18,4 +18,3 @@ { foo(); } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-11.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-function-11.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-11.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-11.C Thu Nov 8 13:02:27 2007 @@ -20,5 +20,3 @@ { foo(); } - - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-12.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-function-12.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-12.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-12.C Thu Nov 8 13:02:27 2007 @@ -15,4 +15,3 @@ { foo(); } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-13.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-function-13.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-13.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-13.C Thu Nov 8 13:02:27 2007 @@ -22,5 +22,3 @@ { foo(); } - - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-14.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-function-14.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-14.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-14.C Thu Nov 8 13:02:27 2007 @@ -16,4 +16,3 @@ { foo(); } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-15.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-function-15.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-15.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-15.C Thu Nov 8 13:02:27 2007 @@ -18,4 +18,3 @@ { return foo(1,2); } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-3.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-function-3.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-3.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-3.C Thu Nov 8 13:02:27 2007 @@ -23,4 +23,3 @@ abort (); return 0; } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-4.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-function-4.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-4.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-4.C Thu Nov 8 13:02:27 2007 @@ -59,4 +59,3 @@ abort (); return 0; } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-5.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/asm-function-5.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-5.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/asm-function-5.C Thu Nov 8 13:02:27 2007 @@ -53,4 +53,3 @@ abort (); return 0; } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/format-security-attribute-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/format-security-attribute-1.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/format-security-attribute-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/format-security-attribute-1.C Thu Nov 8 13:02:27 2007 @@ -20,4 +20,3 @@ CFLog(CFSTR("foo is %@"), CFSTR("foo is %@"), foo); // OK CFLog(CFSTR("foo is %@")); // OK } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/format-security-attribute-2.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/format-security-attribute-2.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/format-security-attribute-2.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/format-security-attribute-2.C Thu Nov 8 13:02:27 2007 @@ -29,4 +29,3 @@ } - Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/permissive-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/permissive-1.C?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/permissive-1.C (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/permissive-1.C Thu Nov 8 13:02:27 2007 @@ -0,0 +1,21 @@ +/* APPLE LOCAL file pedwarn for a release 5493351 */ +/* { dg-do compile } */ +/* { dg-options { -O1 -fpermissive -w } } */ +/* { dg-final { scan-assembler "bogus" } } */ +/* Radar 5546638 */ + +extern int bogus; + +int boogus_s; + +void Binder() +{ + switch (boogus_s) { + case 0x2: + int jjj = 1; + break; + case 0xb: + bogus=2; + break; + } +} Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/pubtypes.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/pubtypes.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/pubtypes.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/pubtypes.C Thu Nov 8 13:02:27 2007 @@ -2,7 +2,7 @@ /* { dg-do compile { target *-*-darwin* } } */ /* { dg-options "-O0 -gdwarf-2 -dA -fno-eliminate-unused-debug-types" } */ /* { dg-final { scan-assembler "__debug_pubtypes" } } */ -/* { dg-final { scan-assembler "long+\[ \t\]+0x24+\[ \t\]+\[#;]+\[ \t\]+Length of Public Type Names Info" } } */ +/* { dg-final { scan-assembler "long+\[ \t\]+0x\[0-9a-f]+\[ \t\]+\[#;]+\[ \t\]+Length of Public Type Names Info" } } */ /* { dg-final { scan-assembler "\"empty\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ /* { dg-final { scan-assembler "\"A\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ /* { dg-final { scan-assembler "\"B\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/time-sort.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/time-sort.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/time-sort.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/time-sort.C Thu Nov 8 13:02:27 2007 @@ -46,4 +46,3 @@ d = t5 - t0; std::printf("total time = %f\n", d.sec_ + d.nsec_/1.e9); } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/time-sort.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/time-sort.h?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/time-sort.h (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/time-sort.h Thu Nov 8 13:02:27 2007 @@ -223,4 +223,3 @@ } #endif // HTIMER - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/align-test-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/align-test-1.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/align-test-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/align-test-1.C Thu Nov 8 13:02:27 2007 @@ -196,8 +196,10 @@ } B2; -static void check(char * rec_name, int actual, int expected32, int expected64, - int expected_ia32, char * comment) +/* APPLE LOCAL begin radar 4869885 */ +static void check(const char * rec_name, int actual, int expected32, int expected64, + int expected_ia32, const char * comment) +/* APPLE LOCAL end radar 4869885 */ { int expected; #ifdef __i386__ Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/align2.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/ext/align2.C?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/align2.C (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/align2.C Thu Nov 8 13:02:27 2007 @@ -0,0 +1,13 @@ +/* APPLE LOCAL file for-fsf-4_4 3274130 5295549 */ +/* { dg-do compile } */ +/* { dg-options "-falign-functions=1 -falign-labels=1 -falign-loops=1" } */ +/* { dg-final { scan-assembler "align\[ \t]6" } } */ + +int foo(int * p) +{ + int i, c; + + for __attribute__((aligned(64))) (i = c = 0; i < 100; i++) + c += p[i]; + return c; +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/align3.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/ext/align3.C?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/align3.C (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/align3.C Thu Nov 8 13:02:27 2007 @@ -0,0 +1,17 @@ +/* APPLE LOCAL file for-fsf-4_4 3274130 5295549 */ +/* { dg-do compile } */ +/* { dg-options "-falign-functions=1 -falign-labels=1 -falign-loops=1" } */ +/* { dg-final { scan-assembler "align\[ \t]6" } } */ + +int foo(int * p) +{ + int i = 0; + int c = 0; + + while __attribute__((aligned(64))) (i < 100) + { + c += p[i]; + i++; + } + return c; +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/align4.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/ext/align4.C?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/align4.C (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/align4.C Thu Nov 8 13:02:27 2007 @@ -0,0 +1,16 @@ +/* APPLE LOCAL file for-fsf-4_4 3274130 5295549 */ +/* { dg-do compile } */ +/* { dg-options "-falign-functions=1 -falign-labels=1 -falign-loops=1" } */ +/* { dg-final { scan-assembler "align\[ \t]6" } } */ + +int foo(int * p) +{ + int i = 0; + int c = 0; + + do __attribute__((aligned(64))) { + c += p[i]; + i++; + } while (i < 100); + return c; +} Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/alignof2.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/ext/alignof2.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/alignof2.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/alignof2.C Thu Nov 8 13:02:27 2007 @@ -3,6 +3,9 @@ // wrong for some fields. // { dg-do run } +// APPLE LOCAL begin radar 5457234 +// { dg-skip-if "" { "powerpc-apple-darwin*" } { "*" } { "" } } +// APPLE LOCAL end radar 5457234 extern "C" void abort(); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/visibility/class1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/ext/visibility/class1.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/visibility/class1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/visibility/class1.C Thu Nov 8 13:02:27 2007 @@ -3,6 +3,8 @@ // { dg-options "-fpic" } // { dg-do compile { target i?86-*-* x86_64-*-* *-*-darwin* } } +// APPLE LOCAL mainline candidate +// { dg-skip-if "" { { i?86-*-darwin* x86_64-*-darwin* } && lp64 } { "*" } { "" } } // { dg-require-visibility "" } // { dg-final { scan-assembler "InitEv at PLT|indirect_symbol.*InitEv" } } Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tc1/dr101.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tc1/dr101.C?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tc1/dr101.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tc1/dr101.C Thu Nov 8 13:02:27 2007 @@ -1,7 +1,7 @@ // { dg-do compile } // Origin: Giovanni Bajo // DR101: Redeclaration of extern "C" names via using-declarations - +// APPLE LOCAL file C++ using lookup 4329536 namespace Test1 { typedef unsigned int X; @@ -17,15 +17,14 @@ namespace Test2 { - typedef unsigned int X; // { dg-bogus "X" "" { xfail *-*-* } } + typedef unsigned int X; // { dg-bogus "X" "" } extern "C" int f2(); namespace N { - typedef unsigned int X; // { dg-bogus "X" "" { xfail *-*-* } } + typedef unsigned int X; // { dg-bogus "X" "" } extern "C" int f2(); } using namespace N; int i = f2(); // { dg-bogus "" "redeclaration through 'using' should not be ambiguous" } - X x; // { dg-bogus "" "redeclaration through 'using' should not be ambiguous" { xfail *-*-* } } + X x; // { dg-bogus "" "redeclaration through 'using' should not be ambiguous" } } - Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.old-deja/g++.mike/lookup-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.old-deja/g%2B%2B.mike/lookup-1.C?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.old-deja/g++.mike/lookup-1.C (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.old-deja/g++.mike/lookup-1.C Thu Nov 8 13:02:27 2007 @@ -0,0 +1,10 @@ +/* APPLE LOCAL file C++ using lookup 4329536 */ + +typedef unsigned short ushort; + +namespace wfx { + typedef unsigned short ushort; +} +using namespace wfx; + +ushort valueUS = 567; // OK Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/4283414.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/4283414.c?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/4283414.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/4283414.c Thu Nov 8 13:02:27 2007 @@ -1,4 +1,4 @@ -/* APPLE LOCAL file 4283414 */ +/* APPLE LOCAL file 4283414 mainline candidate */ /* Generate -1 with pcmpeq for SSE2 (x86) */ /* { dg-do compile { target i?86-*-darwin* } } */ /* { dg-options "-O2 -msse2" } */ Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/4874471.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/4874471.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/4874471.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/4874471.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,45 @@ +/* APPLE LOCAL file 4874471 */ +/* Cloned from PR c/29091 */ +/* { dg-do run { target "powerpc*-*-darwin*" } } */ +/* { dg-options "-O2 -mpim-altivec" } */ + +extern void abort (void); + +__attribute__ ((vector_size (sizeof (int) * 4))) int a = { 1, 2 }; +int d = 3; +__attribute__ ((vector_size (sizeof (int) * 4))) int b = { 4, 5, 6 }; +int e = 7; +__attribute__ ((vector_size (sizeof (int) * 4))) int c = { }; + +int +main (void) +{ + int *p = (int *) &a; + if (p[0] != 1) + abort (); + if (p[1] != 2) + abort (); + if (p[2] != 2) + abort (); + if (p[3] != 2) + abort (); + p = (int *) &b; + if (p[0] != 4) + abort (); + if (p[1] != 5) + abort (); + if (p[2] != 6) + abort (); + if (p[3] != 6) + abort (); + p = (int *) &c; + if (p[0] != 0) + abort (); + if (p[1] != 0) + abort (); + if (p[2] != 0) + abort (); + if (p[3] != 0) + abort (); + return 0; +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/5490617.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/5490617.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/5490617.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/5490617.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,6 @@ +/* APPLE LOCAL file mainline candidate */ +/* { dg-do compile } */ +static char _my_endbss[1]; +char *my_endbss_static = _my_endbss; + +/* { dg-final { scan-assembler ".lcomm __my_endbss" } } */ Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-5280301.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-5280301.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-5280301.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-5280301.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,46 @@ +/* APPLE LOCAL file 5280301 */ +/* { dg-do run { target powerpc*-*-darwin* } } */ +/* { dg-options "-m64 -O3 -faltivec -std=c99" } */ +typedef unsigned int uint32_t; +typedef uint32_t vuint32 __attribute__((__vector_size__(16))); + +typedef union +{ + unsigned long long ul[2]; + vuint32 v; +} vec; + +extern void abort (); + +static int foo (vec *a, vec *b) +{ + for (int i = 0; i < 2; ++i) + if (a->ul[i] != b->ul[i]) + return 1; + return 0; +} + +int main (void) +{ + vec t = { 0 }; + vec zero, one, signbit, test; + int i; + zero.ul[0] = 0; + zero.ul[1] = 0; + one.v = zero.v; + one.ul[1] = 1; + signbit.v = zero.v; + signbit.ul[0] = 0; + test.v = t.v & signbit.v; + if (foo(&test, &zero)) + ; + + vec p = one; + for (i = 0; i < 16; ++i) + { + if ((i < 15 && i[(unsigned char *) &p] != 0) + || (i == 15 && i[(unsigned char *) &p] != 1)) + abort (); + } + return 0; +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-5447227.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-5447227.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-5447227.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-5447227.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,25 @@ +/* APPLE LOCAL file 5447227 */ +/* { dg-do compile { target powerpc*-*-darwin* } } */ +/* { dg-options "-faltivec" } */ + +vector unsigned char foo1 () +{ + return vec_lvsl (); /* { dg-error "error: too few arguments to function" } */ +} + +void foo2 () +{ + vector signed char i; + vec_stl (i); /* { dg-error "error: too few arguments to function" } */ +} + +vector float f; +int foo3 () +{ + return vec_all_in (f); /* { dg-error "error: too few arguments to function" } */ +} + +void foo4 () +{ + vec_dst (); /* { dg-error "error: too few arguments to function|bailing out" } */ +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-6.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-6.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-6.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,20 @@ +/* APPLE LOCAL file AltiVec */ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-options "-faltivec" } */ + +/* Check whether we have too many args... */ + +typedef __attribute__((altivec(vector__))) unsigned short vUInt16; +typedef __attribute__((altivec(vector__))) unsigned int vUInt32; + +int main(void) +{ + vUInt16 vZero = (vUInt16) ( 0 ); + vUInt16 v0; + + vUInt32 sum = vec_unpackl (vZero, v0); /* { dg-error "Too many" } */ + + return 0; + +} + Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-array-ref.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-array-ref.c?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-array-ref.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-array-ref.c Thu Nov 8 13:02:27 2007 @@ -17,4 +17,3 @@ { func(); } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-2.c?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-2.c Thu Nov 8 13:02:27 2007 @@ -85,4 +85,3 @@ abort (); return 0; } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-54.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-54.c?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-54.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-54.c Thu Nov 8 13:02:27 2007 @@ -1,7 +1,7 @@ /* { dg-do compile { target i?86*-*-darwin* } } */ /* { dg-skip-if "" { *-*-darwin* } { "-m64" } { "" } } */ /* { dg-options { -fasm-blocks -msse3 } } */ -/* { dg-final { scan-assembler "movq -16\\\(%ebp\\\), %mm0" } } */ +/* { dg-final { scan-assembler "movq -\(16|36\)\\\(%ebp\\\), %mm0" } } */ /* Radar 4515069 */ void foo() { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-59.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-59.c?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-59.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-59.c Thu Nov 8 13:02:27 2007 @@ -2,7 +2,7 @@ /* { dg-do compile { target i?86*-*-darwin* } } */ /* { dg-options { -fasm-blocks -msse3 -O2 } } */ /* { dg-require-effective-target ilp32 } */ -/* { dg-final { scan-assembler "-24\\\(%ebp,%edx,2\\\), %ebx" } } */ +/* { dg-final { scan-assembler "-\(40|44\)\\\(%ebp,%edx,2\\\), %ebx" } } */ /* Radar 4699545 */ void bar() { Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-64.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-64.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-64.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-64.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,76 @@ +/* { dg-do compile { target i?86*-*-darwin* } } */ +/* { dg-options { -fasm-blocks -O2 } } */ +/* Radar 5315594 */ + +typedef unsigned char unsigned8; +typedef long long int64; +typedef long int32; +typedef short int16; +typedef char int8; +typedef unsigned long uint32; +typedef uint32 DWORD; +typedef struct MMARRAY +{ + DWORD RESULT1[ 2 ]; + DWORD RESULT2[ 2 ]; + DWORD Fst4DSTPIX[ 2 ]; + DWORD Snd4DSTPIX[ 2 ]; + DWORD _scr[ 2 ]; +} MMARRAY; + +void X_ScreenBlend ( const unsigned8 *sPtr, unsigned8 *dPtr, const unsigned8 *mPtr, + int32 rows, int32 cols, int32 sRowBytes, int32 dRowBytes, + int32 mRowBytes) +{ + int32 sRowB, dRowB, mRowB, Loop8Extras, NumCols; + int64 RNDVAL = 0x007F007F007F007FLL; + int64 LoByteMask = 0x00FF00FF00FF00FFLL; + int64 val254 = 0x00fe00fe00fe00feLL; + int64 ZEROMASK = 0x0; + int64 ONESMASK = 0x0001000100010001LL; + int64 SIGNMASK = 0x8000800080008000LL; + + MMARRAY *pqArray; + MMARRAY qArray; + + if ( rows <= 0 || cols <= 0 ) + return; + + asm { + xor eax, eax + xor edx, edx + mov ax, WORD PTR sRowBytes + xor ecx, ecx + mov dx, WORD PTR dRowBytes + mov sRowB, eax + mov cx, WORD PTR mRowBytes + xor eax, eax + mov ax, WORD PTR cols + mov mRowB, ecx + mov dRowB, edx + lea ecx, qArray + mov ebx, eax + add ecx, 7 + shr eax, 3 + and ecx, 0fffffff8h + mov pqArray, ecx + and ebx, 7 + mov NumCols, eax + mov Loop8Extras, ebx + Row: + mov esi, sPtr + mov edi, dPtr + mov edx, mPtr + mov ebx, sRowB + mov ecx, dRowB + add ebx, esi + mov eax, mRowB + mov sPtr, ebx + add ecx, edi + add eax, edx + mov dPtr, ecx + mov mPtr, eax + mov ecx, NumCols + mov ebx, 4 + } +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-65.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-65.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-65.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-65.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,8 @@ +/* { dg-do compile { target *-*-darwin* } } */ +/* { dg-options { -fasm-blocks } } */ +/* Radar 5474682 */ + +void foo() { + asm { jmp C } + asm { C: nop } +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-66.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-66.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-66.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-block-66.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,11 @@ +/* APPLE LOCAL file CW asm blocks */ +/* { dg-do compile { target i?86*-*-darwin* } } */ +/* { dg-options { -fasm-blocks } } */ +/* { dg-final { scan-assembler "filds" } } */ +/* { dg-final { scan-assembler "fstps" } } */ +/* Radar 4427695 */ + +void bar() { + asm fild WORD PTR [esi] + asm fstp DWORD PTR [edi+12] +} Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-11.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-11.c?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-11.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-11.c Thu Nov 8 13:02:27 2007 @@ -20,5 +20,3 @@ { foo(); } - - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-12.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-12.c?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-12.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-12.c Thu Nov 8 13:02:27 2007 @@ -15,4 +15,3 @@ { foo(); } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-13.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-13.c?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-13.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-13.c Thu Nov 8 13:02:27 2007 @@ -22,5 +22,3 @@ { foo(); } - - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-14.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-14.c?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-14.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-14.c Thu Nov 8 13:02:27 2007 @@ -4,8 +4,5 @@ asm void foo() { - dcbst r0,r5 /* { dg-error "r0 not allowed for parameter 1" } */ - - li r1, kUndefindedConstant /* { dg-error "expression must be absolute" } */ - + li r1, kUndefindedConstant /* { dg-error "kUndefindedConstant.* used but not defined" } */ } Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-14a.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-14a.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-14a.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-14a.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,8 @@ +/* APPLE LOCAL file CW asm blocks */ +/* { dg-do assemble { target powerpc*-*-* } } */ +/* { dg-options "-fasm-blocks" } */ + +asm void foo() +{ + dcbst r0,r5 /* { dg-error "r0 not allowed for parameter 1" } */ +} Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-15.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-15.c?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-15.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-15.c Thu Nov 8 13:02:27 2007 @@ -16,4 +16,3 @@ { foo(); } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-16.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-16.c?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-16.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-16.c Thu Nov 8 13:02:27 2007 @@ -18,4 +18,3 @@ { return foo(1,2); } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-3.c?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-3.c Thu Nov 8 13:02:27 2007 @@ -23,4 +23,3 @@ abort (); return 0; } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-4.c?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-4.c Thu Nov 8 13:02:27 2007 @@ -59,4 +59,3 @@ abort (); return 0; } - Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-5.c?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/asm-function-5.c Thu Nov 8 13:02:27 2007 @@ -47,4 +47,3 @@ abort (); return 0; } - Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/ivcanon-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/ivcanon-1.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/ivcanon-1.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/ivcanon-1.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,38 @@ +/* APPLE LOCAL file */ +/* { dg-do compile } */ +/* { dg-options "-O2 -fno-tree-dominator-opts -funroll-loops" } */ + +void foo(void) +{ + int n = 16875; + + while (n) + { + if (n&1) + bar (n); + n >>= 1; + } +} + +static inline int power (long x, unsigned int n) +{ + long y = n % 2 ? x : 1; + + while (n >>= 1) + { + x = x * x; + if (n % 2) + y = y * x; + } + + return y; +} + +void test(long x) +{ + bar (power (x, 10)); + bar (power (x, 27)); +} + +/* All loops should be completely unrolled, so there should be no local labels. */ +/* { dg-final { scan-assembler-not "L\[0-9\]*:" } } */ Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/ppc-5450903.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/ppc-5450903.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/ppc-5450903.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/ppc-5450903.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,10 @@ +/* APPLE LOCAL file radar 5450903 */ +/* { dg-do compile { target "powerpc*-*-darwin*" } } */ +/* { dg-options "-Os" } */ +float foo (float a, float b, float c) +{ + float result; + asm volatile ("fmul %0, %1, %2 \n fadds %0, %0, %3" : "=&f" (result) : + "f" (a), "f" (b), "f" (c) ); + return result; +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/private.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/private.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/private.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/private.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,8 @@ +/* APPLE LOCAL file private extern */ +/* { dg-do compile } */ +/* Radar 5487726 */ + +void foo() { + __private_extern__ void bar(); + bar(); +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/x86-5543378.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/x86-5543378.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/x86-5543378.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/x86-5543378.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,17 @@ +/* APPLE LOCAL file 5543378 */ +/* { dg-do compile { target i?86-*-* } } */ +/* { dg-skip-if "" { i?86-*-* } { "" } { "" } } */ +/* { dg-options "-msse2" } */ +#include +void foo1 (int n) +{ + __m128i a = _mm_slli_epi32 (a, n); +} + +void foo2 (int n) { + __m128i a = _mm_srli_epi32 (a, n); +} + +void foo3 (int n) { + __m128i a = _mm_srai_epi32 (a, n); +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-3.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-3.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-3.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,16 @@ +/* APPLE LOCAL file for-fsf-4_4 3274130 5295549 */ +/* { dg-do compile } */ +/* { dg-options "-falign-functions=1 -falign-labels=1 -falign-loops=1" } */ +/* { dg-final { scan-assembler "align\[ \t]6" } } */ + +int foo(int * p) +{ + int i = 0; + int c = 0; + + label: __attribute__((aligned(64))) + c += p[i]; + i++; + if (i < 100) goto label; + return c; +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-4.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-4.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-4.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,13 @@ +/* APPLE LOCAL file for-fsf-4_4 3274130 5295549 */ +/* { dg-do compile } */ +/* { dg-options "-falign-functions=1 -falign-labels=1 -falign-loops=1" } */ +/* { dg-final { scan-assembler "align\[ \t]6" } } */ + +int foo(int * p) +{ + int i, c; + + for __attribute__((aligned(64))) (i = c = 0; i < 100; i++) + c += p[i]; + return c; +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-5.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-5.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-5.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,17 @@ +/* APPLE LOCAL file for-fsf-4_4 3274130 5295549 */ +/* { dg-do compile } */ +/* { dg-options "-falign-functions=1 -falign-labels=1 -falign-loops=1" } */ +/* { dg-final { scan-assembler "align\[ \t]6" } } */ + +int foo(int * p) +{ + int i = 0; + int c = 0; + + while __attribute__((aligned(64))) (i < 100) + { + c += p[i]; + i++; + } + return c; +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-6.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-6.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/align-6.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,16 @@ +/* APPLE LOCAL file for-fsf-4_4 3274130 5295549 */ +/* { dg-do compile } */ +/* { dg-options "-falign-functions=1 -falign-labels=1 -falign-loops=1" } */ +/* { dg-final { scan-assembler "align\[ \t]6" } } */ + +int foo(int * p) +{ + int i = 0; + int c = 0; + + do __attribute__((aligned(64))) { + c += p[i]; + i++; + } while (i < 100); + return c; +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/attr-unused-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/attr-unused-1.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/attr-unused-1.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/attr-unused-1.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,13 @@ +/* APPLE LOCAL file for-fsf-4_4 3274130 5295549 */ +/* { dg-do compile } */ +/* { dg-options "-Wunused" } */ + +int foo(int * p) +{ + int i, c; + + for __attribute__((unused)) + (i = c = 0; i < 100; i++) + c += p[i]; /* { dg-warning "ignored" } */ + return c; +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtin-alloca-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtin-alloca-1.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtin-alloca-1.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtin-alloca-1.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,20 @@ +/* APPLE LOCAL file radar 5155743, mainline candidate */ +/* { dg-do run } */ +/* PR target/28197 */ + +#include + +jmp_buf env; +void f (int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8) +{ + longjmp (env, 1); +} + +int main() +{ + if (setjmp (env) == 0) { + void *p = __builtin_alloca (4); + f (1,2,3,4,5,6,7,8); + } + return 0; +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtin-alloca-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtin-alloca-2.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtin-alloca-2.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtin-alloca-2.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,19 @@ +/* APPLE LOCAL file radar 5155743, mainline candidate */ +/* { dg-do run } */ + +#include + +jmp_buf env; +int main() +{ + char *p; + int i; + if (setjmp (env) == 0) { + p = __builtin_alloca (1024); + for (i = 0; i < 1024; i++) { + p[i] = 0; + } + longjmp (env, 1); + } + return 0; +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/flt-rounds.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/flt-rounds.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/flt-rounds.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/flt-rounds.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,30 @@ +/* APPLE LOCAL file 3399553 */ +/* Verify that FLT_ROUNDS changes with a successful call to + fesetround(). */ + +/* { dg-do run } */ + +#include +#include + +int main (void) +{ + if (fesetround (FE_TONEAREST) >= 0 + && FLT_ROUNDS != 1) + return 1; + + if (fesetround (FE_TOWARDZERO) >= 0 + && FLT_ROUNDS != 0) + return 1; + + if (fesetround (FE_UPWARD) >= 0 + && FLT_ROUNDS != 2) + return 1; + + if (fesetround (FE_DOWNWARD) >= 0 + && FLT_ROUNDS != 3) + return 1; + + return 0; +} + Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pragma-darwin-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pragma-darwin-2.c?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pragma-darwin-2.c (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pragma-darwin-2.c Thu Nov 8 13:02:27 2007 @@ -0,0 +1,25 @@ +/* APPLE LOCAL file mainline 2007-10-10 5497482 */ +/* Darwin (Mac OS X) pragma exercises. */ + +/* { dg-do compile { target *-*-darwin* } } */ + +/* The mark pragma is valid at any point in the program. Fortunately + the compiler only needs to ignore it. It's also followed only + by pp-tokens, not necessarily real C tokens. */ + +void foo(void) +{ + if (1) { + ; + } + else if (1) { + ; + } +#pragma mark "last case" "hi" + else if (1) { + ; + } +} + +#pragma mark 802.11x 1_2_3 +#pragma mark ???????????? marker ???????????? Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-1.c?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030711-1.c Thu Nov 8 13:02:27 2007 @@ -1,6 +1,5 @@ /* { dg-do compile } */ -/* APPLE LOCAL lno */ -/* { dg-options "-O1 -fdump-tree-dom3 -ftree-loop-optimize" } */ +/* { dg-options "-O1 -fdump-tree-dom3" } */ /* LLVM LOCAL test not applicable */ /* { dg-require-fdump "" } */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030714-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030714-2.c?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030714-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20030714-2.c Thu Nov 8 13:02:27 2007 @@ -1,6 +1,5 @@ /* { dg-do compile } */ -/* APPLE LOCAL lno */ -/* { dg-options "-O1 -fdump-tree-dom3 -ftree-loop-optimize" } */ +/* { dg-options "-O1 -fdump-tree-dom3" } */ /* LLVM LOCAL test not applicable */ /* { dg-require-fdump "" } */ Removed: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ivcanon-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ivcanon-1.c?rev=43898&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ivcanon-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/ivcanon-1.c (removed) @@ -1,40 +0,0 @@ -/* APPLE LOCAL file lno */ -/* { dg-do compile } */ -/* { dg-options "-O2 -ftree-loop-optimize -funroll-loops -fdump-tree-optimized" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ - -void foo(void) -{ - int n = 16875; - - while (n) - { - if (n&1) - bar (n); - n >>= 1; - } -} - -static inline int power (long x, unsigned int n) -{ - long y = n % 2 ? x : 1; - - while (n >>= 1) - { - x = x * x; - if (n % 2) - y = y * x; - } - - return y; -} - -void test(long x) -{ - bar (power (x, 10)); - bar (power (x, 27)); -} - -/* All loops should be completely unrolled, so there should be no labels. */ -/* { dg-final { scan-tree-dump-times " 2 } { - error "diff-tree-dumps:: too many arguments" - return - } - if { [llength $args] >= 2 } { - switch [dg-process-target [lindex $args 1]] { - "S" { } - "N" { return } - "F" { setup_xfail "*-*-*" } - "P" { } - } - } - - # This assumes that we are two frames down from dg-test, and that - # it still stores the filename of the testcase in a local variable "name". - # A cleaner solution would require a new dejagnu release. - upvar 2 prog testcase - - # This must match the rule in gcc-dg.exp. - # APPLE LOCAL Selective inlining of functions that use Altivec 3837835 - set new_file "[glob [file tail $testcase].\[ti\]??.[lindex $args 0]]" - set reference_file "[glob $testcase.[lindex $args 0]]" - - set test_result [diff $reference_file $new_file] - - if { $test_result == 1 } { - pass "$testcase diff-tree-dumps [lindex $args 0]" - } else { - fail "$testcase diff-tree-dumps [lindex $args 0]" - local_exec (diff $reference_file $new_file 0); - } -} -# APPLE LOCAL end lno - load_lib scandump.exp # Utility for scanning compiler result, invoked via dg-final. Added: llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/cxx-typeconv-func-1.mm URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/obj-c%2B%2B.dg/cxx-typeconv-func-1.mm?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/cxx-typeconv-func-1.mm (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/cxx-typeconv-func-1.mm Thu Nov 8 13:02:27 2007 @@ -0,0 +1,32 @@ +/* APPLE LOCAL file radar 3533972 */ +/* Test that type conversion function is applied to the 'receiver' in a method call, + if one is available. */ +/* { dg-options "-framework Foundation -mmacosx-version-min=10.5" } */ +/* { dg-do run { target *-*-darwin* } } */ +#include + +struct wrapper +{ + id object; + wrapper (id obj) : object(obj) { } + operator id () const { return object; } +}; + + at interface NamedObject : NSObject +- (int) val; + at end + + at implementation NamedObject +- (int) val { return 123; } + at end + +int main() +{ + + wrapper foo([[NamedObject alloc] init]); + + if ([foo val] != 123) + abort (); + return 0; +} + Added: llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/enhanced-proto-4.mm URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/obj-c%2B%2B.dg/enhanced-proto-4.mm?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/enhanced-proto-4.mm (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/enhanced-proto-4.mm Thu Nov 8 13:02:27 2007 @@ -0,0 +1,75 @@ +/* APPLE LOCAL file radar 4653422 */ +/* Test implementation of @optional property */ +/* { dg-options "-mmacosx-version-min=10.5 -framework Foundation" } */ +/* { dg-do run { target *-*-darwin* } } */ +#import +/* { dg-do run } */ + + at protocol Test + @property int required; + + at optional + @property int optional; + @property int optional1; + @property int optional_preexisting_setter_getter; + @property (setter = setOptional_preexisting_setter_getter: , + getter = optional_preexisting_setter_getter) int optional_with_setter_getter_attr; + at required + @property int required1; + at optional + @property int optional_to_be_defined; + @property (readonly, getter = optional_preexisting_setter_getter) int optional_getter_attr; + at end + + at interface Test : NSObject { + int ivar; +} + at property int required; + at property int optional_to_be_defined; +- (int) optional_preexisting_setter_getter; +- (void) setOptional_preexisting_setter_getter:(int)value; + at end + + at implementation Test + at synthesize required = ivar; + at synthesize required1 = ivar; + at synthesize optional_to_be_defined = ivar; +- (int) optional_preexisting_setter_getter { return ivar; } +- (void) setOptional_preexisting_setter_getter:(int)value + { + ivar = value; + } +- (void) setOptional_getter_attr:(int)value { ivar = value; } + at end + +int main () +{ + Test *x = [[Test alloc] init]; + /* 1. Test of a requred property */ + x.required = 100; + if (x.required1 != 100) + abort (); + + /* 2. Test of a synthesize optional property */ + x.optional_to_be_defined = 123; + if (x.required1 != 123) + abort (); + + /* 3. Test of optional property with pre-sxisting defined setter/getter */ + x.optional_preexisting_setter_getter = 200; + if (x.optional_preexisting_setter_getter != 200) + abort (); + + /* 4. Test of optional property with setter/getter attribute */ + if (x.optional_with_setter_getter_attr != 200) + abort (); + return 0; + + /* 5. Test of optional property with getter attribute and default setter method. */ + x.optional_getter_attr = 1000; + if (x.optional_getter_attr != 1000) + abort (); + + return 0; +} + Added: llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/newproperty-bitfield-1.mm URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/obj-c%2B%2B.dg/newproperty-bitfield-1.mm?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/newproperty-bitfield-1.mm (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/newproperty-bitfield-1.mm Thu Nov 8 13:02:27 2007 @@ -0,0 +1,36 @@ +/* APPLE LOCAL file radar 5389292 */ +/* Test that ivar bitfields work for property of same underlying type. */ +/* { dg-options "-mmacosx-version-min=10.5 -framework Foundation" } */ +/* { dg-do run { target *-*-darwin* } } */ + +#import + + at interface Foo : NSObject { + + BOOL _field1 : 5; + BOOL _field2 : 3; +} + + at property BOOL field1; + at property BOOL field2; + at end + + at implementation Foo + + at synthesize field1 = _field1; + at synthesize field2 = _field2; + + at end + +int main() +{ + Foo *f = [[Foo alloc] init]; + f.field1 = 0xF; + f.field2 = 0x3; + f.field1 = f.field1 & f.field2; + if (f.field1 != 0x3) + abort (); + return 0; +} + + Modified: llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/newproperty-nowarn-unused-param.mm URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/obj-c%2B%2B.dg/newproperty-nowarn-unused-param.mm?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/newproperty-nowarn-unused-param.mm (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/newproperty-nowarn-unused-param.mm Thu Nov 8 13:02:27 2007 @@ -1,15 +1,30 @@ -/* APPLE LOCAL file radar 5232840 */ +/* APPLE LOCAL file radar 5232840 - radar 5398274 */ /* Test that no warning is issued on 'unused' "_value" parameter even though it is used. */ /* { dg-options "-Wunused-parameter -mmacosx-version-min=10.5" } */ /* { dg-do compile { target *-*-darwin* } } */ @interface MyClass { + at private + id retainValue; + id copyValue; + id assignValue; + id readOnlyValue; int foo; } + at property(readwrite, retain) id retainValue; + at property(readwrite, assign) id assignValue; + at property(readwrite, copy) id copyValue; + at property(readonly) id readOnlyValue; + @property(readwrite) int foo; @end @implementation MyClass + at synthesize retainValue; + at synthesize assignValue; + at synthesize copyValue; + at synthesize readOnlyValue; + @synthesize foo; @end Added: llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/newproperty-warn-direct-ivar-access.mm URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/obj-c%2B%2B.dg/newproperty-warn-direct-ivar-access.mm?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/newproperty-warn-direct-ivar-access.mm (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/newproperty-warn-direct-ivar-access.mm Thu Nov 8 13:02:27 2007 @@ -0,0 +1,35 @@ +/* APPLE LOCAL file radar 5376125 */ +/* Test for new objc option -Wdirect-ivar-access. */ +/* { dg-options "-mmacosx-version-min=10.5 -Wdirect-ivar-access" } */ +/* { dg-do compile { target *-*-darwin* } } */ + + at interface MyObject { + at public + id _myMaster; + id _isTickledPink; +} + at property(retain) id myMaster; + at property(assign) id isTickledPink; + at end + + at implementation MyObject + + at synthesize myMaster = _myMaster; + at synthesize isTickledPink = _isTickledPink; + +- (void) doSomething { + _myMaster = _isTickledPink; /* { dg-warning "ivar \'_myMaster\' is being directly accessed" } */ + /* { dg-warning "ivar \'_isTickledPink\' is being directly accessed" "" { target *-*-* } 21 } */ +} + + at end + +MyObject * foo () +{ + MyObject* p; + p.isTickledPink = p.myMaster; // ok + p->_isTickledPink = p->_myMaster; /* { dg-warning "ivar \'_myMaster\' is being directly accessed" } */ + /* { dg-warning "ivar \'_isTickledPink\' is being directly accessed" "" { target *-*-* } 31 } */ + return p->_isTickledPink; /* { dg-warning "ivar \'_isTickledPink\' is being directly accessed" } */ +} + Added: llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/objc-neg-selector.mm URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/obj-c%2B%2B.dg/objc-neg-selector.mm?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/objc-neg-selector.mm (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/objc-neg-selector.mm Thu Nov 8 13:02:27 2007 @@ -0,0 +1,12 @@ +/* APPLE LOCAL file radar 5409313 */ +/* { dg-do compile } */ + + +typedef struct objc_selector *SEL; + +SEL sel; + +void foo () +{ + sel = @selector(); /* { dg-error "method name missing in @selector" } */ +} Modified: llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/objc2-protocol-3.mm URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/obj-c%2B%2B.dg/objc2-protocol-3.mm?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/objc2-protocol-3.mm (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/objc2-protocol-3.mm Thu Nov 8 13:02:27 2007 @@ -1,10 +0,0 @@ -/* APPLE LOCAL file 5433974 */ -/* { dg-options "-mmacosx-version-min=10.5 -fobjc-abi-version=2" } */ -/* { dg-do compile { target *-*-darwin* } } */ - - at protocol Proto -+classMethod; - at end - - at implementation @end /* { dg-error "use of @implementation" } */ -/* { dg-warning "@end' must appear in an @implementation context" "" { target *-*-darwin* } 9 } */ Added: llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/protocol-atttribute-1.mm URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/obj-c%2B%2B.dg/protocol-atttribute-1.mm?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/protocol-atttribute-1.mm (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/protocol-atttribute-1.mm Thu Nov 8 13:02:27 2007 @@ -0,0 +1,43 @@ +/* APPLE LOCAL file radar 4947311 */ +/* Check implementation of protocol attributes. */ +/* { dg-options "-mmacosx-version-min=10.5" } */ +/* { dg-do compile } */ + +__attribute ((unavailable)) + at protocol FwProto; + +Class cFw = 0; /* { dg-warning "protocol 'FwProto' is unavailable" } */ + + +__attribute ((deprecated)) @protocol MyProto1 + at end + + at protocol Proto2 /* { dg-warning "protocol 'MyProto1' is deprecated" } */ ++method2; + at end + + + at interface MyClass1 /* { dg-warning "protocol 'MyProto1' is deprecated" } */ +{ + Class isa; +} + at end + + at interface Derived : MyClass1 /* { dg-warning "protocol 'MyProto1' is deprecated" } */ +{ + id ivar; /* { dg-warning "protocol 'MyProto1' is deprecated" } */ +} + at end + + at interface MyClass1 (Category) /* { dg-warning "protocol 'MyProto1' is deprecated" } */ + at end + + + +Class clsP1 = 0; /* { dg-warning "protocol 'MyProto1' is deprecated" } */ + +int main () +{ + MyClass1 *p1; /* { dg-warning "protocol 'MyProto1' is deprecated" } */ +} + Modified: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/class-attribute-1.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/class-attribute-1.m?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/class-attribute-1.m (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/class-attribute-1.m Thu Nov 8 13:02:27 2007 @@ -1,4 +1,4 @@ -/* APPLE LOCAL file 4548636 */ +/* APPLE LOCAL file 4548636, 5556192 */ /* Check for a variety of rules for objc's class attributes. */ /* APPLE LOCAL radar 4899595 */ /* { dg-options "-mmacosx-version-min=10.5" } */ @@ -32,17 +32,17 @@ @interface UNAVAILABLE - (int *) AnaotherInst; /* { dg-warning "unknown" } */ + (DEPRECATED*) return_deprecated; /* { dg-warning "deprecated" } */ - - (UNAVAILABLE *) return_unavailable; /* { dg-warning "unavailable" } */ + - (UNAVAILABLE *) return_unavailable; /* { dg-error "unavailable" } */ @end DEPRECATED * deprecated_obj; /* { dg-warning "deprecated" } */ -UNAVAILABLE *unavailable_obj; /* { dg-warning "unavailable" } */ +UNAVAILABLE *unavailable_obj; /* { dg-error "unavailable" } */ @implementation UNAVAILABLE - (int *) AnaotherInst { return (int*)0; } + (DEPRECATED *) return_deprecated { return deprecated_obj; } /* { dg-warning "deprecated" } */ - - (UNAVAILABLE *) return_unavailable { return unavailable_obj; } /* { dg-warning "unavailable" } */ + - (UNAVAILABLE *) return_unavailable { return unavailable_obj; } /* { dg-error "unavailable" } */ @end int foo (DEPRECATED *unavailable_obj) /* { dg-warning "deprecated" } */ Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-cfstring-8.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-cfstring-8.m?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-cfstring-8.m (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-cfstring-8.m Thu Nov 8 13:02:27 2007 @@ -0,0 +1,45 @@ +/* APPLE LOCAL file constant cfstrings */ +/* { dg-do compile } */ +/* { dg-options "-fobjc-gc -Os -mmacosx-version-min=10.5.0 -fno-tree-sra" } */ +/* Radar 5494472 */ + + at class NSString1, Message1; +typedef signed long CFIndex1; +typedef CFIndex1 CFComparisonResult1; +typedef CFComparisonResult1 (*CFComparatorFunction1)(const void *val1, + const void *val2, + void *context); +enum _NSComparisonResult1 {NSOrderedAscending = -1, NSOrderedSame1}; +typedef int NSInteger1; +typedef NSInteger1 NSComparisonResult1; +static NSComparisonResult1 _compareMsgsByReadStatus(Message1 *msg1, + Message1 *msg2, + void *context); +typedef struct { + NSString1 *name; + CFComparatorFunction1 func; + int i; +} ComparatorPair; + +static const ComparatorPair comparators[] = { + { @"readstatus", (CFComparatorFunction1)&_compareMsgsByReadStatus, 0 }, + { ((void *)0), ((void *)0), 0 } +}; + +int sync(int); + +void foo(ComparatorPair p); + +void MFComparatorFunctionForSortOrder() { + unsigned index = 0; + ComparatorPair comp = comparators[0]; + foo(comp); +} + +static NSComparisonResult1 +_compareMsgsByReadStatus(Message1 *msg1, + Message1 *msg2, void *context) { + NSComparisonResult1 result = NSOrderedSame1; + + return result; +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/enhanced-proto-4.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/enhanced-proto-4.m?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/enhanced-proto-4.m (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/enhanced-proto-4.m Thu Nov 8 13:02:27 2007 @@ -0,0 +1,75 @@ +/* APPLE LOCAL file radar 4653422 */ +/* Test implementation of @optional property */ +/* { dg-options "-mmacosx-version-min=10.5 -framework Foundation" } */ +/* { dg-do run { target *-*-darwin* } } */ +#import +/* { dg-do run } */ + + at protocol Test + @property int required; + + at optional + @property int optional; + @property int optional1; + @property int optional_preexisting_setter_getter; + @property (setter = setOptional_preexisting_setter_getter: , + getter = optional_preexisting_setter_getter) int optional_with_setter_getter_attr; + at required + @property int required1; + at optional + @property int optional_to_be_defined; + @property (readonly, getter = optional_preexisting_setter_getter) int optional_getter_attr; + at end + + at interface Test : NSObject { + int ivar; +} + at property int required; + at property int optional_to_be_defined; +- (int) optional_preexisting_setter_getter; +- (void) setOptional_preexisting_setter_getter:(int)value; + at end + + at implementation Test + at synthesize required = ivar; + at synthesize required1 = ivar; + at synthesize optional_to_be_defined = ivar; +- (int) optional_preexisting_setter_getter { return ivar; } +- (void) setOptional_preexisting_setter_getter:(int)value + { + ivar = value; + } +- (void) setOptional_getter_attr:(int)value { ivar = value; } + at end + +int main () +{ + Test *x = [[Test alloc] init]; + /* 1. Test of a requred property */ + x.required = 100; + if (x.required1 != 100) + abort (); + + /* 2. Test of a synthesize optional property */ + x.optional_to_be_defined = 123; + if (x.required1 != 123) + abort (); + + /* 3. Test of optional property with pre-sxisting defined setter/getter */ + x.optional_preexisting_setter_getter = 200; + if (x.optional_preexisting_setter_getter != 200) + abort (); + + /* 4. Test of optional property with setter/getter attribute */ + if (x.optional_with_setter_getter_attr != 200) + abort (); + return 0; + + /* 5. Test of optional property with getter attribute and default setter method. */ + x.optional_getter_attr = 1000; + if (x.optional_getter_attr != 1000) + abort (); + + return 0; +} + Modified: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-1.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-1.m?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-1.m (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-1.m Thu Nov 8 13:02:27 2007 @@ -1,4 +1,4 @@ -/* APPLE LOCAL file radar 3803157, 5005756 */ +/* APPLE LOCAL file radar 3803157, 5005756, 5556192 */ /* Test implementaion of attributes on methods. */ /* { dg-do compile } */ @@ -29,11 +29,11 @@ id pid; [p foo]; /* { dg-warning "\\'foo\\' is deprecated" } */ - /* { dg-warning "\\'foo\\' is unavailable" "" { target *-*-* } 31 } */ + /* { dg-error "\\'foo\\' is unavailable" "" { target *-*-* } 31 } */ [p variarg:1,2]; /* { dg-warning "\\'variarg:\\' is deprecated" } */ [p fun1:1:2]; /* { dg-warning "\\'fun1::\\' is deprecated" } */ [p bar]; /* { dg-warning "\\'bar\\' is deprecated" } */ - /* { dg-warning "\\'bar\\' is unavailable" "" { target *-*-* } 35 } */ + /* { dg-error "\\'bar\\' is unavailable" "" { target *-*-* } 35 } */ [pid foo]; // OK [pid variarg:1,2]; // OK Modified: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-2.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-2.m?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-2.m (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-2.m Thu Nov 8 13:02:27 2007 @@ -1,4 +1,4 @@ -/* APPLE LOCAL file radar 3803157 */ +/* APPLE LOCAL file radar 3803157, 5556192 */ /* Test implementaion of attributes on methods. */ /* { dg-do compile } */ @@ -29,7 +29,7 @@ INTF *p; [p foo1:2]; /* { dg-warning "\\'foo1:\\' is deprecated" } */ [p foo2:2]; /* { dg-warning "\\'foo2:\\' is deprecated" } */ - /* { dg-warning "\\'foo2:\\' is unavailable" "" { target *-*-* } 31 } */ + /* { dg-error "\\'foo2:\\' is unavailable" "" { target *-*-* } 31 } */ return [p foo:1]; } Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-attr-encode-1.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-attr-encode-1.m?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-attr-encode-1.m (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-attr-encode-1.m Thu Nov 8 13:02:27 2007 @@ -0,0 +1,18 @@ +/* APPLE LOCAL file radar 5407792 */ +/* 'nonatomic' property requires a new 'N' property attribute encoding */ +/* { dg-options "-mmacosx-version-min=10.5" } */ +/* { dg-do compile { target *-*-darwin* } } */ + +#import + + at interface NonAtomicTest : NSObject { + NSString *foo; +} + at property(copy, nonatomic) NSString *foo; + at end + + at implementation NonAtomicTest + at synthesize foo; + at end +/* { dg-final { scan-assembler ".*C,N,Vfoo" } } */ + Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-bitfield-1.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-bitfield-1.m?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-bitfield-1.m (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-bitfield-1.m Thu Nov 8 13:02:27 2007 @@ -0,0 +1,36 @@ +/* APPLE LOCAL file radar 5389292 */ +/* Test that ivar bitfields work for property of same underlying type. */ +/* { dg-options "-mmacosx-version-min=10.5 -framework Foundation" } */ +/* { dg-do run { target *-*-darwin* } } */ + +#import + + at interface Foo : NSObject { + + BOOL _field1 : 5; + BOOL _field2 : 3; +} + + at property BOOL field1; + at property BOOL field2; + at end + + at implementation Foo + + at synthesize field1 = _field1; + at synthesize field2 = _field2; + + at end + +int main() +{ + Foo *f = [[Foo alloc] init]; + f.field1 = 0xF; + f.field2 = 0x3; + f.field1 = f.field1 & f.field2; + if (f.field1 != 0x3) + abort (); + return 0; +} + + Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-neg-1.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-neg-1.m?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-neg-1.m (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-neg-1.m Thu Nov 8 13:02:27 2007 @@ -0,0 +1,33 @@ +/* APPLE LOCAL file radar 5390587 */ +/* Test that use of property name as 'getter' attribute of a 'readonly' property + does not confuse gcc into issuing bogus error. */ +/* { dg-do compile { target *-*-darwin* } } */ +/* { dg-options "-mmacosx-version-min=10.5" } */ + + + at protocol Test + @property (readonly, getter = PROPERTY1) int ANOTHER_READONLY_PROPERTY; + + @property int PROPERTY1; + + @property (readonly, getter = PROPERTY1) int READONLY_PROPERTY; + + at end + + at interface Test { + int ivar; +} +- (int) PROPERTY1; +- (void) setPROPERTY1:(int)value; + at end + +int main () +{ + Test *x; + + x.PROPERTY1 = 200 + x.READONLY_PROPERTY; /* OK */ + x.READONLY_PROPERTY = x.PROPERTY1 - 100; /* { dg-error "object cannot be set - either readonly property or no setter found" } */ + x.ANOTHER_READONLY_PROPERTY = x.PROPERTY1 - 100; /* { dg-error "object cannot be set - either readonly property or no setter found" } */ + return 0; +} + Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-warn-direct-ivar-access.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-warn-direct-ivar-access.m?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-warn-direct-ivar-access.m (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/newproperty-warn-direct-ivar-access.m Thu Nov 8 13:02:27 2007 @@ -0,0 +1,35 @@ +/* APPLE LOCAL file radar 5376125 */ +/* Test for new objc option -Wdirect-ivar-access. */ +/* { dg-options "-mmacosx-version-min=10.5 -Wdirect-ivar-access" } */ +/* { dg-do compile { target *-*-darwin* } } */ + + at interface MyObject { + at public + id _myMaster; + id _isTickledPink; +} + at property(retain) id myMaster; + at property(assign) id isTickledPink; + at end + + at implementation MyObject + + at synthesize myMaster = _myMaster; + at synthesize isTickledPink = _isTickledPink; + +- (void) doSomething { + _myMaster = _isTickledPink; /* { dg-warning "ivar \'_myMaster\' is being directly accessed" } */ + /* { dg-warning "ivar \'_isTickledPink\' is being directly accessed" "" { target *-*-* } 21 } */ +} + + at end + +MyObject * foo () +{ + MyObject* p; + p.isTickledPink = p.myMaster; // ok + p->_isTickledPink = p->_myMaster; /* { dg-warning "ivar \'_myMaster\' is being directly accessed" } */ + /* { dg-warning "ivar \'_isTickledPink\' is being directly accessed" "" { target *-*-* } 31 } */ + return p->_isTickledPink; /* { dg-warning "ivar \'_isTickledPink\' is being directly accessed" } */ +} + Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-gc-10.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-gc-10.m?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-gc-10.m (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-gc-10.m Thu Nov 8 13:02:27 2007 @@ -0,0 +1,10 @@ +/* APPLE LOCAL file objc gc 5547128 */ +/* { dg-do compile } */ +/* { dg-options "-fobjc-gc" } */ +/* Radar 5547128 */ + +__strong float *fp; + +void foo() { + fp[0] = 3.14; +} Modified: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-protocol-3.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-protocol-3.m?rev=43899&r1=43898&r2=43899&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-protocol-3.m (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-protocol-3.m Thu Nov 8 13:02:27 2007 @@ -1,10 +0,0 @@ -/* APPLE LOCAL file 5433974 */ -/* { dg-options "-mmacosx-version-min=10.5 -fobjc-abi-version=2" } */ -/* { dg-do compile { target *-*-darwin* } } */ - - at protocol Proto -+classMethod; - at end - - at implementation @end /* { dg-error "use of @implementation" } */ -/* { dg-warning "@end' must appear in an @implementation context" "" { target *-*-darwin* } 9 } */ Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-15.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-15.m?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-15.m (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-15.m Thu Nov 8 13:02:27 2007 @@ -0,0 +1,52 @@ +/* APPLE LOCAL file radar 5512183 */ +/* { dg-options "-mmacosx-version-min=10.5" } */ +/* { dg-do compile } */ + + at class SSyncSet; + at class SStore; + at class SSyncJob; + at class SNode; + +SSyncSet *slocal; + + at interface SPeer +{ +} + at property(nonatomic,readonly,retain) SSyncSet* syncSet; + at end + + at class SSyncSet_iDisk; + + at interface SPeer_iDisk_remote1 : SPeer +{ +} +- (SSyncSet_iDisk*) syncSet; + at end + + at interface SPeer_iDisk_local +{ +} +- (SSyncSet_iDisk*) syncSet; + at end + + at interface SSyncSet +{ +} + at end + + at interface SSyncSet_iDisk +{ +} + + at property(nonatomic,readonly,retain) SPeer_iDisk_local* localPeer; + at end + + at interface SPeer_iDisk_remote1 (protected) + at end + + at implementation SPeer_iDisk_remote1 (protected) +- (void) preferredSource1 +{ + self.syncSet.localPeer; /* { dg-error "type of accessor does not match the type of property" } */ +} + at end Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/protocol-atttribute-1.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/protocol-atttribute-1.m?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/protocol-atttribute-1.m (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/protocol-atttribute-1.m Thu Nov 8 13:02:27 2007 @@ -0,0 +1,43 @@ +/* APPLE LOCAL file radar 4947311, 5556192 */ +/* Check implementation of protocol attributes. */ +/* { dg-options "-mmacosx-version-min=10.5" } */ +/* { dg-do compile } */ + +__attribute ((unavailable)) + at protocol FwProto; + +Class cFw = 0; /* { dg-error "protocol 'FwProto' is unavailable" } */ + + +__attribute ((deprecated)) @protocol MyProto1 + at end + + at protocol Proto2 /* { dg-warning "protocol 'MyProto1' is deprecated" } */ ++method2; + at end + + + at interface MyClass1 /* { dg-warning "protocol 'MyProto1' is deprecated" } */ +{ + Class isa; +} + at end + + at interface Derived : MyClass1 /* { dg-warning "protocol 'MyProto1' is deprecated" } */ +{ + id ivar; /* { dg-warning "protocol 'MyProto1' is deprecated" } */ +} + at end + + at interface MyClass1 (Category) /* { dg-warning "protocol 'MyProto1' is deprecated" } */ + at end + + + +Class clsP1 = 0; /* { dg-warning "protocol 'MyProto1' is deprecated" } */ + +int main () +{ + MyClass1 *p1; /* { dg-warning "protocol 'MyProto1' is deprecated" } */ +} + Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/pubtypes-id-test.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/pubtypes-id-test.m?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/pubtypes-id-test.m (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/pubtypes-id-test.m Thu Nov 8 13:02:27 2007 @@ -0,0 +1,35 @@ +// APPLE LOCAL file +// Test case taken from SKTGridPanelController.m +// Sketch Example +// +/* Radar 5359827 */ +/* { dg-do compile { target *-*-darwin* } } */ +/* { dg-options "-O0 -g -c -save-temps -dA --no-warn" } */ +/* { dg-skip-if "Unmatchable assembly" { mmix-*-* } { "*" } { "" } } */ +/* { dg-final { scan-assembler "__debug_pubtypes" } } */ +/* { dg-final { scan-assembler "long\[ \t]+0x\[0-9a-f]+\[ \t]+\[#;]\[ \t]+Length of Public Type Names Info" } } */ +/* { dg-final { scan-assembler "id\\\\0\"\[ \t]+\[#;]\[ \t]+external name" } } */ + + +#import + + at implementation SKTGridPanelController + ++ (id)sharedGridPanelController { + static SKTGridPanelController *sharedGridPanelController = nil; + + if (!sharedGridPanelController) { + sharedGridPanelController = [[SKTGridPanelController allocWithZone:NULL] init]; + } + + return sharedGridPanelController; +} + +- (id)init { + self = [self initWithWindowNibName:@"GridPanel"]; + if (self) { + [self setWindowFrameAutosaveName:@"Grid"]; + } + return self; +} + Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/super-finalize-3.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/super-finalize-3.m?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/super-finalize-3.m (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/super-finalize-3.m Thu Nov 8 13:02:27 2007 @@ -0,0 +1,25 @@ +/* APPLE LOCAL file radar 5424473 */ +/* Don't issue warning on lack of [super finalize] method call for a class method + named +finalize. */ +/* { dg-do compile { target *-*-darwin* } } */ + + + at interface parent +{ + int data; +} + at end + + at interface child : parent +{ +} ++ finalize; + + at end + + at implementation child ++ finalize +{ +} + at end + Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/unavailable.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/unavailable.m?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/unavailable.m (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/unavailable.m Thu Nov 8 13:02:27 2007 @@ -0,0 +1,16 @@ +/* APPLE LOCAL file "unavailable" attribute 5556192 */ + +/* { dg-do compile } */ + + at interface Foo +-(void) method3 __attribute__((unavailable)); + at end + +extern void func3() __attribute__((unavailable)); + +void test(Foo* obj) +{ + [obj method3]; /* { dg-error "is unavailable" } */ + + func3(); /* { dg-error "is unavailable" } */ +} Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc/execute/trivial.m URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc/execute/trivial.m?rev=43899&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/objc/execute/trivial.m (added) +++ llvm-gcc-4.2/trunk/gcc/testsuite/objc/execute/trivial.m Thu Nov 8 13:02:27 2007 @@ -0,0 +1,8 @@ +/* APPLE LOCAL file add trivial.m */ +#import + +int main(void) +{ + [Object class]; + return 0; +} From dalej at apple.com Thu Nov 8 13:21:52 2007 From: dalej at apple.com (Dale Johannesen) Date: Thu, 08 Nov 2007 19:21:52 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43900 - in /llvm-gcc-4.2/trunk/gcc/testsuite: g++.dg/gomp/ g++.dg/tree-ssa/ gcc.apple/ gcc.dg/ gcc.dg/gomp/ gcc.dg/torture/ gcc.dg/tree-ssa/ Message-ID: <200711081921.lA8JLsDE003915@zion.cs.uiuc.edu> Author: johannes Date: Thu Nov 8 13:21:51 2007 New Revision: 43900 URL: http://llvm.org/viewvc/llvm-project?rev=43900&view=rev Log: Reenable tests based on -fdump options that llvm-gcc-4.2 does support. Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-10.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-3.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-9.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/barrier-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/block-0.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/critical-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/flush-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-13.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/macro-3.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/master-3.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/ordered-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/tpl-barrier-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/tpl-master-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/block1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-3.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-4.C llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-5.C llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-maltivec-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-47.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-alloca-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-andxor-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-cond-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convnotconv-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convround-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandnot-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-even-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mod-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mulconj-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xorand-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-10.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-9.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/barrier-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/flush-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-19.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/macro-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/minmax-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20130-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-6.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr23584.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pure-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/torture/builtin-convert-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050128-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldcast-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-3.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-4.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-5.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17598.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20470.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/useless-1.c Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-10.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/atomic-10.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-10.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-10.C Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ // PR middle-end/28046 // { dg-do compile } // { dg-options "-fopenmp -fdump-tree-gimple" } -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int a[3], b; struct C { int x; int y; } c; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-3.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/atomic-3.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-3.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-3.C Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int *xyzzy; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-9.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/atomic-9.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-9.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/atomic-9.C Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ volatile int *bar(void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/barrier-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/barrier-1.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/barrier-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/barrier-1.C Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ void f1(void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/block-0.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/block-0.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/block-0.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/block-0.C Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ // { dg-do compile } // { dg-options "-fopenmp -fdump-tree-omplower" } -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ void bar(); void foo() Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/critical-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/critical-1.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/critical-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/critical-1.C Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-omplower" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/flush-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/flush-1.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/flush-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/flush-1.C Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ void f1(void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-13.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/for-13.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-13.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/for-13.C Thu Nov 8 13:21:51 2007 @@ -3,8 +3,6 @@ // { dg-do compile } // { dg-options "-fopenmp -fdump-tree-lower" } -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ extern void bar(int); void foo(void) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/macro-3.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/macro-3.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/macro-3.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/macro-3.C Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ // PR preprocessor/27746 // { dg-do compile } // { dg-options "-fopenmp -fdump-tree-omplower" } -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ #define omp FOO #define p parallel Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/master-3.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/master-3.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/master-3.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/master-3.C Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-omplower" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/ordered-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/ordered-1.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/ordered-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/ordered-1.C Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-omplower" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ extern void bar(int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/tpl-barrier-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/tpl-barrier-1.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/tpl-barrier-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/tpl-barrier-1.C Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ // PR c++/24735 // { dg-do compile } // { dg-options "-fopenmp -fdump-tree-gimple" } -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ template void f1 () { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/tpl-master-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/gomp/tpl-master-1.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/tpl-master-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/gomp/tpl-master-1.C Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ // PR c++/24734 // { dg-do compile } // { dg-options "-fopenmp -fdump-tree-gimple" } -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int i; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/block1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/block1.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/block1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/block1.C Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ // PR 13764: We were inserting an extra body block in all functions, but // it's only really necessary for [cd]tors. // { dg-options "-fdump-tree-gimple" } -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ void bar (void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/nothrow-1.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-cfg" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ /* { dg-skip-if "" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */ double a; void t() Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-3.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/pr15791-3.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-3.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-3.C Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int f(int i, unsigned j) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-4.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/pr15791-4.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-4.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-4.C Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int f(int i, int j) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-5.C URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/tree-ssa/pr15791-5.C?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-5.C (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/tree-ssa/pr15791-5.C Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int foo(int i, int j) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-1.c Thu Nov 8 13:21:51 2007 @@ -3,8 +3,6 @@ /* For 64-bit we need 64-bit headers. */ /* { dg-xfail-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */ /* { dg-options "-mcpu=G3 -O3 -finline-limit=9999 -faltivec -Wa,-force_cpusubtype_ALL -fdump-ipa-cgraph -S" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ /* Inliner should not inline AltiVec(tm) functions when -faltivec is on. */ /* Selective inlining of functions that use Altivec */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-2.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-faltivec-2.c Thu Nov 8 13:21:51 2007 @@ -3,8 +3,6 @@ /* For 64-bit we need 64-bit headers. */ /* { dg-xfail-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */ /* { dg-options "-O3 -finline-limit=9999 -faltivec -Wa,-force_cpusubtype_ALL -fdump-ipa-cgraph -S" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ /* Inliner should inline always-inline AltiVec(tm) functions when -faltivec is on. */ /* Selective inlining of functions that use Altivec */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-maltivec-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-maltivec-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-maltivec-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/altivec-maltivec-1.c Thu Nov 8 13:21:51 2007 @@ -3,8 +3,6 @@ /* For 64-bit we need 64-bit headers. */ /* { dg-xfail-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */ /* { dg-options "-O3 -finline-limit=9999 -maltivec -Wa,-force_cpusubtype_ALL -fdump-ipa-cgraph -S -faltivec" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ /* Inliner should inline AltiVec(tm) functions normally when -maltivec is on. */ /* Selective inlining of functions that use Altivec */ #include Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-47.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-47.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-47.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/builtins-47.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do run } */ /* { dg-options "-ffast-math -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ extern double sqrt (double); extern double pow (double, double); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-3.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-3.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple -fwrapv" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ #define ABS(x) (x > 0 ? x : -x) int f (int a) { return ABS (ABS(a)); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-4.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-abs-4.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple -fwrapv" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ extern float fabsf (float); extern float cabsf (_Complex float); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-alloca-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-alloca-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-alloca-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-alloca-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-useless" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ void *alloca (__SIZE_TYPE__); void link_error (); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-andxor-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-andxor-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-andxor-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-andxor-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int test1(int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-cond-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-cond-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-cond-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-cond-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ _Bool test1(int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convnotconv-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convnotconv-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convnotconv-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convnotconv-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int test1(int a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convround-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convround-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convround-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-convround-1.c Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ /* PR middle-end/28473. */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ extern double round(double); extern double floor(double); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-funsafe-math-optimizations -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ float f(float x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-2.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-div-2.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-ffinite-math-only -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ double f(double x) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandnot-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandnot-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandnot-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandnot-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int test1(int a) { return !(a & 4); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-1.c Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ /* PR middle-end/21137 */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ extern void foo(); void test1(int a) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-2.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-2.c Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ /* PR middle-end/14752 */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ void bar (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-3.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqandshift-3.c Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ /* PR middle-end/29726 */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ void foo (void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int test1(int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-2.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-2.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int test1(int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-3.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-eqxor-3.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int test1(int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-even-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-even-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-even-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-even-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int test1(int a) { return !(a & 1); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mod-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mod-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mod-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mod-1.c Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ /* { dg-do compile } */ /* { dg-require-effective-target int32plus } */ /* { dg-options "-fdump-tree-gimple -fstrict-overflow" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ #define ABS(x) (x > 0 ? x : -x) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mulconj-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mulconj-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mulconj-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-mulconj-1.c Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ /* PR tree-optimization/23452 */ /* { dg-do compile } */ /* { dg-options "-O2 -ffast-math -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ _Complex double foo(_Complex double z) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int f (int a, int b) { return ~a ^ ~b; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-2.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xor-2.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int f (int a, int b) { return ~(a ^ -(b + 1)); } Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xorand-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xorand-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xorand-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/fold-xorand-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int test1(int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-10.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-10.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-10.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-10.c Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ /* PR middle-end/28046 */ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int a[3], b; struct C { int x; int y; } c; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-3.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-3.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int *xyzzy; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-9.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-9.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-9.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/atomic-9.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ volatile int *bar(void); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/barrier-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/barrier-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/barrier-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/barrier-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ void f1(void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/flush-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/flush-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/flush-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/flush-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ void f1(void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-19.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-19.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-19.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/for-19.c Thu Nov 8 13:21:51 2007 @@ -3,8 +3,6 @@ copied to the omp_fn function. */ /* { dg-do compile } */ /* { dg-options "-O -fopenmp -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ void foo (int *a, int i, int j, int k, int l, int m) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/macro-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/macro-3.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/macro-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/macro-3.c Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ /* PR preprocessor/27746 */ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-omplower" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ #define omp FOO #define p parallel Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-1.c Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ /* PR middle-end/27388 */ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-omplower" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int n, o; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-2.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-2.c Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ /* PR middle-end/27388 */ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-omplower" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ extern void baz (int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-3.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/gomp/pr27388-3.c Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ /* PR middle-end/27388 */ /* { dg-do compile } */ /* { dg-options "-fopenmp -fdump-tree-omplower" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ extern void bar (int); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/minmax-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/minmax-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/minmax-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/minmax-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do run } */ /* { dg-options "-fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ /* Check that MIN-MAX and MAX-MIN combinations are folded. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int f (int a) { return (a << 3) << 6; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-2.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr14796-2.c Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ /* { dg-do compile } */ /* { dg-require-effective-target int32plus } */ /* { dg-options "-fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int f (int a) { return (a << 31) << 6; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fstrict-overflow -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ /* Test for folding abs(x) where appropriate. */ #define abs(x) x > 0 ? x : -x extern double fabs (double); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-2.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-2.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple -ffast-math" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ /* Test for folding abs(x) where appropriate. */ #define abs(x) x > 0 ? x : -x extern double fabs (double); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-3.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr15784-3.c Thu Nov 8 13:21:51 2007 @@ -1,8 +1,6 @@ /* { dg-do compile } */ /* SH4 without -mieee defaults to -ffinite-math-only. */ /* { dg-options "-fdump-tree-gimple -fno-finite-math-only" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ /* Test for folding abs(x) where appropriate. */ #define abs(x) x > 0 ? x : -x extern double fabs (double); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20130-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20130-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20130-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20130-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int z (int a) { return a * -1; } Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fno-wrapv -fstrict-overflow -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int f(int i) { return (i - 2) > i; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-2.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-2.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fwrapv -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int f (int i) { return (i - 2) > i; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-3.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-3.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-ffast-math -fno-wrapv -fstrict-overflow -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int f(int i) { return (i - 2) <= i; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-4.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-4.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fno-wrapv -fstrict-overflow -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int f(int i) { return i < (i - 2); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-5.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-5.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fsignaling-nans -fwrapv -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int f(int i) { return i < (i - 2); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-6.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-6.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-6.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr20922-6.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-ffast-math -fno-wrapv -fstrict-overflow -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int f(int i) { return i >= (i - 2); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr23584.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr23584.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr23584.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pr23584.c Thu Nov 8 13:21:51 2007 @@ -4,8 +4,6 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-ipa-pure-const" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int test1 (void) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pure-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pure-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pure-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/pure-1.c Thu Nov 8 13:21:51 2007 @@ -4,8 +4,6 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-ipa-pure-const" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ struct test_a { volatile int a; }; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/torture/builtin-convert-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/torture/builtin-convert-4.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/torture/builtin-convert-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/torture/builtin-convert-4.c Thu Nov 8 13:21:51 2007 @@ -9,8 +9,6 @@ /* { dg-options "-ftrapping-math -fdump-tree-original" } */ /* { dg-options "-ftrapping-math -fdump-tree-original -mmacosx-version-min=10.3" { target powerpc-*-darwin* } } */ /* { dg-options "-ftrapping-math -fdump-tree-original -std=c99" { target *-*-solaris2* } } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ #include "../builtins-config.h" Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050128-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050128-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050128-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/20050128-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int foo (int align) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ unsigned int test1(unsigned int a) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-2.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/andor-2.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int test1(int a, int b) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ char *a; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldcast-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldcast-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldcast-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldcast-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do "compile" } */ /* { dg-options "-fdump-tree-original" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ typedef int ssize_t __attribute__((mode(pointer))); ssize_t foo (ssize_t x) Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-useless" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ void arf () Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fstrict-overflow -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int g(int x) { return (x - 10) < 0; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-2.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-2.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple -fwrapv" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int g(int x) { return (x - 10) < 0; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-3.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-3.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fstrict-overflow -fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int g(int x) { return (x + 10) < 0; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-4.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr14490-4.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple -fwrapv" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int g(int x) { return (x + 10) < 0; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-3.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-3.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-3.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-3.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int f(int i, unsigned j) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-4.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-4.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-4.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-4.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int f(int i, int j) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-5.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-5.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-5.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr15791-5.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int foo(int i, int j) { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17598.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17598.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17598.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr17598.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ struct f { Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int f1(int a,int b,int c,int d) { return ((a&d)|(b&c)) ^ (b&c); Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr19055.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ int f1(int a,int b) { return (a|b) ^ b; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20470.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20470.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20470.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/pr20470.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ /* PR tree-optimization/20470: Missing fold to abs(x) when x == MINUS_EXPR. */ Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { do-go compile } */ /* { dg-options "-fdump-tree-gimple" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ typedef struct { int i; } Foo; Foo foo; Modified: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/useless-1.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/useless-1.c?rev=43900&r1=43899&r2=43900&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/useless-1.c (original) +++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.dg/tree-ssa/useless-1.c Thu Nov 8 13:21:51 2007 @@ -1,7 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-useless" } */ -/* LLVM LOCAL test not applicable */ -/* { dg-require-fdump "" } */ void foo (void) From clattner at apple.com Thu Nov 8 13:28:28 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 8 Nov 2007 11:28:28 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r43887 - in /llvm-gcc-4.2/trunk: boehm-gc/ libffi/ libjava/ libmudflap/ libobjc/ libssp/ zlib/ In-Reply-To: <16e5fdf90711081054jb3ebf5m616998cee03978bf@mail.gmail.com> References: <200711080911.lA89Btnq028616.SS566SS@zion.cs.uiuc.edu> <1194526480.10807.44.camel@asl.dorms.spbu.ru> <16e5fdf90711081054jb3ebf5m616998cee03978bf@mail.gmail.com> Message-ID: <308474D5-93CC-454C-971B-F41CBBD92662@apple.com> On Nov 8, 2007, at 10:54 AM, Bill Wendling wrote: > Hi Anton, > >>> llvm-gcc-4.2/trunk/libobjc/ >> I expect, that nobody will use objc fe on non-darwin, but anyway - >> why >> removing libobjc (and not just excluding from build)? >> > Good question. Right now, I'm just trying to sync our tree with what's > in Apple GCC 4.2's TOT. My guess is that if we don't remove some > directories, we will probably run into situations where the Makefiles > will start to build then even though we told them not to. > > I really don't have a strong opinions. For instance, we could keep it > in the repository and then ignore it like we do libstdc++-v3 (which is > also removed in their TOT). Please follow the model of libstdc++. Instead of deleting them, just make them not build on darwin (like libstdc++). Thanks Bill! -Chris From kremenek at apple.com Thu Nov 8 13:50:46 2007 From: kremenek at apple.com (Ted Kremenek) Date: Thu, 08 Nov 2007 19:50:46 -0000 Subject: [llvm-commits] [llvm] r43903 - in /llvm/trunk: include/llvm/Bitcode/Deserialize.h include/llvm/Bitcode/SerializationFwd.h include/llvm/Bitcode/Serialize.h lib/Bitcode/Reader/Deserialize.cpp lib/Bitcode/Writer/Serialize.cpp Message-ID: <200711081950.lA8JokZ1007126@zion.cs.uiuc.edu> Author: kremenek Date: Thu Nov 8 13:50:46 2007 New Revision: 43903 URL: http://llvm.org/viewvc/llvm-project?rev=43903&view=rev Log: Added typedef "SerializedPtrID" to represent the pointer handle written to disk instead of just using "unsigned". This gives us more flexibility in changing the definition of the handle later, and is more self-documenting. Added tracking of block stack in the Deserializer. Now clients can query if they are still within a block using the methods GetCurrentBlockLocation() and FinishedBlock(). Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h llvm/trunk/include/llvm/Bitcode/SerializationFwd.h llvm/trunk/include/llvm/Bitcode/Serialize.h llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp llvm/trunk/lib/Bitcode/Writer/Serialize.cpp Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Deserialize.h?rev=43903&r1=43902&r2=43903&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Deserialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Deserialize.h Thu Nov 8 13:50:46 2007 @@ -55,12 +55,12 @@ unsigned Raw; public: - BPKey(unsigned PtrId) : Raw(PtrId << 1) { assert (PtrId > 0); } + BPKey(SerializedPtrID PtrId) : Raw(PtrId << 1) { assert (PtrId > 0); } BPKey(unsigned code, unsigned) : Raw(code) {} void MarkFinal() { Raw |= 0x1; } bool hasFinalPtr() const { return Raw & 0x1 ? true : false; } - unsigned getID() const { return Raw >> 1; } + SerializedPtrID getID() const { return Raw >> 1; } static inline BPKey getEmptyKey() { return BPKey(0,0); } static inline BPKey getTombstoneKey() { return BPKey(1,0); } @@ -76,26 +76,37 @@ typedef llvm::DenseMap MapTy; //===----------------------------------------------------------===// - // Internal data members. + // Publicly visible types. //===----------------------------------------------------------===// +public: + typedef uint64_t Location; + + //===----------------------------------------------------------===// + // Internal data members. + //===----------------------------------------------------------===// + +private: BitstreamReader& Stream; SmallVector Record; unsigned RecIdx; BumpPtrAllocator Allocator; BPNode* FreeList; - MapTy BPatchMap; + MapTy BPatchMap; + llvm::SmallVector BlockLocs; //===----------------------------------------------------------===// // Public Interface. //===----------------------------------------------------------===// -public: +public: Deserializer(BitstreamReader& stream); ~Deserializer(); uint64_t ReadInt(); int64_t ReadSInt(); + SerializedPtrID ReadPtrID() { return (SerializedPtrID) ReadInt(); } + bool ReadBool() { return ReadInt() ? true : false; @@ -117,7 +128,7 @@ template inline T* ReadOwnedPtr(bool AutoRegister = true) { - unsigned PtrID = ReadInt(); + SerializedPtrID PtrID = ReadPtrID(); if (!PtrID) return NULL; @@ -139,8 +150,8 @@ void BatchReadOwnedPtrs(T1*& P1, T2*& P2, bool A1=true, bool A2=true) { - unsigned ID1 = ReadInt(); - unsigned ID2 = ReadInt(); + SerializedPtrID ID1 = ReadPtrID(); + SerializedPtrID ID2 = ReadPtrID(); P1 = (ID1) ? SerializeTrait::Materialize(*this) : NULL; if (ID1 && A1) RegisterPtr(ID1,P1); @@ -153,9 +164,9 @@ void BatchReadOwnedPtrs(T1*& P1, T2*& P2, T3*& P3, bool A1=true, bool A2=true, bool A3=true) { - unsigned ID1 = ReadInt(); - unsigned ID2 = ReadInt(); - unsigned ID3 = ReadInt(); + SerializedPtrID ID1 = ReadPtrID(); + SerializedPtrID ID2 = ReadPtrID(); + SerializedPtrID ID3 = ReadPtrID(); P1 = (ID1) ? SerializeTrait::Materialize(*this) : NULL; if (ID1 && A1) RegisterPtr(ID1,P1); @@ -170,10 +181,10 @@ template void BatchReadOwnedPtrs(unsigned NumPtrs, T** Ptrs, bool AutoRegister=true) { for (unsigned i = 0; i < NumPtrs; ++i) - reinterpret_cast(Ptrs[i]) = ReadInt(); + reinterpret_cast(Ptrs[i]) = ReadPtrID(); for (unsigned i = 0; i < NumPtrs; ++i) { - unsigned PtrID = reinterpret_cast(Ptrs[i]); + SerializedPtrID PtrID = reinterpret_cast(Ptrs[i]); T* p = PtrID ? SerializeTrait::Materialize(*this) : NULL; if (PtrID && AutoRegister) @@ -204,15 +215,28 @@ return *p; } - void RegisterPtr(unsigned PtrId, const void* Ptr); + void RegisterPtr(SerializedPtrID PtrId, const void* Ptr); void RegisterPtr(const void* Ptr) { - RegisterPtr(ReadInt(),Ptr); + RegisterPtr(ReadPtrID(),Ptr); + } + + template + void RegisterRef(const T& x) { + RegisterPtr(&x); } + template + void RegisterRef(SerializedPtrID PtrID, const T& x) { + RegisterPtr(PtrID,&x); + } + + Location GetCurrentBlockLocation(); + bool FinishedBlock(Location BlockLoc); + bool AtEnd(); - bool inRecord(); + private: void ReadRecord(); uintptr_t ReadInternalRefPtr(); Modified: llvm/trunk/include/llvm/Bitcode/SerializationFwd.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/SerializationFwd.h?rev=43903&r1=43902&r2=43903&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/SerializationFwd.h (original) +++ llvm/trunk/include/llvm/Bitcode/SerializationFwd.h Thu Nov 8 13:50:46 2007 @@ -20,6 +20,8 @@ class Deserializer; template struct SerializeTrait; +typedef unsigned SerializedPtrID; + } // end namespace llvm #endif Modified: llvm/trunk/include/llvm/Bitcode/Serialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Serialize.h?rev=43903&r1=43902&r2=43903&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Serialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Serialize.h Thu Nov 8 13:50:46 2007 @@ -93,16 +93,17 @@ for (unsigned i = 0; i < NumPtrs; ++i) if (Ptrs[i]) SerializeTrait::Emit(*this,*Ptrs[i]); } + + bool isRegistered(const void* p) const; - void FlushRecord() { if (inRecord()) EmitRecord(); } - + void FlushRecord() { if (inRecord()) EmitRecord(); } void EnterBlock(unsigned BlockID = 8, unsigned CodeLen = 3); void ExitBlock(); private: void EmitRecord(); inline bool inRecord() { return Record.size() > 0; } - unsigned getPtrId(const void* ptr); + SerializedPtrID getPtrId(const void* ptr); }; } // end namespace llvm Modified: llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp?rev=43903&r1=43902&r2=43903&view=diff ============================================================================== --- llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp (original) +++ llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp Thu Nov 8 13:50:46 2007 @@ -63,15 +63,16 @@ Code = Stream.ReadCode(); if (Code == bitc::ENTER_SUBBLOCK) { - // No known subblocks, always skip them. + BlockLocs.push_back(Stream.GetCurrentBitNo()); unsigned id = Stream.ReadSubBlockID(); Stream.EnterSubBlock(id); continue; } - if (Code == bitc::END_BLOCK) { + if (Code == bitc::END_BLOCK) { bool x = Stream.ReadBlockEnd(); assert (!x && "Error at block end."); + BlockLocs.pop_back(); continue; } @@ -88,6 +89,26 @@ assert (Record.size() > 0 || Stream.AtEndOfStream()); } +Deserializer::Location Deserializer::GetCurrentBlockLocation() { + if (!inRecord()) + ReadRecord(); + + assert (!BlockLocs.empty()); + return BlockLocs.back(); +} + +bool Deserializer::FinishedBlock(Location BlockLoc) { + if (!inRecord()) + ReadRecord(); + + for (llvm::SmallVector::reverse_iterator + I=BlockLocs.rbegin(), E=BlockLocs.rend(); I!=E; ++I) + if (*I == BlockLoc) + return false; + + return true; +} + bool Deserializer::AtEnd() { if (inRecord()) return false; @@ -159,7 +180,7 @@ } void Deserializer::ReadUIntPtr(uintptr_t& PtrRef, bool AllowBackpatch) { - unsigned PtrId = ReadInt(); + SerializedPtrID PtrId = ReadPtrID(); if (PtrId == 0) { PtrRef = 0; @@ -194,7 +215,7 @@ } uintptr_t Deserializer::ReadInternalRefPtr() { - unsigned PtrId = ReadInt(); + SerializedPtrID PtrId = ReadPtrID(); assert (PtrId != 0 && "References cannot refer the NULL address."); Modified: llvm/trunk/lib/Bitcode/Writer/Serialize.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Writer/Serialize.cpp?rev=43903&r1=43902&r2=43903&view=diff ============================================================================== --- llvm/trunk/lib/Bitcode/Writer/Serialize.cpp (original) +++ llvm/trunk/lib/Bitcode/Writer/Serialize.cpp Thu Nov 8 13:50:46 2007 @@ -14,6 +14,10 @@ #include "llvm/Bitcode/Serialize.h" #include "string.h" +#ifdef DEBUG_BACKPATCH +#include "llvm/Support/Streams.h" +#endif + using namespace llvm; Serializer::Serializer(BitstreamWriter& stream) @@ -67,15 +71,13 @@ Record.push_back(*s); ++s; } - - EmitRecord(); } void Serializer::EmitCStr(const char* s) { EmitCStr(s,s+strlen(s)); } -unsigned Serializer::getPtrId(const void* ptr) { +SerializedPtrID Serializer::getPtrId(const void* ptr) { if (!ptr) return 0; @@ -83,12 +85,20 @@ if (I == PtrMap.end()) { unsigned id = PtrMap.size()+1; +#ifdef DEBUG_BACKPATCH + llvm::cerr << "Registered PTR: " << ptr << " => " << id << "\n"; +#endif PtrMap[ptr] = id; return id; } else return I->second; } +bool Serializer::isRegistered(const void* ptr) const { + MapTy::const_iterator I = PtrMap.find(ptr); + return I != PtrMap.end(); +} + #define INT_EMIT(TYPE)\ void SerializeTrait::Emit(Serializer&S, TYPE X) { S.EmitInt(X); } From baldrick at free.fr Thu Nov 8 15:12:44 2007 From: baldrick at free.fr (Duncan Sands) Date: Thu, 08 Nov 2007 21:12:44 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43907 - in /llvm-gcc-4.2/trunk/gcc: config/i386/llvm-i386.cpp llvm-convert.cpp llvm-internal.h Message-ID: <200711082112.lA8LCia2012772@zion.cs.uiuc.edu> Author: baldrick Date: Thu Nov 8 15:12:44 2007 New Revision: 43907 URL: http://llvm.org/viewvc/llvm-project?rev=43907&view=rev Log: Pass alignment and volatility along with the address in the DestLoc parameter. Done by changing it from a Value* to a MemRef*. Fixed/improved a bunch of alignment/volatility problems/uses while there. Introduces no regressions (I didn't test tramp3d-v4 because I got tired of waiting for the testsuite to finish). Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp llvm-gcc-4.2/trunk/gcc/llvm-internal.h 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=43907&r1=43906&r2=43907&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 Nov 8 15:12:44 2007 @@ -40,7 +40,7 @@ */ bool TreeToLLVM::TargetIntrinsicLower(tree exp, unsigned FnCode, - Value *DestLoc, + const MemRef *DestLoc, Value *&Result, const Type *ResultType, std::vector &Ops) { 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=43907&r1=43906&r2=43907&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Thu Nov 8 15:12:44 2007 @@ -35,6 +35,7 @@ #include "llvm/Instructions.h" #include "llvm/Module.h" #include "llvm/Analysis/ConstantFolding.h" +#include "llvm/Support/Alignment.h" #include "llvm/Target/TargetAsmInfo.h" #include "llvm/Target/TargetData.h" #include "llvm/Target/TargetMachine.h" @@ -782,16 +783,16 @@ FOR_EACH_BB (bb) { for (block_stmt_iterator bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi)) { + MemRef DestLoc; tree stmt = bsi_stmt (bsi); - Value *DestLoc = 0; // If this stmt returns an aggregate value (e.g. a call whose result is // ignored), create a temporary to receive the value. Note that we don't // do this for MODIFY_EXPRs as an efficiency hack. - if (isAggregateTreeType(TREE_TYPE(stmt)) && TREE_CODE(stmt) != MODIFY_EXPR) - DestLoc = CreateTemporary(ConvertType(TREE_TYPE(stmt))); + if (isAggregateTreeType(TREE_TYPE(stmt)) && TREE_CODE(stmt)!= MODIFY_EXPR) + DestLoc = CreateTempLoc(ConvertType(TREE_TYPE(stmt))); - Emit(stmt, DestLoc); + Emit(stmt, DestLoc.Ptr ? &DestLoc : NULL); } FOR_EACH_EDGE (e, ei, bb->succs) @@ -807,7 +808,7 @@ return FinishFunctionBody(); } -Value *TreeToLLVM::Emit(tree exp, Value *DestLoc) { +Value *TreeToLLVM::Emit(tree exp, const MemRef *DestLoc) { assert((isAggregateTreeType(TREE_TYPE(exp)) == (DestLoc != 0) || TREE_CODE(exp) == MODIFY_EXPR) && "Didn't pass DestLoc to an aggregate expr, or passed it to scalar!"); @@ -1155,6 +1156,15 @@ return new AllocaInst(Ty, 0, "memtmp", AllocaInsertionPoint); } +/// CreateTempLoc - Like CreateTemporary, but returns a MemRef. +MemRef TreeToLLVM::CreateTempLoc(const Type *Ty) { + AllocaInst *AI = CreateTemporary(Ty); + // MemRefs do not allow alignment 0. + if (!AI->getAlignment()) + AI->setAlignment(TD.getPrefTypeAlignment(Ty)); + return MemRef(AI, AI->getAlignment(), false); +} + /// EmitBlock - Add the specified basic block to the end of the function. If /// the previous block falls through into it, add an explicit branch. void TreeToLLVM::EmitBlock(BasicBlock *BB) { @@ -1177,42 +1187,46 @@ /// CopyAggregate - Recursively traverse the potientially aggregate src/dest /// ptrs, copying all of the elements. -static void CopyAggregate(Value *DestPtr, Value *SrcPtr, - bool isDstVolatile, bool isSrcVolatile, - unsigned Alignment, LLVMBuilder &Builder) { - assert(DestPtr->getType() == SrcPtr->getType() && +static void CopyAggregate(MemRef DestLoc, MemRef SrcLoc, LLVMBuilder &Builder) { + assert(DestLoc.Ptr->getType() == SrcLoc.Ptr->getType() && "Cannot copy between two pointers of different type!"); - const Type *ElTy = cast(DestPtr->getType())->getElementType(); + const Type *ElTy = + cast(DestLoc.Ptr->getType())->getElementType(); - unsigned TypeAlign = getTargetData().getABITypeAlignment(ElTy); - Alignment = MIN(Alignment, TypeAlign); + unsigned Alignment = std::min(DestLoc.Alignment, SrcLoc.Alignment); if (ElTy->isFirstClassType()) { - LoadInst *V = Builder.CreateLoad(SrcPtr, isSrcVolatile, "tmp"); - StoreInst *S = Builder.CreateStore(V, DestPtr, isDstVolatile); + LoadInst *V = Builder.CreateLoad(SrcLoc.Ptr, SrcLoc.Volatile, "tmp"); + StoreInst *S = Builder.CreateStore(V, DestLoc.Ptr, DestLoc.Volatile); V->setAlignment(Alignment); S->setAlignment(Alignment); } else if (const StructType *STy = dyn_cast(ElTy)) { + const StructLayout *SL = getTargetData().getStructLayout(STy); Constant *Zero = ConstantInt::get(Type::Int32Ty, 0); for (unsigned i = 0, e = STy->getNumElements(); i != e; ++i) { if (isPaddingElement(STy, i)) continue; Constant *Idx = ConstantInt::get(Type::Int32Ty, i); Value *Idxs[2] = { Zero, Idx }; - Value *DElPtr = Builder.CreateGEP(DestPtr, Idxs, Idxs + 2, "tmp"); - Value *SElPtr = Builder.CreateGEP(SrcPtr, Idxs, Idxs + 2, "tmp"); - CopyAggregate(DElPtr, SElPtr, isDstVolatile, isSrcVolatile, Alignment, + Value *DElPtr = Builder.CreateGEP(DestLoc.Ptr, Idxs, Idxs + 2, "tmp"); + Value *SElPtr = Builder.CreateGEP(SrcLoc.Ptr, Idxs, Idxs + 2, "tmp"); + unsigned Align = MinAlign(Alignment, SL->getElementOffset(i)); + CopyAggregate(MemRef(DElPtr, Align, DestLoc.Volatile), + MemRef(SElPtr, Align, SrcLoc.Volatile), Builder); } } else { const ArrayType *ATy = cast(ElTy); Constant *Zero = ConstantInt::get(Type::Int32Ty, 0); + unsigned EltSize = getTargetData().getABITypeSize(ATy->getElementType()); for (unsigned i = 0, e = ATy->getNumElements(); i != e; ++i) { Constant *Idx = ConstantInt::get(Type::Int32Ty, i); Value *Idxs[2] = { Zero, Idx }; - Value *DElPtr = Builder.CreateGEP(DestPtr, Idxs, Idxs + 2, "tmp"); - Value *SElPtr = Builder.CreateGEP(SrcPtr, Idxs, Idxs + 2, "tmp"); - CopyAggregate(DElPtr, SElPtr, isDstVolatile, isSrcVolatile, Alignment, + Value *DElPtr = Builder.CreateGEP(DestLoc.Ptr, Idxs, Idxs + 2, "tmp"); + Value *SElPtr = Builder.CreateGEP(SrcLoc.Ptr, Idxs, Idxs + 2, "tmp"); + unsigned Align = MinAlign(Alignment, i * EltSize); + CopyAggregate(MemRef(DElPtr, Align, DestLoc.Volatile), + MemRef(SElPtr, Align, SrcLoc.Volatile), Builder); } } @@ -1238,12 +1252,10 @@ #define TARGET_LLVM_MIN_BYTES_COPY_BY_MEMCPY 64 #endif -/// EmitAggregateCopy - Copy the elements from SrcPtr to DestPtr, using the +/// EmitAggregateCopy - Copy the elements from SrcLoc to DestLoc, using the /// GCC type specified by GCCType to know which elements to copy. -void TreeToLLVM::EmitAggregateCopy(Value *DestPtr, Value *SrcPtr, tree type, - bool isDstVolatile, bool isSrcVolatile, - unsigned Alignment) { - if (DestPtr == SrcPtr && !isDstVolatile && !isSrcVolatile) +void TreeToLLVM::EmitAggregateCopy(MemRef DestLoc, MemRef SrcLoc, tree type) { + if (DestLoc.Ptr == SrcLoc.Ptr && !DestLoc.Volatile && !SrcLoc.Volatile) return; // noop copy. // If the type is small, copy the elements instead of using a block copy. @@ -1251,72 +1263,82 @@ TREE_INT_CST_LOW(TYPE_SIZE_UNIT(type)) < TARGET_LLVM_MIN_BYTES_COPY_BY_MEMCPY) { const Type *LLVMTy = ConvertType(type); - + // If the GCC type is not fully covered by the LLVM type, use memcpy. This // can occur with unions etc. if (!TheTypeConverter->GCCTypeOverlapsWithLLVMTypePadding(type, LLVMTy) && // Don't copy tons of tiny elements. CountAggregateElements(LLVMTy) <= 8) { - DestPtr = CastToType(Instruction::BitCast, DestPtr, - PointerType::get(LLVMTy)); - SrcPtr = CastToType(Instruction::BitCast, SrcPtr, - PointerType::get(LLVMTy)); - CopyAggregate(DestPtr, SrcPtr, isDstVolatile, isSrcVolatile, Alignment, - Builder); + DestLoc.Ptr = CastToType(Instruction::BitCast, DestLoc.Ptr, + PointerType::get(LLVMTy)); + SrcLoc.Ptr = CastToType(Instruction::BitCast, SrcLoc.Ptr, + PointerType::get(LLVMTy)); + CopyAggregate(DestLoc, SrcLoc, Builder); return; } } - + Value *TypeSize = Emit(TYPE_SIZE_UNIT(type), 0); - EmitMemCpy(DestPtr, SrcPtr, TypeSize, Alignment); + EmitMemCpy(DestLoc.Ptr, SrcLoc.Ptr, TypeSize, + std::min(DestLoc.Alignment, SrcLoc.Alignment)); } -/// ZeroAggregate - Recursively traverse the potientially aggregate dest -/// ptr, zero'ing all of the elements. -static void ZeroAggregate(Value *DestPtr, LLVMBuilder &Builder) { - const Type *ElTy = cast(DestPtr->getType())->getElementType(); +/// ZeroAggregate - Recursively traverse the potentially aggregate DestLoc, +/// zero'ing all of the elements. +static void ZeroAggregate(MemRef DestLoc, LLVMBuilder &Builder) { + const Type *ElTy = + cast(DestLoc.Ptr->getType())->getElementType(); if (ElTy->isFirstClassType()) { - Builder.CreateStore(Constant::getNullValue(ElTy), DestPtr); + StoreInst *St = Builder.CreateStore(Constant::getNullValue(ElTy), + DestLoc.Ptr, DestLoc.Volatile); + St->setAlignment(DestLoc.Alignment); } else if (const StructType *STy = dyn_cast(ElTy)) { + const StructLayout *SL = getTargetData().getStructLayout(STy); Constant *Zero = ConstantInt::get(Type::Int32Ty, 0); for (unsigned i = 0, e = STy->getNumElements(); i != e; ++i) { Constant *Idx = ConstantInt::get(Type::Int32Ty, i); Value *Idxs[2] = { Zero, Idx }; - ZeroAggregate(Builder.CreateGEP(DestPtr, Idxs, Idxs + 2, "tmp"), - Builder); + Value *Ptr = Builder.CreateGEP(DestLoc.Ptr, Idxs, Idxs + 2, "tmp"); + unsigned Alignment = MinAlign(DestLoc.Alignment, SL->getElementOffset(i)); + ZeroAggregate(MemRef(Ptr, Alignment, DestLoc.Volatile), Builder); } } else { const ArrayType *ATy = cast(ElTy); Constant *Zero = ConstantInt::get(Type::Int32Ty, 0); + unsigned EltSize = getTargetData().getABITypeSize(ATy->getElementType()); for (unsigned i = 0, e = ATy->getNumElements(); i != e; ++i) { Constant *Idx = ConstantInt::get(Type::Int32Ty, i); Value *Idxs[2] = { Zero, Idx }; - ZeroAggregate(Builder.CreateGEP(DestPtr, Idxs, Idxs + 2, "tmp"), - Builder); + Value *Ptr = Builder.CreateGEP(DestLoc.Ptr, Idxs, Idxs + 2, "tmp"); + unsigned Alignment = MinAlign(DestLoc.Alignment, i * EltSize); + ZeroAggregate(MemRef(Ptr, Alignment, DestLoc.Volatile), Builder); } } } /// EmitAggregateZero - Zero the elements of DestPtr. /// -void TreeToLLVM::EmitAggregateZero(Value *DestPtr, tree type) { +void TreeToLLVM::EmitAggregateZero(MemRef DestLoc, tree type) { // If the type is small, copy the elements instead of using a block copy. if (TREE_CODE(TYPE_SIZE(type)) == INTEGER_CST && TREE_INT_CST_LOW(TYPE_SIZE_UNIT(type)) < 128) { const Type *LLVMTy = ConvertType(type); - DestPtr = CastToType(Instruction::BitCast, DestPtr, - PointerType::get(LLVMTy)); - - // FIXME: Is this always safe? The LLVM type might theoretically have holes - // or might be suboptimal to copy this way. It may be better to copy the - // structure by the GCCType's fields. - ZeroAggregate(DestPtr, Builder); - return; + + // If the GCC type is not fully covered by the LLVM type, use memset. This + // can occur with unions etc. + if (!TheTypeConverter->GCCTypeOverlapsWithLLVMTypePadding(type, LLVMTy) && + // Don't zero tons of tiny elements. + CountAggregateElements(LLVMTy) <= 8) { + DestLoc.Ptr = CastToType(Instruction::BitCast, DestLoc.Ptr, + PointerType::get(LLVMTy)); + + ZeroAggregate(DestLoc, Builder); + return; + } } - unsigned Alignment = TYPE_ALIGN_OK(type) ? (TYPE_ALIGN_UNIT(type) & ~0U) : 0; - EmitMemSet(DestPtr, ConstantInt::get(Type::Int8Ty, 0), - Emit(TYPE_SIZE_UNIT(type), 0), Alignment); + EmitMemSet(DestLoc.Ptr, ConstantInt::get(Type::Int8Ty, 0), + Emit(TYPE_SIZE_UNIT(type), 0), DestLoc.Alignment); } void TreeToLLVM::EmitMemCpy(Value *DestPtr, Value *SrcPtr, Value *Size, @@ -1652,16 +1674,16 @@ } -Value *TreeToLLVM::EmitRETURN_EXPR(tree exp, Value *DestLoc) { +Value *TreeToLLVM::EmitRETURN_EXPR(tree exp, const MemRef *DestLoc) { assert(DestLoc == 0 && "Does not return a value!"); if (TREE_OPERAND(exp, 0)) { // Emit the expression, including the assignment to RESULT_DECL. If the // operand is an aggregate value, create a temporary to evaluate it into. - Value *DestLoc = 0; + MemRef DestLoc; const Type *DestTy = ConvertType(TREE_TYPE(TREE_OPERAND(exp, 0))); if (!DestTy->isFirstClassType() && TREE_CODE(exp) != MODIFY_EXPR) - DestLoc = CreateTemporary(DestTy); - Emit(TREE_OPERAND(exp, 0), DestLoc); + DestLoc = CreateTempLoc(DestTy); + Emit(TREE_OPERAND(exp, 0), DestLoc.Ptr ? &DestLoc : NULL); } // Emit a branch to the exit label. @@ -2047,7 +2069,7 @@ /// EmitLoadOfLValue - When an l-value expression is used in a context that /// requires an r-value, this method emits the lvalue computation, then loads /// the result. -Value *TreeToLLVM::EmitLoadOfLValue(tree exp, Value *DestLoc) { +Value *TreeToLLVM::EmitLoadOfLValue(tree exp, const MemRef *DestLoc) { // If this is an SSA value, don't emit a load, just use the result. if (isGCC_SSA_Temporary(exp)) { assert(DECL_LLVM_SET_P(exp) && "Definition not found before use!"); @@ -2074,8 +2096,8 @@ LI->setAlignment(Alignment); return LI; } else { - EmitAggregateCopy(DestLoc, LV.Ptr, TREE_TYPE(exp), false, isVolatile, - Alignment); + EmitAggregateCopy(*DestLoc, MemRef(LV.Ptr, Alignment, isVolatile), + TREE_TYPE(exp)); return 0; } } else { @@ -2136,7 +2158,7 @@ ConvertType(TREE_TYPE(exp))); } -Value *TreeToLLVM::EmitCALL_EXPR(tree exp, Value *DestLoc) { +Value *TreeToLLVM::EmitCALL_EXPR(tree exp, const MemRef *DestLoc) { // Check for a built-in function call. If we can lower it directly, do so // now. tree fndecl = get_callee_fndecl(exp); @@ -2188,12 +2210,12 @@ CallingConv::ID &CallingConvention; bool isStructRet; LLVMBuilder &Builder; - Value *DestLoc; + const MemRef *DestLoc; std::vector LocStack; FunctionCallArgumentConversion(tree exp, SmallVector &ops, CallingConv::ID &cc, - LLVMBuilder &b, Value *destloc) + LLVMBuilder &b, const MemRef *destloc) : CallExpression(exp), CallOperands(ops), CallingConvention(cc), Builder(b), DestLoc(destloc) { CallingConvention = CallingConv::C; @@ -2245,16 +2267,20 @@ bool RetPtr) { // Make sure this call is marked as 'struct return'. isStructRet = true; - + // We need to pass a buffer to return into. If the caller uses the // result, DestLoc will be set. If it ignores it, it could be unset, // in which case we need to create a dummy buffer. - if (DestLoc == 0) - DestLoc = TheTreeToLLVM->CreateTemporary(PtrArgTy->getElementType()); - else - assert(PtrArgTy == DestLoc->getType()); - CallOperands.push_back(DestLoc); - } + // FIXME: The alignment and volatility of the buffer are being ignored! + Value *DestPtr; + if (DestLoc == 0) { + DestPtr = TheTreeToLLVM->CreateTemporary(PtrArgTy->getElementType()); + } else { + DestPtr = DestLoc->Ptr; + assert(PtrArgTy == DestPtr->getType()); + } + CallOperands.push_back(DestPtr); + } void HandleScalarArgument(const llvm::Type *LLVMTy, tree type) { assert(!LocStack.empty()); @@ -2286,7 +2312,7 @@ /// EmitCallOf - Emit a call to the specified callee with the operands specified /// in the CALL_EXP 'exp'. If the result of the call is a scalar, return the /// result, otherwise store it in DestLoc. -Value *TreeToLLVM::EmitCallOf(Value *Callee, tree exp, Value *DestLoc) { +Value *TreeToLLVM::EmitCallOf(Value *Callee, tree exp, const MemRef *DestLoc) { // Determine if we need to generate an invoke instruction (instead of a simple // call) and if so, what the exception destination will be. BasicBlock *LandingPad = 0; @@ -2417,8 +2443,9 @@ if (!DestLoc) return Call; // Normal scalar return. - DestLoc = BitCastToType(DestLoc, PointerType::get(Call->getType())); - Builder.CreateStore(Call, DestLoc); + Value *Ptr = BitCastToType(DestLoc->Ptr, PointerType::get(Call->getType())); + StoreInst *St = Builder.CreateStore(Call, Ptr, DestLoc->Volatile); + St->setAlignment(DestLoc->Alignment); return 0; } @@ -2483,7 +2510,7 @@ /// EmitMODIFY_EXPR - Note that MODIFY_EXPRs are rvalues only! /// -Value *TreeToLLVM::EmitMODIFY_EXPR(tree exp, Value *DestLoc) { +Value *TreeToLLVM::EmitMODIFY_EXPR(tree exp, const MemRef *DestLoc) { // If this is the definition of an SSA variable, set its DECL_LLVM to the // RHS. bool Op0Signed = !TYPE_UNSIGNED(TREE_TYPE(TREE_OPERAND(exp, 0))); @@ -2536,27 +2563,21 @@ } // Non-bitfield aggregate value. + MemRef NewLoc(LV.Ptr, Alignment, isVolatile); + if (DestLoc) { - Emit(TREE_OPERAND(exp, 1), LV.Ptr); - EmitAggregateCopy(DestLoc, LV.Ptr, TREE_TYPE(exp), isVolatile, false, - Alignment); - } else if (!isVolatile && TREE_CODE(TREE_OPERAND(exp, 0))!=RESULT_DECL) { - Emit(TREE_OPERAND(exp, 1), LV.Ptr); + Emit(TREE_OPERAND(exp, 1), &NewLoc); + EmitAggregateCopy(*DestLoc, NewLoc, TREE_TYPE(exp)); + } else if (TREE_CODE(TREE_OPERAND(exp, 0)) != RESULT_DECL) { + Emit(TREE_OPERAND(exp, 1), &NewLoc); } else { - // Need to do a volatile store into TREE_OPERAND(exp, 1). To do this, we - // emit it into a temporary memory location, then do a volatile copy into - // the real destination. This is probably suboptimal in some cases, but - // it gets the volatile memory access right. It would be better if the - // destloc pointer of 'Emit' had a flag that indicated it should be - // volatile. // We do this for stores into RESULT_DECL because it is possible for that // memory area to overlap with the object being stored into it; see // gcc.c-torture/execute/20010124-1.c. - Value *Tmp = CreateTemporary(ConvertType(TREE_TYPE(TREE_OPERAND(exp,1)))); - Emit(TREE_OPERAND(exp, 1), Tmp); - EmitAggregateCopy(LV.Ptr, Tmp, TREE_TYPE(TREE_OPERAND(exp,1)), - isVolatile, false, Alignment); + MemRef Tmp = CreateTempLoc(ConvertType(TREE_TYPE(TREE_OPERAND(exp,1)))); + Emit(TREE_OPERAND(exp, 1), &Tmp); + EmitAggregateCopy(NewLoc, Tmp, TREE_TYPE(TREE_OPERAND(exp,1))); } return 0; } @@ -2599,7 +2620,7 @@ return RetVal; } -Value *TreeToLLVM::EmitNOP_EXPR(tree exp, Value *DestLoc) { +Value *TreeToLLVM::EmitNOP_EXPR(tree exp, const MemRef *DestLoc) { if (TREE_CODE(TREE_TYPE(exp)) == VOID_TYPE && // deleted statement. TREE_CODE(TREE_OPERAND(exp, 0)) == INTEGER_CST) return 0; @@ -2616,21 +2637,24 @@ return CastToAnyType(OpVal, OpIsSigned, Ty, ExpIsSigned); } else if (isAggregateTreeType(TREE_TYPE(Op))) { // Aggregate to aggregate copy. - DestLoc = CastToType(Instruction::BitCast, DestLoc, PointerType::get(Ty)); - Value *OpVal = Emit(Op, DestLoc); + MemRef NewLoc = *DestLoc; + NewLoc.Ptr = + CastToType(Instruction::BitCast, DestLoc->Ptr, PointerType::get(Ty)); + Value *OpVal = Emit(Op, &NewLoc); assert(OpVal == 0 && "Shouldn't cast scalar to aggregate!"); return 0; } // Scalar to aggregate copy. Value *OpVal = Emit(Op, 0); - DestLoc = CastToType(Instruction::BitCast, DestLoc, - PointerType::get(OpVal->getType())); - Builder.CreateStore(OpVal, DestLoc); + Value *Ptr = CastToType(Instruction::BitCast, DestLoc->Ptr, + PointerType::get(OpVal->getType())); + StoreInst *St = Builder.CreateStore(OpVal, Ptr, DestLoc->Volatile); + St->setAlignment(DestLoc->Alignment); return 0; } -Value *TreeToLLVM::EmitCONVERT_EXPR(tree exp, Value *DestLoc) { +Value *TreeToLLVM::EmitCONVERT_EXPR(tree exp, const MemRef *DestLoc) { assert(!DestLoc && "Cannot handle aggregate casts!"); Value *Op = Emit(TREE_OPERAND(exp, 0), 0); bool OpIsSigned = !TYPE_UNSIGNED(TREE_TYPE(TREE_OPERAND(exp, 0))); @@ -2638,21 +2662,26 @@ return CastToAnyType(Op, OpIsSigned, ConvertType(TREE_TYPE(exp)),ExpIsSigned); } -Value *TreeToLLVM::EmitVIEW_CONVERT_EXPR(tree exp, Value *DestLoc) { +Value *TreeToLLVM::EmitVIEW_CONVERT_EXPR(tree exp, const MemRef *DestLoc) { tree Op = TREE_OPERAND(exp, 0); if (isAggregateTreeType(TREE_TYPE(Op))) { const Type *OpTy = ConvertType(TREE_TYPE(Op)); - Value *Target = DestLoc ? + MemRef Target; + if (DestLoc) { // This is an aggregate-to-agg VIEW_CONVERT_EXPR, just evaluate in place. - CastToType(Instruction::BitCast, DestLoc, PointerType::get(OpTy)) : + Target = *DestLoc; + Target.Ptr = + CastToType(Instruction::BitCast, DestLoc->Ptr, PointerType::get(OpTy)); + } else { // This is an aggregate-to-scalar VIEW_CONVERT_EXPR, evaluate, then load. - CreateTemporary(OpTy); + Target = CreateTempLoc(OpTy); + } // Needs to be in sync with EmitLV. switch (TREE_CODE(Op)) { default: { - Value *OpVal = Emit(Op, Target); + Value *OpVal = Emit(Op, &Target); assert(OpVal == 0 && "Expected an aggregate operand!"); break; } @@ -2676,16 +2705,17 @@ bool isVolatile = TREE_THIS_VOLATILE(Op); unsigned Alignment = expr_align(Op) / 8; - EmitAggregateCopy(Target, LV.Ptr, TREE_TYPE(exp), false, isVolatile, - Alignment); + EmitAggregateCopy(Target, MemRef(LV.Ptr, Alignment, isVolatile), + TREE_TYPE(exp)); break; } if (DestLoc) return 0; + // Target holds the temporary created above. const Type *ExpTy = ConvertType(TREE_TYPE(exp)); - return Builder.CreateLoad(CastToType(Instruction::BitCast, Target, + return Builder.CreateLoad(CastToType(Instruction::BitCast, Target.Ptr, PointerType::get(ExpTy)), "tmp"); } @@ -2694,9 +2724,10 @@ // then store into DestLoc. Value *OpVal = Emit(Op, 0); assert(OpVal && "Expected a scalar result!"); - DestLoc = CastToType(Instruction::BitCast, DestLoc, - PointerType::get(OpVal->getType())); - Builder.CreateStore(OpVal, DestLoc); + Value *Ptr = CastToType(Instruction::BitCast, DestLoc->Ptr, + PointerType::get(OpVal->getType())); + StoreInst *St = Builder.CreateStore(OpVal, Ptr, DestLoc->Volatile); + St->setAlignment(DestLoc->Alignment); return 0; } @@ -2722,7 +2753,7 @@ return Builder.CreateBitCast(OpVal, DestTy, "tmp"); } -Value *TreeToLLVM::EmitNEGATE_EXPR(tree exp, Value *DestLoc) { +Value *TreeToLLVM::EmitNEGATE_EXPR(tree exp, const MemRef *DestLoc) { if (!DestLoc) { Value *V = Emit(TREE_OPERAND(exp, 0), 0); if (!isa(V->getType())) @@ -2736,31 +2767,33 @@ } // Emit the operand to a temporary. - const Type *ComplexTy=cast(DestLoc->getType())->getElementType(); - Value *Tmp = CreateTemporary(ComplexTy); - Emit(TREE_OPERAND(exp, 0), Tmp); + const Type *ComplexTy = + cast(DestLoc->Ptr->getType())->getElementType(); + MemRef Tmp = CreateTempLoc(ComplexTy); + Emit(TREE_OPERAND(exp, 0), &Tmp); // Handle complex numbers: -(a+ib) = -a + i*-b Value *R, *I; - EmitLoadFromComplex(R, I, Tmp, TREE_THIS_VOLATILE(TREE_OPERAND(exp, 0))); + EmitLoadFromComplex(R, I, Tmp); R = Builder.CreateNeg(R, "tmp"); I = Builder.CreateNeg(I, "tmp"); - EmitStoreToComplex(DestLoc, R, I, false); + EmitStoreToComplex(*DestLoc, R, I); return 0; } -Value *TreeToLLVM::EmitCONJ_EXPR(tree exp, Value *DestLoc) { +Value *TreeToLLVM::EmitCONJ_EXPR(tree exp, const MemRef *DestLoc) { assert(DestLoc && "CONJ_EXPR only applies to complex numbers."); // Emit the operand to a temporary. - const Type *ComplexTy=cast(DestLoc->getType())->getElementType(); - Value *Tmp = CreateTemporary(ComplexTy); - Emit(TREE_OPERAND(exp, 0), Tmp); - + const Type *ComplexTy = + cast(DestLoc->Ptr->getType())->getElementType(); + MemRef Tmp = CreateTempLoc(ComplexTy); + Emit(TREE_OPERAND(exp, 0), &Tmp); + // Handle complex numbers: ~(a+ib) = a + i*-b Value *R, *I; - EmitLoadFromComplex(R, I, Tmp, TREE_THIS_VOLATILE(TREE_OPERAND(exp, 0))); + EmitLoadFromComplex(R, I, Tmp); I = Builder.CreateNeg(I, "tmp"); - EmitStoreToComplex(DestLoc, R, I, false); + EmitStoreToComplex(*DestLoc, R, I); return 0; } @@ -2841,7 +2874,7 @@ /// EmitBinOp - 'exp' is a binary operator. /// -Value *TreeToLLVM::EmitBinOp(tree exp, Value *DestLoc, unsigned Opc) { +Value *TreeToLLVM::EmitBinOp(tree exp, const MemRef *DestLoc, unsigned Opc) { const Type *Ty = ConvertType(TREE_TYPE(exp)); if (isa(Ty)) return EmitPtrBinOp(exp, Opc); // Pointer arithmetic! @@ -2876,7 +2909,7 @@ TREE_CODE(TREE_OPERAND(exp, 1)) == INTEGER_CST) { int64_t Offset = getINTEGER_CSTVal(TREE_OPERAND(exp, 1)); - // If POINTER_SIZE is 32-bits and the offset is signed, sign extend the offset. + // If POINTER_SIZE is 32-bits and the offset is signed, sign extend it. if (POINTER_SIZE == 32 && !TYPE_UNSIGNED(TREE_TYPE(TREE_OPERAND(exp, 1)))) Offset = (Offset << 32) >> 32; @@ -2932,7 +2965,7 @@ } -Value *TreeToLLVM::EmitShiftOp(tree exp, Value *DestLoc, unsigned Opc) { +Value *TreeToLLVM::EmitShiftOp(tree exp, const MemRef *DestLoc, unsigned Opc) { assert(DestLoc == 0 && "aggregate shift?"); const Type *Ty = ConvertType(TREE_TYPE(exp)); assert(!isa(Ty) && "Pointer arithmetic!?"); @@ -2998,7 +3031,7 @@ TREE_CODE(exp) == MAX_EXPR ? "max" : "min"); } -Value *TreeToLLVM::EmitEXACT_DIV_EXPR(tree exp, Value *DestLoc) { +Value *TreeToLLVM::EmitEXACT_DIV_EXPR(tree exp, const MemRef *DestLoc) { // Unsigned EXACT_DIV_EXPR -> normal udiv. if (TYPE_UNSIGNED(TREE_TYPE(exp))) return EmitBinOp(exp, DestLoc, Instruction::UDiv); @@ -3022,7 +3055,7 @@ return EmitBinOp(exp, DestLoc, Instruction::SDiv); } -Value *TreeToLLVM::EmitFLOOR_MOD_EXPR(tree exp, Value *DestLoc) { +Value *TreeToLLVM::EmitFLOOR_MOD_EXPR(tree exp, const MemRef *DestLoc) { // Notation: FLOOR_MOD_EXPR <-> Mod, TRUNC_MOD_EXPR <-> Rem. // We express Mod in terms of Rem as follows: if RHS exactly divides LHS, @@ -3255,7 +3288,8 @@ /// Reads from register variables are handled by emitting an inline asm node /// that copies the value out of the specified register. -Value *TreeToLLVM::EmitReadOfRegisterVariable(tree decl, Value *DestLoc) { +Value *TreeToLLVM::EmitReadOfRegisterVariable(tree decl, + const MemRef *DestLoc) { const Type *Ty = ConvertType(TREE_TYPE(decl)); // If there was an error, return something bogus. @@ -3810,7 +3844,8 @@ /// This method returns true if the builtin is handled, otherwise false. /// bool TreeToLLVM::EmitFrontendExpandedBuiltinCall(tree exp, tree fndecl, - Value *DestLoc,Value *&Result){ + const MemRef *DestLoc, + Value *&Result) { #ifdef LLVM_TARGET_INTRINSIC_LOWER // Get the result type and oeprand line in an easy to consume format. const Type *ResultType = ConvertType(TREE_TYPE(TREE_TYPE(fndecl))); @@ -3837,7 +3872,7 @@ /// the call in a special way, setting Result to the scalar result if necessary. /// If we can't handle the builtin, return false, otherwise return true. bool TreeToLLVM::EmitBuiltinCall(tree exp, tree fndecl, - Value *DestLoc, Value *&Result) { + const MemRef *DestLoc, Value *&Result) { if (DECL_BUILT_IN_CLASS(fndecl) == BUILT_IN_MD) { unsigned FnCode = DECL_FUNCTION_CODE(fndecl); if (TargetBuiltinCache.size() <= FnCode) @@ -4475,7 +4510,8 @@ return true; } -bool TreeToLLVM::EmitBuiltinExpect(tree exp, Value *DestLoc, Value *&Result) { +bool TreeToLLVM::EmitBuiltinExpect(tree exp, const MemRef *DestLoc, + Value *&Result) { // Ignore the hint for now, just expand the expr. This is safe, but not // optimal. tree arglist = TREE_OPERAND(exp, 1); @@ -4541,16 +4577,18 @@ // If the target has aggregate valists, emit the srcval directly into a // temporary. const Type *VAListTy = cast(Arg1->getType())->getElementType(); - Arg2 = CreateTemporary(VAListTy); - Emit(Arg2T, Arg2); + MemRef DestLoc = CreateTempLoc(VAListTy); + Emit(Arg2T, &DestLoc); + Arg2 = DestLoc.Ptr; } - + static const Type *VPTy = PointerType::get(Type::Int8Ty); + // FIXME: This ignores alignment and volatility of the arguments. SmallVector Args; Args.push_back(CastToType(Instruction::BitCast, Arg1, VPTy)); Args.push_back(CastToType(Instruction::BitCast, Arg2, VPTy)); - + Builder.CreateCall(Intrinsic::getDeclaration(TheModule, Intrinsic::vacopy), Args.begin(), Args.end()); return true; @@ -4586,63 +4624,70 @@ //===----------------------------------------------------------------------===// void TreeToLLVM::EmitLoadFromComplex(Value *&Real, Value *&Imag, - Value *SrcComplex, bool isVolatile) { + MemRef SrcComplex) { Value *I0 = ConstantInt::get(Type::Int32Ty, 0); Value *I1 = ConstantInt::get(Type::Int32Ty, 1); Value *Idxs[2] = { I0, I0 }; - Value *RealPtr = Builder.CreateGEP(SrcComplex, Idxs, Idxs + 2, "real"); - Real = Builder.CreateLoad(RealPtr, isVolatile, "real"); + Value *RealPtr = Builder.CreateGEP(SrcComplex.Ptr, Idxs, Idxs + 2, "real"); + Real = Builder.CreateLoad(RealPtr, SrcComplex.Volatile, "real"); + cast(Real)->setAlignment(SrcComplex.Alignment); Idxs[1] = I1; - Value *ImagPtr = Builder.CreateGEP(SrcComplex, Idxs, Idxs + 2, "real"); - Imag = Builder.CreateLoad(ImagPtr, isVolatile, "imag"); + Value *ImagPtr = Builder.CreateGEP(SrcComplex.Ptr, Idxs, Idxs + 2, "real"); + Imag = Builder.CreateLoad(ImagPtr, SrcComplex.Volatile, "imag"); + cast(Imag)->setAlignment( + MinAlign(SrcComplex.Alignment, TD.getABITypeSize(Real->getType())) + ); } -void TreeToLLVM::EmitStoreToComplex(Value *DestComplex, Value *Real, - Value *Imag, bool isVolatile) { +void TreeToLLVM::EmitStoreToComplex(MemRef DestComplex, Value *Real, + Value *Imag) { Value *I0 = ConstantInt::get(Type::Int32Ty, 0); Value *I1 = ConstantInt::get(Type::Int32Ty, 1); Value *Idxs[2] = { I0, I0 }; + StoreInst *St; - Value *RealPtr = Builder.CreateGEP(DestComplex, Idxs, Idxs + 2, "real"); - Builder.CreateStore(Real, RealPtr, isVolatile); + Value *RealPtr = Builder.CreateGEP(DestComplex.Ptr, Idxs, Idxs + 2, "real"); + St = Builder.CreateStore(Real, RealPtr, DestComplex.Volatile); + St->setAlignment(DestComplex.Alignment); Idxs[1] = I1; - Value *ImagPtr = Builder.CreateGEP(DestComplex, Idxs, Idxs + 2, "real"); - Builder.CreateStore(Imag, ImagPtr, isVolatile); + Value *ImagPtr = Builder.CreateGEP(DestComplex.Ptr, Idxs, Idxs + 2, "real"); + St = Builder.CreateStore(Imag, ImagPtr, DestComplex.Volatile); + St->setAlignment( + MinAlign(DestComplex.Alignment, TD.getABITypeSize(Real->getType())) + ); } -void TreeToLLVM::EmitCOMPLEX_EXPR(tree exp, Value *DestLoc) { +void TreeToLLVM::EmitCOMPLEX_EXPR(tree exp, const MemRef *DestLoc) { Value *Real = Emit(TREE_OPERAND(exp, 0), 0); Value *Imag = Emit(TREE_OPERAND(exp, 1), 0); - EmitStoreToComplex(DestLoc, Real, Imag, false); + EmitStoreToComplex(*DestLoc, Real, Imag); } -void TreeToLLVM::EmitCOMPLEX_CST(tree exp, Value *DestLoc) { +void TreeToLLVM::EmitCOMPLEX_CST(tree exp, const MemRef *DestLoc) { Value *Real = Emit(TREE_REALPART(exp), 0); Value *Imag = Emit(TREE_IMAGPART(exp), 0); - EmitStoreToComplex(DestLoc, Real, Imag, false); + EmitStoreToComplex(*DestLoc, Real, Imag); } // EmitComplexBinOp - Note that this operands on binops like ==/!=, which return // a bool, not a complex value. -Value *TreeToLLVM::EmitComplexBinOp(tree exp, Value *DestLoc) { +Value *TreeToLLVM::EmitComplexBinOp(tree exp, const MemRef *DestLoc) { const Type *ComplexTy = ConvertType(TREE_TYPE(TREE_OPERAND(exp, 0))); - - Value *LHSTmp = CreateTemporary(ComplexTy); - Value *RHSTmp = CreateTemporary(ComplexTy); - Emit(TREE_OPERAND(exp, 0), LHSTmp); - Emit(TREE_OPERAND(exp, 1), RHSTmp); - + + MemRef LHSTmp = CreateTempLoc(ComplexTy); + MemRef RHSTmp = CreateTempLoc(ComplexTy); + Emit(TREE_OPERAND(exp, 0), &LHSTmp); + Emit(TREE_OPERAND(exp, 1), &RHSTmp); + Value *LHSr, *LHSi; - EmitLoadFromComplex(LHSr, LHSi, LHSTmp, - TREE_THIS_VOLATILE(TREE_OPERAND(exp, 0))); + EmitLoadFromComplex(LHSr, LHSi, LHSTmp); Value *RHSr, *RHSi; - EmitLoadFromComplex(RHSr, RHSi, RHSTmp, - TREE_THIS_VOLATILE(TREE_OPERAND(exp, 1))); - + EmitLoadFromComplex(RHSr, RHSi, RHSTmp); + Value *DSTr, *DSTi; switch (TREE_CODE(exp)) { default: TODO(exp); @@ -4700,8 +4745,8 @@ } return Builder.CreateOr(DSTr, DSTi, "tmp"); } - - EmitStoreToComplex(DestLoc, DSTr, DSTi, false); + + EmitStoreToComplex(*DestLoc, DSTr, DSTi); return 0; } @@ -5104,7 +5149,7 @@ /// EmitCONSTRUCTOR - emit the constructor into the location specified by /// DestLoc. -Value *TreeToLLVM::EmitCONSTRUCTOR(tree exp, Value *DestLoc) { +Value *TreeToLLVM::EmitCONSTRUCTOR(tree exp, const MemRef *DestLoc) { tree type = TREE_TYPE(exp); const Type *Ty = ConvertType(type); if (const VectorType *PTy = dyn_cast(Ty)) { @@ -5135,7 +5180,7 @@ assert(!Ty->isFirstClassType() && "Constructor for scalar type??"); // Start out with the value zero'd out. - EmitAggregateZero(DestLoc, type); + EmitAggregateZero(*DestLoc, type); VEC(constructor_elt, gc) *elt = CONSTRUCTOR_ELTS(exp); switch (TREE_CODE(TREE_TYPE(exp))) { @@ -5165,9 +5210,10 @@ } else { // Scalar value. Evaluate to a register, then do the store. Value *V = Emit(tree_value, 0); - DestLoc = CastToType(Instruction::BitCast, DestLoc, - PointerType::get(V->getType())); - Builder.CreateStore(V, DestLoc); + Value *Ptr = CastToType(Instruction::BitCast, DestLoc->Ptr, + PointerType::get(V->getType())); + StoreInst *St = Builder.CreateStore(V, Ptr, DestLoc->Volatile); + St->setAlignment(DestLoc->Alignment); } break; } Modified: llvm-gcc-4.2/trunk/gcc/llvm-internal.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-internal.h?rev=43907&r1=43906&r2=43907&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-internal.h (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-internal.h Thu Nov 8 15:12:44 2007 @@ -218,6 +218,21 @@ /// false. bool ValidateRegisterVariable(tree_node *decl); +/// MemRef - This struct holds the information needed for a memory access: +/// a pointer to the memory, its alignment and whether the access is volatile. +struct MemRef { + Value *Ptr; + unsigned Alignment; + bool Volatile; + + MemRef() : Ptr(0), Alignment(0), Volatile(false) {} + MemRef(Value *P, unsigned A, bool V) + : Ptr(P), Alignment(A), Volatile(V) { + // Allowing alignment 0 would complicate calculations, so forbid it. + assert(A && !(A & (A - 1)) && "Alignment not a power of 2!"); + } +}; + /// LValue - This struct represents an lvalue in the program. In particular, /// the Ptr member indicates the memory that the lvalue lives in. If this is /// a bitfield reference, BitStart indicates the first bit in the memory that @@ -359,7 +374,7 @@ /// inserting it into the entry block and returning it. The resulting /// instruction's type is a pointer to the specified type. AllocaInst *CreateTemporary(const Type *Ty); - + private: // Helper functions. /// StartFunctionBody - Start the emission of 'fndecl', outputing all @@ -374,20 +389,19 @@ /// expression that fits into an LLVM scalar value, the result is returned. If /// the result is an aggregate, it is stored into the location specified by /// DestLoc. - Value *Emit(tree_node *exp, Value *DestLoc); + Value *Emit(tree_node *exp, const MemRef *DestLoc); /// EmitBlock - Add the specified basic block to the end of the function. If /// the previous block falls through into it, add an explicit branch. void EmitBlock(BasicBlock *BB); - /// EmitAggregateCopy - Copy the elements from SrcPtr to DestPtr, using the + /// EmitAggregateCopy - Copy the elements from SrcLoc to DestLoc, using the /// GCC type specified by GCCType to know which elements to copy. - void EmitAggregateCopy(Value *DestPtr, Value *SrcPtr, tree_node *GCCType, - bool isDstVolatile, bool isSrcVolatile, - unsigned Alignment); + void EmitAggregateCopy(MemRef DestLoc, MemRef SrcLoc, tree_node *GCCType); + /// EmitAggregateZero - Zero the elements of DestPtr. /// - void EmitAggregateZero(Value *DestPtr, tree_node *GCCType); + void EmitAggregateZero(MemRef DestLoc, tree_node *GCCType); /// EmitMemCpy/EmitMemMove/EmitMemSet - Emit an llvm.memcpy/llvm.memmove or /// llvm.memset call with the specified operands. @@ -415,8 +429,11 @@ BasicBlock *getPostPad(unsigned RegionNo); private: + /// CreateTempLoc - Like CreateTemporary, but returns a MemRef. + MemRef CreateTempLoc(const Type *Ty); + void EmitAutomaticVariableDecl(tree_node *decl); - + /// isNoopCast - Return true if a cast from V to Ty does not change any bits. /// static bool isNoopCast(Value *V, const Type *Ty); @@ -436,37 +453,37 @@ // Control flow. Value *EmitLABEL_EXPR(tree_node *exp); Value *EmitGOTO_EXPR(tree_node *exp); - Value *EmitRETURN_EXPR(tree_node *exp, Value *DestLoc); + Value *EmitRETURN_EXPR(tree_node *exp, const MemRef *DestLoc); Value *EmitCOND_EXPR(tree_node *exp); Value *EmitSWITCH_EXPR(tree_node *exp); // Expressions. - Value *EmitLoadOfLValue(tree_node *exp, Value *DestLoc); - Value *EmitOBJ_TYPE_REF(tree_node *exp, Value *DestLoc); + Value *EmitLoadOfLValue(tree_node *exp, const MemRef *DestLoc); + Value *EmitOBJ_TYPE_REF(tree_node *exp, const MemRef *DestLoc); Value *EmitADDR_EXPR(tree_node *exp); Value *EmitOBJ_TYPE_REF(tree_node *exp); - Value *EmitCALL_EXPR(tree_node *exp, Value *DestLoc); - Value *EmitCallOf(Value *Callee, tree_node *exp, Value *DestLoc); - Value *EmitMODIFY_EXPR(tree_node *exp, Value *DestLoc); - Value *EmitNOP_EXPR(tree_node *exp, Value *DestLoc); - Value *EmitCONVERT_EXPR(tree_node *exp, Value *DestLoc); - Value *EmitVIEW_CONVERT_EXPR(tree_node *exp, Value *DestLoc); - Value *EmitNEGATE_EXPR(tree_node *exp, Value *DestLoc); - Value *EmitCONJ_EXPR(tree_node *exp, Value *DestLoc); + Value *EmitCALL_EXPR(tree_node *exp, const MemRef *DestLoc); + Value *EmitCallOf(Value *Callee, tree_node *exp, const MemRef *DestLoc); + Value *EmitMODIFY_EXPR(tree_node *exp, const MemRef *DestLoc); + Value *EmitNOP_EXPR(tree_node *exp, const MemRef *DestLoc); + Value *EmitCONVERT_EXPR(tree_node *exp, const MemRef *DestLoc); + Value *EmitVIEW_CONVERT_EXPR(tree_node *exp, const MemRef *DestLoc); + Value *EmitNEGATE_EXPR(tree_node *exp, const MemRef *DestLoc); + Value *EmitCONJ_EXPR(tree_node *exp, const MemRef *DestLoc); Value *EmitABS_EXPR(tree_node *exp); Value *EmitBIT_NOT_EXPR(tree_node *exp); Value *EmitTRUTH_NOT_EXPR(tree_node *exp); - Value *EmitEXACT_DIV_EXPR(tree_node *exp, Value *DestLoc); + Value *EmitEXACT_DIV_EXPR(tree_node *exp, const MemRef *DestLoc); Value *EmitCompare(tree_node *exp, unsigned UIPred, unsigned SIPred, unsigned FPOpc); - Value *EmitBinOp(tree_node *exp, Value *DestLoc, unsigned Opc); + Value *EmitBinOp(tree_node *exp, const MemRef *DestLoc, unsigned Opc); Value *EmitPtrBinOp(tree_node *exp, unsigned Opc); Value *EmitTruthOp(tree_node *exp, unsigned Opc); - Value *EmitShiftOp(tree_node *exp, Value *DestLoc, unsigned Opc); + Value *EmitShiftOp(tree_node *exp, const MemRef *DestLoc, unsigned Opc); Value *EmitRotateOp(tree_node *exp, unsigned Opc1, unsigned Opc2); Value *EmitMinMaxExpr(tree_node *exp, unsigned UIPred, unsigned SIPred, unsigned Opc); - Value *EmitFLOOR_MOD_EXPR(tree_node *exp, Value *DestLoc); + Value *EmitFLOOR_MOD_EXPR(tree_node *exp, const MemRef *DestLoc); Value *EmitCEIL_DIV_EXPR(tree_node *exp); Value *EmitROUND_DIV_EXPR(tree_node *exp); @@ -477,7 +494,7 @@ // Inline Assembly and Register Variables. Value *EmitASM_EXPR(tree_node *exp); - Value *EmitReadOfRegisterVariable(tree_node *vardecl, Value *DestLoc); + Value *EmitReadOfRegisterVariable(tree_node *vardecl, const MemRef *DestLoc); void EmitModifyOfRegisterVariable(tree_node *vardecl, Value *RHS); // Helpers for Builtin Function Expansion. @@ -487,9 +504,9 @@ // Builtin Function Expansion. bool EmitBuiltinCall(tree_node *exp, tree_node *fndecl, - Value *DestLoc, Value *&Result); + const MemRef *DestLoc, Value *&Result); bool EmitFrontendExpandedBuiltinCall(tree_node *exp, tree_node *fndecl, - Value *DestLoc, Value *&Result); + const MemRef *DestLoc, Value *&Result); bool EmitBuiltinUnaryIntOp(Value *InVal, Value *&Result, Intrinsic::ID Id); Value *EmitBuiltinUnaryFPOp(Value *InVal, const char *F32Name, const char *F64Name, const char *LongDoubleName); @@ -498,7 +515,7 @@ bool EmitBuiltinConstantP(tree_node *exp, Value *&Result); bool EmitBuiltinAlloca(tree_node *exp, Value *&Result); - bool EmitBuiltinExpect(tree_node *exp, Value *DestLoc, Value *&Result); + bool EmitBuiltinExpect(tree_node *exp, const MemRef *DestLoc, Value *&Result); bool EmitBuiltinExtendPointer(tree_node *exp, Value *&Result); bool EmitBuiltinVAStart(tree_node *exp); bool EmitBuiltinVAEnd(tree_node *exp); @@ -521,13 +538,11 @@ bool EmitBuiltinInitTrampoline(tree_node *exp, Value *&Result); // Complex Math Expressions. - void EmitLoadFromComplex(Value *&Real, Value *&Imag, Value *SrcComplex, - bool isVolatile); - void EmitStoreToComplex(Value *DestComplex, Value *Real, Value *Imag, - bool isVolatile); - void EmitCOMPLEX_CST(tree_node *exp, Value *DestLoc); - void EmitCOMPLEX_EXPR(tree_node *exp, Value *DestLoc); - Value *EmitComplexBinOp(tree_node *exp, Value *DestLoc); + void EmitLoadFromComplex(Value *&Real, Value *&Imag, MemRef SrcComplex); + void EmitStoreToComplex(MemRef DestComplex, Value *Real, Value *Imag); + void EmitCOMPLEX_CST(tree_node *exp, const MemRef *DestLoc); + void EmitCOMPLEX_EXPR(tree_node *exp, const MemRef *DestLoc); + Value *EmitComplexBinOp(tree_node *exp, const MemRef *DestLoc); // L-Value Expressions. LValue EmitLV_DECL(tree_node *exp); @@ -542,12 +557,12 @@ // Constant Expressions. Value *EmitINTEGER_CST(tree_node *exp); Value *EmitREAL_CST(tree_node *exp); - Value *EmitCONSTRUCTOR(tree_node *exp, Value *DestLoc); + Value *EmitCONSTRUCTOR(tree_node *exp, const MemRef *DestLoc); // Optional target defined builtin intrinsic expanding function. bool TargetIntrinsicLower(tree_node *exp, unsigned FnCode, - Value *DestLoc, + const MemRef *DestLoc, Value *&Result, const Type *ResultType, std::vector &Ops); From baldrick at free.fr Thu Nov 8 15:13:48 2007 From: baldrick at free.fr (Duncan Sands) Date: Thu, 08 Nov 2007 21:13:48 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43908 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Message-ID: <200711082113.lA8LDmuE012904@zion.cs.uiuc.edu> Author: baldrick Date: Thu Nov 8 15:13:47 2007 New Revision: 43908 URL: http://llvm.org/viewvc/llvm-project?rev=43908&view=rev Log: Make greater use of BitCastToType, as requested by Chris. Compiles but otherwise untested. 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=43908&r1=43907&r2=43908&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Thu Nov 8 15:13:47 2007 @@ -1269,10 +1269,8 @@ if (!TheTypeConverter->GCCTypeOverlapsWithLLVMTypePadding(type, LLVMTy) && // Don't copy tons of tiny elements. CountAggregateElements(LLVMTy) <= 8) { - DestLoc.Ptr = CastToType(Instruction::BitCast, DestLoc.Ptr, - PointerType::get(LLVMTy)); - SrcLoc.Ptr = CastToType(Instruction::BitCast, SrcLoc.Ptr, - PointerType::get(LLVMTy)); + DestLoc.Ptr = BitCastToType(DestLoc.Ptr, PointerType::get(LLVMTy)); + SrcLoc.Ptr = BitCastToType(SrcLoc.Ptr, PointerType::get(LLVMTy)); CopyAggregate(DestLoc, SrcLoc, Builder); return; } @@ -1329,9 +1327,7 @@ if (!TheTypeConverter->GCCTypeOverlapsWithLLVMTypePadding(type, LLVMTy) && // Don't zero tons of tiny elements. CountAggregateElements(LLVMTy) <= 8) { - DestLoc.Ptr = CastToType(Instruction::BitCast, DestLoc.Ptr, - PointerType::get(LLVMTy)); - + DestLoc.Ptr = BitCastToType(DestLoc.Ptr, PointerType::get(LLVMTy)); ZeroAggregate(DestLoc, Builder); return; } @@ -1346,8 +1342,8 @@ const Type *SBP = PointerType::get(Type::Int8Ty); const Type *IntPtr = TD.getIntPtrType(); Value *Ops[4] = { - CastToType(Instruction::BitCast, DestPtr, SBP), - CastToType(Instruction::BitCast, SrcPtr, SBP), + BitCastToType(DestPtr, SBP), + BitCastToType(SrcPtr, SBP), CastToSIntType(Size, IntPtr), ConstantInt::get(Type::Int32Ty, Align) }; @@ -1362,8 +1358,8 @@ const Type *SBP = PointerType::get(Type::Int8Ty); const Type *IntPtr = TD.getIntPtrType(); Value *Ops[4] = { - CastToType(Instruction::BitCast, DestPtr, SBP), - CastToType(Instruction::BitCast, SrcPtr, SBP), + BitCastToType(DestPtr, SBP), + BitCastToType(SrcPtr, SBP), CastToSIntType(Size, IntPtr), ConstantInt::get(Type::Int32Ty, Align) }; @@ -1378,7 +1374,7 @@ const Type *SBP = PointerType::get(Type::Int8Ty); const Type *IntPtr = TD.getIntPtrType(); Value *Ops[4] = { - CastToType(Instruction::BitCast, DestPtr, SBP), + BitCastToType(DestPtr, SBP), CastToSIntType(SrcVal, Type::Int8Ty), CastToSIntType(Size, IntPtr), ConstantInt::get(Type::Int32Ty, Align) @@ -1858,9 +1854,8 @@ Args.push_back(Builder.CreateLoad(ExceptionValue, "eh_ptr")); assert(llvm_eh_personality_libfunc && "no exception handling personality function!"); - Args.push_back(CastToType(Instruction::BitCast, - DECL_LLVM(llvm_eh_personality_libfunc), - PointerType::get(Type::Int8Ty))); + Args.push_back(BitCastToType(DECL_LLVM(llvm_eh_personality_libfunc), + PointerType::get(Type::Int8Ty))); // Add selections for each handler. foreach_reachable_handler (i, false, AddHandler, &Handlers); @@ -2090,8 +2085,7 @@ if (!LV.isBitfield()) { if (!DestLoc) { // Scalar value: emit a load. - Value *Ptr = CastToType(Instruction::BitCast, LV.Ptr, - PointerType::get(Ty)); + Value *Ptr = BitCastToType(LV.Ptr, PointerType::get(Ty)); LoadInst *LI = Builder.CreateLoad(Ptr, isVolatile, "tmp"); LI->setAlignment(Alignment); return LI; @@ -2150,12 +2144,12 @@ // Perform a cast here if necessary. For example, GCC sometimes forms an // ADDR_EXPR where the operand is an array, and the ADDR_EXPR type is a // pointer to the first element. - return CastToType(Instruction::BitCast, LV.Ptr, ConvertType(TREE_TYPE(exp))); + return BitCastToType(LV.Ptr, ConvertType(TREE_TYPE(exp))); } Value *TreeToLLVM::EmitOBJ_TYPE_REF(tree exp) { - return CastToType(Instruction::BitCast, Emit(OBJ_TYPE_REF_EXPR(exp), 0), - ConvertType(TREE_TYPE(exp))); + return BitCastToType(Emit(OBJ_TYPE_REF_EXPR(exp), 0), + ConvertType(TREE_TYPE(exp))); } Value *TreeToLLVM::EmitCALL_EXPR(tree exp, const MemRef *DestLoc) { @@ -2183,7 +2177,7 @@ fndecl, static_chain, CallingConv); - Callee = CastToType(Instruction::BitCast, Callee, PointerType::get(Ty)); + Callee = BitCastToType(Callee, PointerType::get(Ty)); } //EmitCall(exp, DestLoc); @@ -2380,7 +2374,7 @@ if (CallOperands.size() >= FTy->getNumParams()) ArgTy = PointerType::get(ArgTy); - CallOperands.push_back(CastToType(Instruction::BitCast, Ptr, ArgTy)); + CallOperands.push_back(BitCastToType(Ptr, ArgTy)); } else if (ActualArgTy->isFirstClassType()) { Value *V = Emit(TREE_VALUE(arg), 0); bool isSigned = !TYPE_UNSIGNED(TREE_TYPE(TREE_VALUE(arg))); @@ -2638,8 +2632,7 @@ } else if (isAggregateTreeType(TREE_TYPE(Op))) { // Aggregate to aggregate copy. MemRef NewLoc = *DestLoc; - NewLoc.Ptr = - CastToType(Instruction::BitCast, DestLoc->Ptr, PointerType::get(Ty)); + NewLoc.Ptr = BitCastToType(DestLoc->Ptr, PointerType::get(Ty)); Value *OpVal = Emit(Op, &NewLoc); assert(OpVal == 0 && "Shouldn't cast scalar to aggregate!"); return 0; @@ -2647,8 +2640,7 @@ // Scalar to aggregate copy. Value *OpVal = Emit(Op, 0); - Value *Ptr = CastToType(Instruction::BitCast, DestLoc->Ptr, - PointerType::get(OpVal->getType())); + Value *Ptr = BitCastToType(DestLoc->Ptr, PointerType::get(OpVal->getType())); StoreInst *St = Builder.CreateStore(OpVal, Ptr, DestLoc->Volatile); St->setAlignment(DestLoc->Alignment); return 0; @@ -2671,8 +2663,7 @@ if (DestLoc) { // This is an aggregate-to-agg VIEW_CONVERT_EXPR, just evaluate in place. Target = *DestLoc; - Target.Ptr = - CastToType(Instruction::BitCast, DestLoc->Ptr, PointerType::get(OpTy)); + Target.Ptr = BitCastToType(DestLoc->Ptr, PointerType::get(OpTy)); } else { // This is an aggregate-to-scalar VIEW_CONVERT_EXPR, evaluate, then load. Target = CreateTempLoc(OpTy); @@ -2715,8 +2706,8 @@ // Target holds the temporary created above. const Type *ExpTy = ConvertType(TREE_TYPE(exp)); - return Builder.CreateLoad(CastToType(Instruction::BitCast, Target.Ptr, - PointerType::get(ExpTy)), "tmp"); + return Builder.CreateLoad(BitCastToType(Target.Ptr, + PointerType::get(ExpTy)), "tmp"); } if (DestLoc) { @@ -2724,8 +2715,8 @@ // then store into DestLoc. Value *OpVal = Emit(Op, 0); assert(OpVal && "Expected a scalar result!"); - Value *Ptr = CastToType(Instruction::BitCast, DestLoc->Ptr, - PointerType::get(OpVal->getType())); + Value *Ptr = BitCastToType(DestLoc->Ptr, + PointerType::get(OpVal->getType())); StoreInst *St = Builder.CreateStore(OpVal, Ptr, DestLoc->Volatile); St->setAlignment(DestLoc->Alignment); return 0; @@ -2929,7 +2920,7 @@ EltOffset = -EltOffset; Constant *C = ConstantInt::get(Type::Int64Ty, EltOffset); Value *V = Builder.CreateGEP(LHS, C, "tmp"); - return CastToType(Instruction::BitCast, V, TREE_TYPE(exp)); + return BitCastToType(V, ConvertType(TREE_TYPE(exp))); } } } @@ -3645,8 +3636,9 @@ if (TySize == 1 || TySize == 8 || TySize == 16 || TySize == 32 || TySize == 64) { LLVMTy = IntegerType::get(TySize); - Op = Builder.CreateLoad(CastToType(Instruction::BitCast, LV.Ptr, - PointerType::get(LLVMTy)), "tmp"); + Op = Builder.CreateLoad(BitCastToType(LV.Ptr, + PointerType::get(LLVMTy)), + "tmp"); } else { // Otherwise, emit our value as a lvalue and let the codegen deal with // it. @@ -4236,7 +4228,7 @@ if (Locality == 0) Locality = ConstantInt::get(Type::Int32Ty, 3); - Ptr = CastToType(Instruction::BitCast, Ptr, PointerType::get(Type::Int8Ty)); + Ptr = BitCastToType(Ptr, PointerType::get(Type::Int8Ty)); Value *Ops[3] = { Ptr, ReadWrite, Locality }; Builder.CreateCall(Intrinsic::getDeclaration(TheModule, Intrinsic::prefetch), @@ -4264,7 +4256,7 @@ !isFrame ? Intrinsic::returnaddress : Intrinsic::frameaddress; Result = Builder.CreateCall(Intrinsic::getDeclaration(TheModule, IID), Level, "tmp"); - Result = CastToType(Instruction::BitCast, Result, TREE_TYPE(exp)); + Result = BitCastToType(Result, ConvertType(TREE_TYPE(exp))); return true; } @@ -4280,7 +4272,7 @@ // Unfortunately, these constants are defined as RTL expressions and // should be handled separately. - Result = CastToType(Instruction::BitCast, Ptr, PointerType::get(Type::Int8Ty)); + Result = BitCastToType(Ptr, PointerType::get(Type::Int8Ty)); return true; } @@ -4296,7 +4288,7 @@ // needed for: MIPS, Sparc. Unfortunately, these constants are defined // as RTL expressions and should be handled separately. - Result = CastToType(Instruction::BitCast, Ptr, PointerType::get(Type::Int8Ty)); + Result = BitCastToType(Ptr, PointerType::get(Type::Int8Ty)); return true; } @@ -4399,8 +4391,7 @@ Value *Offset = Emit(TREE_VALUE(arglist), 0); Value *Handler = Emit(TREE_VALUE(TREE_CHAIN(arglist)), 0); Offset = Builder.CreateIntCast(Offset, Type::Int32Ty, true, "tmp"); - Handler = CastToType(Instruction::BitCast, Handler, - PointerType::get(Type::Int8Ty)); + Handler = BitCastToType(Handler, PointerType::get(Type::Int8Ty)); SmallVector Args; Args.push_back(Offset); @@ -4492,7 +4483,7 @@ return false; Value *Ptr = Emit(TREE_VALUE(arglist), 0); - Ptr = CastToType(Instruction::BitCast, Ptr, PointerType::get(Type::Int8Ty)); + Ptr = BitCastToType(Ptr, PointerType::get(Type::Int8Ty)); Builder.CreateCall(Intrinsic::getDeclaration(TheModule, Intrinsic::stackrestore), Ptr); @@ -4546,16 +4537,14 @@ Intrinsic::vastart); const Type *FTy = cast(llvm_va_start_fn->getType())->getElementType(); - ArgVal = CastToType(Instruction::BitCast, ArgVal, - PointerType::get(Type::Int8Ty)); + ArgVal = BitCastToType(ArgVal, PointerType::get(Type::Int8Ty)); Builder.CreateCall(llvm_va_start_fn, ArgVal); return true; } bool TreeToLLVM::EmitBuiltinVAEnd(tree exp) { Value *Arg = Emit(TREE_VALUE(TREE_OPERAND(exp, 1)), 0); - Arg = CastToType(Instruction::BitCast, Arg, - PointerType::get(Type::Int8Ty)); + Arg = BitCastToType(Arg, PointerType::get(Type::Int8Ty)); Builder.CreateCall(Intrinsic::getDeclaration(TheModule, Intrinsic::vaend), Arg); return true; @@ -4586,8 +4575,8 @@ // FIXME: This ignores alignment and volatility of the arguments. SmallVector Args; - Args.push_back(CastToType(Instruction::BitCast, Arg1, VPTy)); - Args.push_back(CastToType(Instruction::BitCast, Arg2, VPTy)); + Args.push_back(BitCastToType(Arg1, VPTy)); + Args.push_back(BitCastToType(Arg2, VPTy)); Builder.CreateCall(Intrinsic::getDeclaration(TheModule, Intrinsic::vacopy), Args.begin(), Args.end()); @@ -4603,13 +4592,13 @@ static const Type *VPTy = PointerType::get(Type::Int8Ty); Value *Tramp = Emit(TREE_VALUE(arglist), 0); - Tramp = CastToType(Instruction::BitCast, Tramp, VPTy); + Tramp = BitCastToType(Tramp, VPTy); Value *Func = Emit(TREE_VALUE(TREE_CHAIN(arglist)), 0); - Func = CastToType(Instruction::BitCast, Func, VPTy); + Func = BitCastToType(Func, VPTy); Value *Chain = Emit(TREE_VALUE(TREE_CHAIN(TREE_CHAIN(arglist))), 0); - Chain = CastToType(Instruction::BitCast, Chain, VPTy); + Chain = BitCastToType(Chain, VPTy); Value *Ops[3] = { Tramp, Func, Chain }; @@ -4826,7 +4815,7 @@ if (Ty == Type::VoidTy) Ty = StructType::get(std::vector(), false); const PointerType *PTy = PointerType::get(Ty); - return CastToType(Instruction::BitCast, Decl, PTy); + return BitCastToType(Decl, PTy); } LValue TreeToLLVM::EmitLV_ARRAY_REF(tree exp) { @@ -4941,8 +4930,8 @@ assert((!StructAddrLV.isBitfield() || StructAddrLV.BitStart == 0) && "structs cannot be bitfields!"); - StructAddrLV.Ptr = CastToType(Instruction::BitCast, StructAddrLV.Ptr, - PointerType::get(StructTy)); + StructAddrLV.Ptr = BitCastToType(StructAddrLV.Ptr, + PointerType::get(StructTy)); const Type *FieldTy = ConvertType(TREE_TYPE(FieldDecl)); // BitStart - This is the actual offset of the field from the start of the @@ -5008,8 +4997,7 @@ // 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. - FieldPtr = CastToType(Instruction::BitCast, FieldPtr, - PointerType::get(FieldTy)); + FieldPtr = BitCastToType(FieldPtr, PointerType::get(FieldTy)); // If this is a normal bitfield reference, return it as such. if (DECL_SIZE(FieldDecl) && TREE_CODE(DECL_SIZE(FieldDecl)) == INTEGER_CST){ @@ -5061,8 +5049,8 @@ } } else { // Make sure we return a pointer to the right type. - FieldPtr = CastToType(Instruction::BitCast, FieldPtr, - PointerType::get(ConvertType(TREE_TYPE(exp)))); + FieldPtr = BitCastToType(FieldPtr, + PointerType::get(ConvertType(TREE_TYPE(exp)))); } assert(BitStart == 0 && @@ -5089,8 +5077,7 @@ if (unsigned UnitOffset = BitStart / ValueSizeInBits) { // TODO: If Ptr.Ptr is a struct type or something, we can do much better // than this. e.g. check out when compiling unwind-dw2-fde-darwin.c. - Ptr.Ptr = CastToType(Instruction::BitCast, Ptr.Ptr, - PointerType::get(ValTy)); + Ptr.Ptr = BitCastToType(Ptr.Ptr, PointerType::get(ValTy)); Ptr.Ptr = Builder.CreateGEP(Ptr.Ptr, ConstantInt::get(Type::Int32Ty, UnitOffset), "tmp"); @@ -5210,8 +5197,7 @@ } else { // Scalar value. Evaluate to a register, then do the store. Value *V = Emit(tree_value, 0); - Value *Ptr = CastToType(Instruction::BitCast, DestLoc->Ptr, - PointerType::get(V->getType())); + Value *Ptr = BitCastToType(DestLoc->Ptr, PointerType::get(V->getType())); StoreInst *St = Builder.CreateStore(V, Ptr, DestLoc->Volatile); St->setAlignment(DestLoc->Alignment); } From lauro.venancio at gmail.com Thu Nov 8 16:10:13 2007 From: lauro.venancio at gmail.com (Lauro Ramos Venancio) Date: Thu, 08 Nov 2007 22:10:13 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43909 - in /llvm-gcc-4.2/trunk/gcc: config/arm/arm.h llvm-convert.cpp Message-ID: <200711082210.lA8MADNK016192@zion.cs.uiuc.edu> Author: laurov Date: Thu Nov 8 16:10:12 2007 New Revision: 43909 URL: http://llvm.org/viewvc/llvm-project?rev=43909&view=rev Log: Implement the '%@' inline asm ARM extension. Modified: llvm-gcc-4.2/trunk/gcc/config/arm/arm.h llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp 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=43909&r1=43908&r2=43909&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/arm/arm.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/arm/arm.h Thu Nov 8 16:10:12 2007 @@ -2651,6 +2651,15 @@ /* Doing struct copy by partial-word loads and stores is not a good idea on ARM. */ #define TARGET_LLVM_MIN_BYTES_COPY_BY_MEMCPY 4 + +/* These are a couple of extensions to the asm formats + %@ prints out ASM_COMMENT_START + TODO: %r prints out REGISTER_PREFIX reg_names[arg] */ +#define LLVM_ASM_EXTENSIONS(ESCAPED_CHAR, ASM, RESULT) \ + else if ((ESCAPED_CHAR) == '@') { \ + (RESULT) += '@'; \ + } + /* LLVM LOCAL end */ #endif /* ! GCC_ARM_H */ 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=43909&r1=43908&r2=43909&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Thu Nov 8 16:10:12 2007 @@ -3375,7 +3375,11 @@ Result += '%'; } else if (EscapedChar == '=') { // Unique ID for the asm instance. Result += utostr(InlineAsmNum); - } else if (ISALPHA(EscapedChar)) { + } +#ifdef LLVM_ASM_EXTENSIONS + LLVM_ASM_EXTENSIONS(EscapedChar, InStr, Result) +#endif + else if (ISALPHA(EscapedChar)) { // % followed by a letter and some digits. This outputs an operand in a // special way depending on the letter. We turn this into LLVM ${N:o} // syntax. From isanbard at gmail.com Thu Nov 8 16:14:20 2007 From: isanbard at gmail.com (Bill Wendling) Date: Thu, 8 Nov 2007 14:14:20 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r43887 - in /llvm-gcc-4.2/trunk: boehm-gc/ libffi/ libjava/ libmudflap/ libobjc/ libssp/ zlib/ In-Reply-To: <308474D5-93CC-454C-971B-F41CBBD92662@apple.com> References: <200711080911.lA89Btnq028616.SS566SS@zion.cs.uiuc.edu> <1194526480.10807.44.camel@asl.dorms.spbu.ru> <16e5fdf90711081054jb3ebf5m616998cee03978bf@mail.gmail.com> <308474D5-93CC-454C-971B-F41CBBD92662@apple.com> Message-ID: <16e5fdf90711081414m80a0aadn6909f8d546a5b69a@mail.gmail.com> > Please follow the model of libstdc++. Instead of deleting them, just > make them not build on darwin (like libstdc++). > Totally made it so. :-) -bw From clattner at apple.com Thu Nov 8 16:16:26 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 8 Nov 2007 14:16:26 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r43907 - in /llvm-gcc-4.2/trunk/gcc: config/i386/llvm-i386.cpp llvm-convert.cpp llvm-internal.h In-Reply-To: <200711082112.lA8LCia2012772@zion.cs.uiuc.edu> References: <200711082112.lA8LCia2012772@zion.cs.uiuc.edu> Message-ID: <03400F6A-29F8-476B-BB02-EC54095B8257@apple.com> On Nov 8, 2007, at 1:12 PM, Duncan Sands wrote: > Author: baldrick > Date: Thu Nov 8 15:12:44 2007 > New Revision: 43907 > > URL: http://llvm.org/viewvc/llvm-project?rev=43907&view=rev > Log: > Pass alignment and volatility along with the address in > the DestLoc parameter. Done by changing it from a Value* > to a MemRef*. Fixed/improved a bunch of alignment/volatility > problems/uses while there. Introduces no regressions (I didn't > test tramp3d-v4 because I got tired of waiting for the testsuite > to finish). Very nice Duncan, thanks again! -Chris From clattner at apple.com Thu Nov 8 16:19:15 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 8 Nov 2007 14:19:15 -0800 Subject: [llvm-commits] [llvm-gcc-4.2] r43909 - in /llvm-gcc-4.2/trunk/gcc: config/arm/arm.h llvm-convert.cpp In-Reply-To: <200711082210.lA8MADNK016192@zion.cs.uiuc.edu> References: <200711082210.lA8MADNK016192@zion.cs.uiuc.edu> Message-ID: <7A671DDF-4CDB-42CB-B29A-CB229841B780@apple.com> On Nov 8, 2007, at 2:10 PM, Lauro Ramos Venancio wrote: > Author: laurov > Date: Thu Nov 8 16:10:12 2007 > New Revision: 43909 > > URL: http://llvm.org/viewvc/llvm-project?rev=43909&view=rev > Log: > Implement the '%@' inline asm ARM extension. Hey Lauro, in .td files, you can use "${:comment}" to print the comment character, does this work in inline asm? If so, that might be a better thing to transform into. See AsmPrinter::PrintSpecial for the code that does this, -Chris > > Modified: > llvm-gcc-4.2/trunk/gcc/config/arm/arm.h > llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp > > 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=43909&r1=43908&r2=43909&view=diff > > ====================================================================== > ======== > --- llvm-gcc-4.2/trunk/gcc/config/arm/arm.h (original) > +++ llvm-gcc-4.2/trunk/gcc/config/arm/arm.h Thu Nov 8 16:10:12 2007 > @@ -2651,6 +2651,15 @@ > > /* Doing struct copy by partial-word loads and stores is not a > good idea on ARM. */ > #define TARGET_LLVM_MIN_BYTES_COPY_BY_MEMCPY 4 > + > +/* These are a couple of extensions to the asm formats > + %@ prints out ASM_COMMENT_START > + TODO: %r prints out REGISTER_PREFIX reg_names[arg] */ > +#define LLVM_ASM_EXTENSIONS(ESCAPED_CHAR, ASM, RESULT) \ > + else if ((ESCAPED_CHAR) == '@') { \ > + (RESULT) += '@'; \ > + } > + > /* LLVM LOCAL end */ > > #endif /* ! GCC_ARM_H */ > > 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=43909&r1=43908&r2=43909&view=diff > > ====================================================================== > ======== > --- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original) > +++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Thu Nov 8 16:10:12 2007 > @@ -3375,7 +3375,11 @@ > Result += '%'; > } else if (EscapedChar == '=') { // Unique ID for the > asm instance. > Result += utostr(InlineAsmNum); > - } else if (ISALPHA(EscapedChar)) { > + } > +#ifdef LLVM_ASM_EXTENSIONS > + LLVM_ASM_EXTENSIONS(EscapedChar, InStr, Result) > +#endif > + else if (ISALPHA(EscapedChar)) { > // % followed by a letter and some digits. This outputs an > operand in a > // special way depending on the letter. We turn this into > LLVM ${N:o} > // syntax. > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From resistor at mac.com Thu Nov 8 16:20:23 2007 From: resistor at mac.com (Owen Anderson) Date: Thu, 08 Nov 2007 22:20:23 -0000 Subject: [llvm-commits] [llvm] r43910 - in /llvm/trunk: include/llvm/CodeGen/Passes.h lib/CodeGen/BreakCriticalMachineEdges.cpp Message-ID: <200711082220.lA8MKN0Q016651@zion.cs.uiuc.edu> Author: resistor Date: Thu Nov 8 16:20:23 2007 New Revision: 43910 URL: http://llvm.org/viewvc/llvm-project?rev=43910&view=rev Log: Make BreakCriticalMachineEdges available as a pass that can be depended on. Modified: llvm/trunk/include/llvm/CodeGen/Passes.h llvm/trunk/lib/CodeGen/BreakCriticalMachineEdges.cpp Modified: llvm/trunk/include/llvm/CodeGen/Passes.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/Passes.h?rev=43910&r1=43909&r2=43910&view=diff ============================================================================== --- llvm/trunk/include/llvm/CodeGen/Passes.h (original) +++ llvm/trunk/include/llvm/CodeGen/Passes.h Thu Nov 8 16:20:23 2007 @@ -58,6 +58,10 @@ /// extern const PassInfo *SimpleRegisterCoalescingID; + /// BreakCriticalMachineEdges pass. Breaks critical edges between + /// machine basic blocks. + extern const PassInfo *BreakCriticalMachineEdgesID; + /// TwoAddressInstruction pass - This pass reduces two-address instructions to /// use two operands. This destroys SSA information but it is desired by /// register allocators. Modified: llvm/trunk/lib/CodeGen/BreakCriticalMachineEdges.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/BreakCriticalMachineEdges.cpp?rev=43910&r1=43909&r2=43910&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/BreakCriticalMachineEdges.cpp (original) +++ llvm/trunk/lib/CodeGen/BreakCriticalMachineEdges.cpp Thu Nov 8 16:20:23 2007 @@ -41,7 +41,7 @@ "Break critical machine code edges"); } -//const PassInfo *llvm::BreakCriticalMachineEdgesID = X.getPassInfo(); +const PassInfo *llvm::BreakCriticalMachineEdgesID = X.getPassInfo(); void BreakCriticalMachineEdges::splitCriticalEdge(MachineBasicBlock* src, MachineBasicBlock* dst) { From resistor at mac.com Thu Nov 8 16:23:58 2007 From: resistor at mac.com (Owen Anderson) Date: Thu, 08 Nov 2007 22:23:58 -0000 Subject: [llvm-commits] [llvm] r43911 - /llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp Message-ID: <200711082223.lA8MNw4v016844@zion.cs.uiuc.edu> Author: resistor Date: Thu Nov 8 16:23:57 2007 New Revision: 43911 URL: http://llvm.org/viewvc/llvm-project?rev=43911&view=rev Log: This preserves critical edge breaking. Modified: llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp Modified: llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp?rev=43911&r1=43910&r2=43911&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp (original) +++ llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp Thu Nov 8 16:23:57 2007 @@ -70,6 +70,7 @@ AU.addRequired(); AU.addPreserved(); AU.addPreservedID(PHIEliminationID); + AU.addPreservedID(BreakCriticalMachineEdgesID); MachineFunctionPass::getAnalysisUsage(AU); } From evan.cheng at apple.com Thu Nov 8 16:24:24 2007 From: evan.cheng at apple.com (Evan Cheng) Date: Thu, 8 Nov 2007 14:24:24 -0800 Subject: [llvm-commits] [llvm] r43910 - in /llvm/trunk: include/llvm/CodeGen/Passes.h lib/CodeGen/BreakCriticalMachineEdges.cpp In-Reply-To: <200711082220.lA8MKN0Q016651@zion.cs.uiuc.edu> References: <200711082220.lA8MKN0Q016651@zion.cs.uiuc.edu> Message-ID: <7CC36482-1AEB-4133-893D-D1963D1B49D9@apple.com> Does it need to be a pass? Seems to me it should just be a function, no? Evan On Nov 8, 2007, at 2:20 PM, Owen Anderson wrote: > Author: resistor > Date: Thu Nov 8 16:20:23 2007 > New Revision: 43910 > > URL: http://llvm.org/viewvc/llvm-project?rev=43910&view=rev > Log: > Make BreakCriticalMachineEdges available as a pass that can be > depended on. > > Modified: > llvm/trunk/include/llvm/CodeGen/Passes.h > llvm/trunk/lib/CodeGen/BreakCriticalMachineEdges.cpp > > Modified: llvm/trunk/include/llvm/CodeGen/Passes.h > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/Passes.h?rev=43910&r1=43909&r2=43910&view=diff > > = > = > = > = > = > = > = > = > ====================================================================== > --- llvm/trunk/include/llvm/CodeGen/Passes.h (original) > +++ llvm/trunk/include/llvm/CodeGen/Passes.h Thu Nov 8 16:20:23 2007 > @@ -58,6 +58,10 @@ > /// > extern const PassInfo *SimpleRegisterCoalescingID; > > + /// BreakCriticalMachineEdges pass. Breaks critical edges between > + /// machine basic blocks. > + extern const PassInfo *BreakCriticalMachineEdgesID; > + > /// TwoAddressInstruction pass - This pass reduces two-address > instructions to > /// use two operands. This destroys SSA information but it is > desired by > /// register allocators. > > Modified: llvm/trunk/lib/CodeGen/BreakCriticalMachineEdges.cpp > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/BreakCriticalMachineEdges.cpp?rev=43910&r1=43909&r2=43910&view=diff > > = > = > = > = > = > = > = > = > ====================================================================== > --- llvm/trunk/lib/CodeGen/BreakCriticalMachineEdges.cpp (original) > +++ llvm/trunk/lib/CodeGen/BreakCriticalMachineEdges.cpp Thu Nov 8 > 16:20:23 2007 > @@ -41,7 +41,7 @@ > "Break critical machine > code edges"); > } > > -//const PassInfo *llvm::BreakCriticalMachineEdgesID = > X.getPassInfo(); > +const PassInfo *llvm::BreakCriticalMachineEdgesID = X.getPassInfo(); > > void BreakCriticalMachineEdges::splitCriticalEdge(MachineBasicBlock* > src, > MachineBasicBlock* > dst) { > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From dpatel at apple.com Thu Nov 8 16:26:47 2007 From: dpatel at apple.com (Devang Patel) Date: Thu, 08 Nov 2007 22:26:47 -0000 Subject: [llvm-commits] [llvm] r43912 - /llvm/trunk/test/FrontendObjC/2007-09-25-EH.m Message-ID: <200711082226.lA8MQlCW016960@zion.cs.uiuc.edu> Author: dpatel Date: Thu Nov 8 16:26:46 2007 New Revision: 43912 URL: http://llvm.org/viewvc/llvm-project?rev=43912&view=rev Log: Run this test only on darwin. Modified: llvm/trunk/test/FrontendObjC/2007-09-25-EH.m Modified: llvm/trunk/test/FrontendObjC/2007-09-25-EH.m URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/FrontendObjC/2007-09-25-EH.m?rev=43912&r1=43911&r2=43912&view=diff ============================================================================== --- llvm/trunk/test/FrontendObjC/2007-09-25-EH.m (original) +++ llvm/trunk/test/FrontendObjC/2007-09-25-EH.m Thu Nov 8 16:26:46 2007 @@ -1,5 +1,5 @@ // RUN: %llvmgcc -c -w -m64 -mmacosx-version-min=10.5 %s -o /dev/null - +// XTARGET: darwin @class NSDictionary, DSoBuffer, DSoDirectory, NSMutableArray; @interface NSException {} @end From resistor at mac.com Thu Nov 8 16:28:26 2007 From: resistor at mac.com (Owen Anderson) Date: Thu, 8 Nov 2007 16:28:26 -0600 Subject: [llvm-commits] [llvm] r43910 - in /llvm/trunk: include/llvm/CodeGen/Passes.h lib/CodeGen/BreakCriticalMachineEdges.cpp In-Reply-To: <7CC36482-1AEB-4133-893D-D1963D1B49D9@apple.com> References: <200711082220.lA8MKN0Q016651@zion.cs.uiuc.edu> <7CC36482-1AEB-4133-893D-D1963D1B49D9@apple.com> Message-ID: <093ADD10-BB70-489F-8C97-9FB6B839588F@mac.com> StrongPHIElimination will require it in the near future. --Owen On Nov 8, 2007, at 4:24 PM, Evan Cheng wrote: > Does it need to be a pass? Seems to me it should just be a function, > no? > > Evan -------------- 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/20071108/7f98a921/attachment.bin From dalej at apple.com Thu Nov 8 16:35:15 2007 From: dalej at apple.com (Dale Johannesen) Date: Thu, 8 Nov 2007 14:35:15 -0800 Subject: [llvm-commits] [llvm] r43912 - /llvm/trunk/test/FrontendObjC/2007-09-25-EH.m In-Reply-To: <200711082226.lA8MQlCW016960@zion.cs.uiuc.edu> References: <200711082226.lA8MQlCW016960@zion.cs.uiuc.edu> Message-ID: <56E2FFE7-9B55-45AC-9DB3-7ACC88787FAE@apple.com> On Nov 8, 2007, at 2:26 PM, Devang Patel wrote: > ====================================================================== > ======== > --- llvm/trunk/test/FrontendObjC/2007-09-25-EH.m (original) > +++ llvm/trunk/test/FrontendObjC/2007-09-25-EH.m Thu Nov 8 > 16:26:46 2007 > @@ -1,5 +1,5 @@ > // RUN: %llvmgcc -c -w -m64 -mmacosx-version-min=10.5 %s -o /dev/null > - > +// XTARGET: darwin > @class NSDictionary, DSoBuffer, DSoDirectory, NSMutableArray; > @interface NSException {} > @end While you're at it, is there a way to test that llvm-gcc was built with 64-bit support? This test fails if you use an llvm built with the "Darwin/X86 (32-bit-support only)" instructions. The error message is clean, but something like dg-require would be even better. From dpatel at apple.com Thu Nov 8 16:39:06 2007 From: dpatel at apple.com (Devang Patel) Date: Thu, 8 Nov 2007 14:39:06 -0800 Subject: [llvm-commits] [llvm] r43912 - /llvm/trunk/test/FrontendObjC/2007-09-25-EH.m In-Reply-To: <56E2FFE7-9B55-45AC-9DB3-7ACC88787FAE@apple.com> References: <200711082226.lA8MQlCW016960@zion.cs.uiuc.edu> <56E2FFE7-9B55-45AC-9DB3-7ACC88787FAE@apple.com> Message-ID: <00CA9E6C-A06E-4E0A-B4F6-49CEBDE18678@apple.com> On Nov 8, 2007, at 2:35 PM, Dale Johannesen wrote: > The error message is clean, > but something like dg-require would be even better. We do not have anything like dg-require. - Devang From lattner at apple.com Thu Nov 8 16:40:43 2007 From: lattner at apple.com (Tanya Lattner) Date: Thu, 8 Nov 2007 14:40:43 -0800 Subject: [llvm-commits] [llvm] r43912 - /llvm/trunk/test/FrontendObjC/2007-09-25-EH.m In-Reply-To: <00CA9E6C-A06E-4E0A-B4F6-49CEBDE18678@apple.com> References: <200711082226.lA8MQlCW016960@zion.cs.uiuc.edu> <56E2FFE7-9B55-45AC-9DB3-7ACC88787FAE@apple.com> <00CA9E6C-A06E-4E0A-B4F6-49CEBDE18678@apple.com> Message-ID: <0015A553-E8C8-488B-BD9B-CE8A8DFFDC1D@apple.com> On Nov 8, 2007, at 2:39 PM, Devang Patel wrote: > > On Nov 8, 2007, at 2:35 PM, Dale Johannesen wrote: > >> The error message is clean, >> but something like dg-require would be even better. > > > We do not have anything like dg-require. > What is dg-require? If you can tell me how to get if llvm-gcc is 64 bit, I can see what I can do. -Tanya > - > Devang > > > > _______________________________________________ > llvm-commits mailing list > llvm-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits From clattner at apple.com Thu Nov 8 16:48:21 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 8 Nov 2007 14:48:21 -0800 Subject: [llvm-commits] [llvm] r43912 - /llvm/trunk/test/FrontendObjC/2007-09-25-EH.m In-Reply-To: <0015A553-E8C8-488B-BD9B-CE8A8DFFDC1D@apple.com> References: <200711082226.lA8MQlCW016960@zion.cs.uiuc.edu> <56E2FFE7-9B55-45AC-9DB3-7ACC88787FAE@apple.com> <00CA9E6C-A06E-4E0A-B4F6-49CEBDE18678@apple.com> <0015A553-E8C8-488B-BD9B-CE8A8DFFDC1D@apple.com> Message-ID: <02FDD475-D4CC-4262-A69D-28007B2E0515@apple.com> On Nov 8, 2007, at 2:40 PM, Tanya Lattner wrote: > > On Nov 8, 2007, at 2:39 PM, Devang Patel wrote: > >> >> On Nov 8, 2007, at 2:35 PM, Dale Johannesen wrote: >> >>> The error message is clean, >>> but something like dg-require would be even better. >> >> >> We do not have anything like dg-require. >> > > What is dg-require? > > If you can tell me how to get if llvm-gcc is 64 bit, I can see what I > can do. How about: XREQUIRE: llvm-gcc -xc /dev/null -S -o /dev/null -m64 If that command returns success, then the -m64 option is supported. Crazy? Reasonable? -Chris From dpatel at apple.com Thu Nov 8 16:53:09 2007 From: dpatel at apple.com (Devang Patel) Date: Thu, 8 Nov 2007 14:53:09 -0800 Subject: [llvm-commits] [llvm] r43912 - /llvm/trunk/test/FrontendObjC/2007-09-25-EH.m In-Reply-To: <02FDD475-D4CC-4262-A69D-28007B2E0515@apple.com> References: <200711082226.lA8MQlCW016960@zion.cs.uiuc.edu> <56E2FFE7-9B55-45AC-9DB3-7ACC88787FAE@apple.com> <00CA9E6C-A06E-4E0A-B4F6-49CEBDE18678@apple.com> <0015A553-E8C8-488B-BD9B-CE8A8DFFDC1D@apple.com> <02FDD475-D4CC-4262-A69D-28007B2E0515@apple.com> Message-ID: On Nov 8, 2007, at 2:48 PM, Chris Lattner wrote: > > On Nov 8, 2007, at 2:40 PM, Tanya Lattner wrote: > >> >> On Nov 8, 2007, at 2:39 PM, Devang Patel wrote: >> >>> >>> On Nov 8, 2007, at 2:35 PM, Dale Johannesen wrote: >>> >>>> The error message is clean, >>>> but something like dg-require would be even better. >>> >>> >>> We do not have anything like dg-require. >>> >> >> What is dg-require? It checks whether target supports particular feature or not before running the test. >> >> >> If you can tell me how to get if llvm-gcc is 64 bit, I can see what I >> can do. >> > > How about: > > XREQUIRE: llvm-gcc -xc /dev/null -S -o /dev/null -m64 > > If that command returns success, then the -m64 option is supported. > > Crazy? Reasonable? Reasonable from user's point of view :) If XREQUIRE return success then only test is run otherwise test is not run. - Devang From clattner at apple.com Thu Nov 8 16:54:30 2007 From: clattner at apple.com (Chris Lattner) Date: Thu, 8 Nov 2007 14:54:30 -0800 Subject: [llvm-commits] [llvm] r43910 - in /llvm/trunk: include/llvm/CodeGen/Passes.h lib/CodeGen/BreakCriticalMachineEdges.cpp In-Reply-To: <200711082220.lA8MKN0Q016651@zion.cs.uiuc.edu> References: <200711082220.lA8MKN0Q016651@zion.cs.uiuc.edu> Message-ID: On Nov 8, 2007, at 2:20 PM, Owen Anderson wrote: > Author: resistor > Date: Thu Nov 8 16:20:23 2007 > New Revision: 43910 > > URL: http://llvm.org/viewvc/llvm-project?rev=43910&view=rev > Log: > Make BreakCriticalMachineEdges available as a pass that can be > depended on. Hey Owen, Here's a really important case that is non-obvious: consider: switch ... [1, BB1] [2, BB1] [3, BB1] ... BB1: X = phi [switchblock, x] [switchblock, x] [switchblock, x] [otherblock, y] All three edges between switchblock and BB1 are critical, yet it is critially (haha) important that they be split as: switch ... [1, NewBB] [2, NewBB] [3, NewBB] ... NewBB: br BB1 BB1: X = phi [BB1, x] [otherblock, y] Note that in this case, the edges are still critical after the xform... fun huh? :) Also, I second Evan's concern about this being a pass. It seems like it should be a function that passes can call when they need to. For StrongPHI elim for example, it only really needs to split critical edges to blocks that have phi's in them, right? -Chris From dalej at apple.com Thu Nov 8 16:59:12 2007 From: dalej at apple.com (Dale Johannesen) Date: Thu, 8 Nov 2007 14:59:12 -0800 Subject: [llvm-commits] [llvm] r43912 - /llvm/trunk/test/FrontendObjC/2007-09-25-EH.m In-Reply-To: References: <200711082226.lA8MQlCW016960@zion.cs.uiuc.edu> <56E2FFE7-9B55-45AC-9DB3-7ACC88787FAE@apple.com> <00CA9E6C-A06E-4E0A-B4F6-49CEBDE18678@apple.com> <0015A553-E8C8-488B-BD9B-CE8A8DFFDC1D@apple.com> <02FDD475-D4CC-4262-A69D-28007B2E0515@apple.com> Message-ID: >>>> On Nov 8, 2007, at 2:35 PM, Dale Johannesen wrote: >>>>> The error message is clean, >>>>> but something like dg-require would be even better. >>>> >>>> We do not have anything like dg-require. >>> >>> What is dg-require? > > It checks whether target supports particular feature or not before > running the test. The gcc testsuite uses this to encapsulate feature tests that apply to more than one target, but not everywhere. For example, 32-bit targets or IEEE floating point. (To add a new one you have to write some tcl code, unfortunately.) From lauro.venancio at gmail.com Thu Nov 8 16:58:02 2007 From: lauro.venancio at gmail.com (Lauro Ramos Venancio) Date: Thu, 8 Nov 2007 19:58:02 -0300 Subject: [llvm-commits] [llvm-gcc-4.2] r43909 - in /llvm-gcc-4.2/trunk/gcc: config/arm/arm.h llvm-convert.cpp In-Reply-To: <7A671DDF-4CDB-42CB-B29A-CB229841B780@apple.com> References: <200711082210.lA8MADNK016192@zion.cs.uiuc.edu> <7A671DDF-4CDB-42CB-B29A-CB229841B780@apple.com> Message-ID: <9c10c9f0711081458j27d99082j5809dd94133a4e4a@mail.gmail.com> 2007/11/8, Chris Lattner : > On Nov 8, 2007, at 2:10 PM, Lauro Ramos Venancio wrote: > > Author: laurov > > Date: Thu Nov 8 16:10:12 2007 > > New Revision: 43909 > > > > URL: http://llvm.org/viewvc/llvm-project?rev=43909&view=rev > > Log: > > Implement the '%@' inline asm ARM extension. > > Hey Lauro, > > in .td files, you can use "${:comment}" to print the comment > character, does this work in inline asm? I don't think so. Error message: Bad $ operand number in inline asm string: '${:comment test} Lauro From isanbard at gmail.com Thu Nov 8 16:57:11 2007 From: isanbard at gmail.com (Bill Wendling) Date: Thu, 08 Nov 2007 22:57:11 -0000 Subject: [llvm-commits] [llvm-gcc-4.2] r43913 [2/80] - in /llvm-gcc-4.2/trunk: boehm-gc/ boehm-gc/Mac_files/ boehm-gc/cord/ boehm-gc/doc/ boehm-gc/include/ boehm-gc/include/private/ boehm-gc/tests/ libffi/ libffi/include/ libffi/src/ libffi/src/alpha/ libffi/src/arm/ libffi/src/cris/ libffi/src/frv/ libffi/src/ia64/ libffi/src/m32r/ libffi/src/m68k/ libffi/src/mips/ libffi/src/pa/ libffi/src/powerpc/ libffi/src/s390/ libffi/src/sh/ libffi/src/sh64/ libffi/src/sparc/ libffi/src/x86/ libffi/testsuite/ libffi/testsuite/config/ lib... Message-ID: <200711082302.lA8N2wHL027402@zion.cs.uiuc.edu> Added: llvm-gcc-4.2/trunk/boehm-gc/NT_THREADS_MAKEFILE URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/NT_THREADS_MAKEFILE?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/NT_THREADS_MAKEFILE (added) +++ llvm-gcc-4.2/trunk/boehm-gc/NT_THREADS_MAKEFILE Thu Nov 8 16:56:19 2007 @@ -0,0 +1,2158 @@ +# Microsoft Developer Studio Generated NMAKE File, Format Version 4.10 +# This has been hand-edited way too many times. +# A clean, manually generated makefile would be an improvement. + +# TARGTYPE "Win32 (x86) Application" 0x0101 +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +!IF "$(CFG)" == "" +CFG=gctest - Win32 Release +!MESSAGE No configuration specified. Defaulting to cord - Win32 Debug. +!ENDIF + +!IF "$(CFG)" != "gc - Win32 Release" && "$(CFG)" != "gc - Win32 Debug" &&\ + "$(CFG)" != "gctest - Win32 Release" && "$(CFG)" != "gctest - Win32 Debug" &&\ + "$(CFG)" != "cord - Win32 Release" && "$(CFG)" != "cord - Win32 Debug" +!MESSAGE Invalid configuration "$(CFG)" specified. +!MESSAGE You can specify a configuration when running NMAKE on this makefile +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "gc.mak" CFG="cord - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "gc - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "gc - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "gctest - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "gctest - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE "cord - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "cord - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE +!ERROR An invalid configuration is specified. +!ENDIF + +!IF "$(OS)" == "Windows_NT" +NULL= +!ELSE +NULL=nul +!ENDIF +################################################################################ +# Begin Project +# PROP Target_Last_Scanned "gctest - Win32 Debug" + +!IF "$(CFG)" == "gc - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +OUTDIR=.\Release +INTDIR=.\Release + +ALL : ".\Release\gc.dll" ".\Release\gc.bsc" + +CLEAN : + - at erase ".\Release\allchblk.obj" + - at erase ".\Release\allchblk.sbr" + - at erase ".\Release\alloc.obj" + - at erase ".\Release\alloc.sbr" + - at erase ".\Release\blacklst.obj" + - at erase ".\Release\blacklst.sbr" + - at erase ".\Release\checksums.obj" + - at erase ".\Release\checksums.sbr" + - at erase ".\Release\dbg_mlc.obj" + - at erase ".\Release\dbg_mlc.sbr" + - at erase ".\Release\dyn_load.obj" + - at erase ".\Release\dyn_load.sbr" + - at erase ".\Release\finalize.obj" + - at erase ".\Release\finalize.sbr" + - at erase ".\Release\gc.bsc" + - at erase ".\Release\gc_cpp.obj" + - at erase ".\Release\gc_cpp.sbr" + - at erase ".\Release\gc.dll" + - at erase ".\Release\gc.exp" + - at erase ".\Release\gc.lib" + - at erase ".\Release\headers.obj" + - at erase ".\Release\headers.sbr" + - at erase ".\Release\mach_dep.obj" + - at erase ".\Release\mach_dep.sbr" + - at erase ".\Release\malloc.obj" + - at erase ".\Release\malloc.sbr" + - at erase ".\Release\mallocx.obj" + - at erase ".\Release\mallocx.sbr" + - at erase ".\Release\mark.obj" + - at erase ".\Release\mark.sbr" + - at erase ".\Release\mark_rts.obj" + - at erase ".\Release\mark_rts.sbr" + - at erase ".\Release\misc.obj" + - at erase ".\Release\misc.sbr" + - at erase ".\Release\new_hblk.obj" + - at erase ".\Release\new_hblk.sbr" + - at erase ".\Release\obj_map.obj" + - at erase ".\Release\obj_map.sbr" + - at erase ".\Release\os_dep.obj" + - at erase ".\Release\os_dep.sbr" + - at erase ".\Release\ptr_chck.obj" + - at erase ".\Release\ptr_chck.sbr" + - at erase ".\Release\reclaim.obj" + - at erase ".\Release\reclaim.sbr" + - at erase ".\Release\stubborn.obj" + - at erase ".\Release\stubborn.sbr" + - at erase ".\Release\typd_mlc.obj" + - at erase ".\Release\typd_mlc.sbr" + - at erase ".\Release\win32_threads.obj" + - at erase ".\Release\win32_threads.sbr" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I include /D "NDEBUG" /D "SILENT" /D "GC_BUILD" /D "WIN32" /D "_WINDOWS" /D "ALL_INTERIOR_POINTERS" /D "__STDC__" /D "GC_WIN32_THREADS" /FR /YX /c +CPP_PROJ=/nologo /MD /W3 /GX /O2 /I include /D "NDEBUG" /D "SILENT" /D "GC_BUILD" /D\ + "WIN32" /D "_WINDOWS" /D "ALL_INTERIOR_POINTERS" /D "__STDC__" /D\ + "GC_WIN32_THREADS" /FR"$(INTDIR)/" /Fp"$(INTDIR)/gc.pch" /YX /Fo"$(INTDIR)/" /c +CPP_OBJS=.\Release/ +CPP_SBRS=.\Release/ + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /win32 +MTL_PROJ=/nologo /D "NDEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x809 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/gc.bsc" +BSC32_SBRS= \ + ".\Release\allchblk.sbr" \ + ".\Release\alloc.sbr" \ + ".\Release\blacklst.sbr" \ + ".\Release\checksums.sbr" \ + ".\Release\dbg_mlc.sbr" \ + ".\Release\dyn_load.sbr" \ + ".\Release\finalize.sbr" \ + ".\Release\gc_cpp.sbr" \ + ".\Release\headers.sbr" \ + ".\Release\mach_dep.sbr" \ + ".\Release\malloc.sbr" \ + ".\Release\mallocx.sbr" \ + ".\Release\mark.sbr" \ + ".\Release\mark_rts.sbr" \ + ".\Release\misc.sbr" \ + ".\Release\new_hblk.sbr" \ + ".\Release\obj_map.sbr" \ + ".\Release\os_dep.sbr" \ + ".\Release\ptr_chck.sbr" \ + ".\Release\reclaim.sbr" \ + ".\Release\stubborn.sbr" \ + ".\Release\typd_mlc.sbr" \ + ".\Release\win32_threads.sbr" + +".\Release\gc.bsc" : "$(OUTDIR)" $(BSC32_SBRS) + $(BSC32) @<< + $(BSC32_FLAGS) $(BSC32_SBRS) +<< + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ + advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ + odbccp32.lib /nologo /subsystem:windows /dll /incremental:no\ + /pdb:"$(OUTDIR)/gc.pdb" /machine:I386 /out:"$(OUTDIR)/gc.dll"\ + /implib:"$(OUTDIR)/gc.lib" +LINK32_OBJS= \ + ".\Release\allchblk.obj" \ + ".\Release\alloc.obj" \ + ".\Release\blacklst.obj" \ + ".\Release\checksums.obj" \ + ".\Release\dbg_mlc.obj" \ + ".\Release\dyn_load.obj" \ + ".\Release\finalize.obj" \ + ".\Release\gc_cpp.obj" \ + ".\Release\headers.obj" \ + ".\Release\mach_dep.obj" \ + ".\Release\malloc.obj" \ + ".\Release\mallocx.obj" \ + ".\Release\mark.obj" \ + ".\Release\mark_rts.obj" \ + ".\Release\misc.obj" \ + ".\Release\new_hblk.obj" \ + ".\Release\obj_map.obj" \ + ".\Release\os_dep.obj" \ + ".\Release\ptr_chck.obj" \ + ".\Release\reclaim.obj" \ + ".\Release\stubborn.obj" \ + ".\Release\typd_mlc.obj" \ + ".\Release\win32_threads.obj" + +".\Release\gc.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +OUTDIR=.\Debug +INTDIR=.\Debug + +ALL : ".\Debug\gc.dll" ".\Debug\gc.bsc" + +CLEAN : + - at erase ".\Debug\allchblk.obj" + - at erase ".\Debug\allchblk.sbr" + - at erase ".\Debug\alloc.obj" + - at erase ".\Debug\alloc.sbr" + - at erase ".\Debug\blacklst.obj" + - at erase ".\Debug\blacklst.sbr" + - at erase ".\Debug\checksums.obj" + - at erase ".\Debug\checksums.sbr" + - at erase ".\Debug\dbg_mlc.obj" + - at erase ".\Debug\dbg_mlc.sbr" + - at erase ".\Debug\dyn_load.obj" + - at erase ".\Debug\dyn_load.sbr" + - at erase ".\Debug\finalize.obj" + - at erase ".\Debug\finalize.sbr" + - at erase ".\Debug\gc_cpp.obj" + - at erase ".\Debug\gc_cpp.sbr" + - at erase ".\Debug\gc.bsc" + - at erase ".\Debug\gc.dll" + - at erase ".\Debug\gc.exp" + - at erase ".\Debug\gc.lib" + - at erase ".\Debug\gc.map" + - at erase ".\Debug\gc.pdb" + - at erase ".\Debug\headers.obj" + - at erase ".\Debug\headers.sbr" + - at erase ".\Debug\mach_dep.obj" + - at erase ".\Debug\mach_dep.sbr" + - at erase ".\Debug\malloc.obj" + - at erase ".\Debug\malloc.sbr" + - at erase ".\Debug\mallocx.obj" + - at erase ".\Debug\mallocx.sbr" + - at erase ".\Debug\mark.obj" + - at erase ".\Debug\mark.sbr" + - at erase ".\Debug\mark_rts.obj" + - at erase ".\Debug\mark_rts.sbr" + - at erase ".\Debug\misc.obj" + - at erase ".\Debug\misc.sbr" + - at erase ".\Debug\new_hblk.obj" + - at erase ".\Debug\new_hblk.sbr" + - at erase ".\Debug\obj_map.obj" + - at erase ".\Debug\obj_map.sbr" + - at erase ".\Debug\os_dep.obj" + - at erase ".\Debug\os_dep.sbr" + - at erase ".\Debug\ptr_chck.obj" + - at erase ".\Debug\ptr_chck.sbr" + - at erase ".\Debug\reclaim.obj" + - at erase ".\Debug\reclaim.sbr" + - at erase ".\Debug\stubborn.obj" + - at erase ".\Debug\stubborn.sbr" + - at erase ".\Debug\typd_mlc.obj" + - at erase ".\Debug\typd_mlc.sbr" + - at erase ".\Debug\vc40.idb" + - at erase ".\Debug\vc40.pdb" + - at erase ".\Debug\win32_threads.obj" + - at erase ".\Debug\win32_threads.sbr" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I include /D "_DEBUG" /D "SILENT" /D "GC_BUILD" /D "WIN32" /D "_WINDOWS" /D "ALL_INTERIOR_POINTERS" /D "__STDC__" /D "GC_WIN32_THREADS" /FR /YX /c +CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I include /D "_DEBUG" /D "SILENT" /D "GC_BUILD"\ + /D "WIN32" /D "_WINDOWS" /D "ALL_INTERIOR_POINTERS" /D "__STDC__" /D\ + "GC_WIN32_THREADS" /FR"$(INTDIR)/" /Fp"$(INTDIR)/gc.pch" /YX /Fo"$(INTDIR)/"\ + /Fd"$(INTDIR)/" /c +CPP_OBJS=.\Debug/ +CPP_SBRS=.\Debug/ + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /win32 +MTL_PROJ=/nologo /D "_DEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x809 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/gc.bsc" +BSC32_SBRS= \ + ".\Debug\allchblk.sbr" \ + ".\Debug\alloc.sbr" \ + ".\Debug\blacklst.sbr" \ + ".\Debug\checksums.sbr" \ + ".\Debug\dbg_mlc.sbr" \ + ".\Debug\dyn_load.sbr" \ + ".\Debug\finalize.sbr" \ + ".\Debug\gc_cpp.sbr" \ + ".\Debug\headers.sbr" \ + ".\Debug\mach_dep.sbr" \ + ".\Debug\malloc.sbr" \ + ".\Debug\mallocx.sbr" \ + ".\Debug\mark.sbr" \ + ".\Debug\mark_rts.sbr" \ + ".\Debug\misc.sbr" \ + ".\Debug\new_hblk.sbr" \ + ".\Debug\obj_map.sbr" \ + ".\Debug\os_dep.sbr" \ + ".\Debug\ptr_chck.sbr" \ + ".\Debug\reclaim.sbr" \ + ".\Debug\stubborn.sbr" \ + ".\Debug\typd_mlc.sbr" \ + ".\Debug\win32_threads.sbr" + +".\Debug\gc.bsc" : "$(OUTDIR)" $(BSC32_SBRS) + $(BSC32) @<< + $(BSC32_FLAGS) $(BSC32_SBRS) +<< + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ + advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ + odbccp32.lib /nologo /subsystem:windows /dll /incremental:no\ + /pdb:"$(OUTDIR)/gc.pdb" /map:"$(INTDIR)/gc.map" /debug /machine:I386\ + /out:"$(OUTDIR)/gc.dll" /implib:"$(OUTDIR)/gc.lib" +LINK32_OBJS= \ + ".\Debug\allchblk.obj" \ + ".\Debug\alloc.obj" \ + ".\Debug\blacklst.obj" \ + ".\Debug\checksums.obj" \ + ".\Debug\dbg_mlc.obj" \ + ".\Debug\dyn_load.obj" \ + ".\Debug\finalize.obj" \ + ".\Debug\gc_cpp.obj" \ + ".\Debug\headers.obj" \ + ".\Debug\mach_dep.obj" \ + ".\Debug\malloc.obj" \ + ".\Debug\mallocx.obj" \ + ".\Debug\mark.obj" \ + ".\Debug\mark_rts.obj" \ + ".\Debug\misc.obj" \ + ".\Debug\new_hblk.obj" \ + ".\Debug\obj_map.obj" \ + ".\Debug\os_dep.obj" \ + ".\Debug\ptr_chck.obj" \ + ".\Debug\reclaim.obj" \ + ".\Debug\stubborn.obj" \ + ".\Debug\typd_mlc.obj" \ + ".\Debug\win32_threads.obj" + +".\Debug\gc.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "gctest - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "gctest\Release" +# PROP BASE Intermediate_Dir "gctest\Release" +# PROP BASE Target_Dir "gctest" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "gctest\Release" +# PROP Intermediate_Dir "gctest\Release" +# PROP Target_Dir "gctest" +OUTDIR=.\gctest\Release +INTDIR=.\gctest\Release + +ALL : "gc - Win32 Release" ".\Release\gctest.exe" + +CLEAN : + - at erase ".\gctest\Release\test.obj" + - at erase ".\Release\gctest.exe" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +test.c : tests\test.c + copy tests\test.c test.c + +CPP=cl.exe +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I include /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "ALL_INTERIOR_POINTERS" /D "__STDC__" /D "GC_WIN32_THREADS" /YX /c +CPP_PROJ=/nologo /MD /W3 /GX /O2 /I include /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D\ + "ALL_INTERIOR_POINTERS" /D "__STDC__" /D "GC_WIN32_THREADS"\ + /Fp"$(INTDIR)/gctest.pch" /YX /Fo"$(INTDIR)/" /c +CPP_OBJS=.\gctest\Release/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /win32 +MTL_PROJ=/nologo /D "NDEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x809 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/gctest.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 /out:"Release/gctest.exe" +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ + advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ + odbccp32.lib /nologo /subsystem:windows /incremental:no\ + /pdb:"$(OUTDIR)/gctest.pdb" /machine:I386 /out:"Release/gctest.exe" +LINK32_OBJS= \ + ".\gctest\Release\test.obj" \ + ".\Release\gc.lib" + +".\Release\gctest.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "gctest - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "gctest\Debug" +# PROP BASE Intermediate_Dir "gctest\Debug" +# PROP BASE Target_Dir "gctest" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "gctest\Debug" +# PROP Intermediate_Dir "gctest\Debug" +# PROP Target_Dir "gctest" +OUTDIR=.\gctest\Debug +INTDIR=.\gctest\Debug + +ALL : "gc - Win32 Debug" ".\Debug\gctest.exe" ".\gctest\Debug\gctest.bsc" + +CLEAN : + - at erase ".\Debug\gctest.exe" + - at erase ".\gctest\Debug\gctest.bsc" + - at erase ".\gctest\Debug\gctest.map" + - at erase ".\gctest\Debug\gctest.pdb" + - at erase ".\gctest\Debug\test.obj" + - at erase ".\gctest\Debug\test.sbr" + - at erase ".\gctest\Debug\vc40.idb" + - at erase ".\gctest\Debug\vc40.pdb" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "ALL_INTERIOR_POINTERS" /D "__STDC__" /D "GC_WIN32_THREADS" /FR /YX /c +CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I include /D "_DEBUG" /D "WIN32" /D "_WINDOWS"\ + /D "ALL_INTERIOR_POINTERS" /D "__STDC__" /D "GC_WIN32_THREADS" /FR"$(INTDIR)/"\ + /Fp"$(INTDIR)/gctest.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c +CPP_OBJS=.\gctest\Debug/ +CPP_SBRS=.\gctest\Debug/ + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /win32 +MTL_PROJ=/nologo /D "_DEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x809 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/gctest.bsc" +BSC32_SBRS= \ + ".\gctest\Debug\test.sbr" + +".\gctest\Debug\gctest.bsc" : "$(OUTDIR)" $(BSC32_SBRS) + $(BSC32) @<< + $(BSC32_FLAGS) $(BSC32_SBRS) +<< + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /incremental:no /map /debug /machine:I386 /out:"Debug/gctest.exe" +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ + advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ + odbccp32.lib /nologo /subsystem:windows /incremental:no\ + /pdb:"$(OUTDIR)/gctest.pdb" /map:"$(INTDIR)/gctest.map" /debug /machine:I386\ + /out:"Debug/gctest.exe" +LINK32_OBJS= \ + ".\Debug\gc.lib" \ + ".\gctest\Debug\test.obj" + +".\Debug\gctest.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "cord - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "cord\Release" +# PROP BASE Intermediate_Dir "cord\Release" +# PROP BASE Target_Dir "cord" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "cord\Release" +# PROP Intermediate_Dir "cord\Release" +# PROP Target_Dir "cord" +OUTDIR=.\cord\Release +INTDIR=.\cord\Release + +ALL : "gc - Win32 Release" ".\Release\de.exe" + +CLEAN : + - at erase ".\cord\Release\cordbscs.obj" + - at erase ".\cord\Release\cordxtra.obj" + - at erase ".\cord\Release\de.obj" + - at erase ".\cord\Release\de_win.obj" + - at erase ".\cord\Release\de_win.res" + - at erase ".\Release\de.exe" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "ALL_INTERIOR_POINTERS" /YX /c +CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "." /I include /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D\ + "ALL_INTERIOR_POINTERS" /Fp"$(INTDIR)/cord.pch" /YX /Fo"$(INTDIR)/" /c +CPP_OBJS=.\cord\Release/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /win32 +MTL_PROJ=/nologo /D "NDEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x809 /d "NDEBUG" +RSC_PROJ=/l 0x809 /fo"$(INTDIR)/de_win.res" /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/cord.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 /out:"Release/de.exe" +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ + advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ + odbccp32.lib /nologo /subsystem:windows /incremental:no /pdb:"$(OUTDIR)/de.pdb"\ + /machine:I386 /out:"Release/de.exe" +LINK32_OBJS= \ + ".\cord\Release\cordbscs.obj" \ + ".\cord\Release\cordxtra.obj" \ + ".\cord\Release\de.obj" \ + ".\cord\Release\de_win.obj" \ + ".\cord\Release\de_win.res" \ + ".\Release\gc.lib" + +".\Release\de.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "cord - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "cord\Debug" +# PROP BASE Intermediate_Dir "cord\Debug" +# PROP BASE Target_Dir "cord" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "cord\Debug" +# PROP Intermediate_Dir "cord\Debug" +# PROP Target_Dir "cord" +OUTDIR=.\cord\Debug +INTDIR=.\cord\Debug + +ALL : "gc - Win32 Debug" ".\Debug\de.exe" + +CLEAN : + - at erase ".\cord\Debug\cordbscs.obj" + - at erase ".\cord\Debug\cordxtra.obj" + - at erase ".\cord\Debug\de.obj" + - at erase ".\cord\Debug\de.pdb" + - at erase ".\cord\Debug\de_win.obj" + - at erase ".\cord\Debug\de_win.res" + - at erase ".\cord\Debug\vc40.idb" + - at erase ".\cord\Debug\vc40.pdb" + - at erase ".\Debug\de.exe" + - at erase ".\Debug\de.ilk" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "ALL_INTERIOR_POINTERS" /YX /c +CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "." /I include /D "_DEBUG" /D "WIN32" /D\ + "_WINDOWS" /D "ALL_INTERIOR_POINTERS" /Fp"$(INTDIR)/cord.pch" /YX\ + /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c +CPP_OBJS=.\cord\Debug/ +CPP_SBRS=.\. + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +MTL=mktyplib.exe +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /win32 +MTL_PROJ=/nologo /D "_DEBUG" /win32 +RSC=rc.exe +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x809 /d "_DEBUG" +RSC_PROJ=/l 0x809 /fo"$(INTDIR)/de_win.res" /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/cord.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /out:"Debug/de.exe" +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ + advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ + odbccp32.lib /nologo /subsystem:windows /incremental:yes\ + /pdb:"$(OUTDIR)/de.pdb" /debug /machine:I386 /out:"Debug/de.exe" +LINK32_OBJS= \ + ".\cord\Debug\cordbscs.obj" \ + ".\cord\Debug\cordxtra.obj" \ + ".\cord\Debug\de.obj" \ + ".\cord\Debug\de_win.obj" \ + ".\cord\Debug\de_win.res" \ + ".\Debug\gc.lib" + +".\Debug\de.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ENDIF + +################################################################################ +# Begin Target + +# Name "gc - Win32 Release" +# Name "gc - Win32 Debug" + +!IF "$(CFG)" == "gc - Win32 Release" + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +!ENDIF + +################################################################################ +# Begin Source File + +SOURCE=.\gc_cpp.cpp + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_RECLA=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + ".\include\gc_cpp.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_RECLA=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\gc_cpp.obj" : $(SOURCE) $(DEP_CPP_RECLA) "$(INTDIR)" + +".\Release\gc_cpp.sbr" : $(SOURCE) $(DEP_CPP_RECLA) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_RECLA=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + ".\include\gc_cpp.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_RECLA=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\gc_cpp.obj" : $(SOURCE) $(DEP_CPP_RECLA) "$(INTDIR)" + +".\Debug\gc_cpp.sbr" : $(SOURCE) $(DEP_CPP_RECLA) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\reclaim.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_RECLA=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_RECLA=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\reclaim.obj" : $(SOURCE) $(DEP_CPP_RECLA) "$(INTDIR)" + +".\Release\reclaim.sbr" : $(SOURCE) $(DEP_CPP_RECLA) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_RECLA=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_RECLA=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\reclaim.obj" : $(SOURCE) $(DEP_CPP_RECLA) "$(INTDIR)" + +".\Debug\reclaim.sbr" : $(SOURCE) $(DEP_CPP_RECLA) "$(INTDIR)" + + +!ENDIF + +# End Source File + +################################################################################ +# Begin Source File + +SOURCE=.\os_dep.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_OS_DE=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\STAT.H"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_OS_DE=\ + ".\il\PCR_IL.h"\ + ".\mm\PCR_MM.h"\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + ".\vd\PCR_VD.h"\ + + +".\Release\os_dep.obj" : $(SOURCE) $(DEP_CPP_OS_DE) "$(INTDIR)" + +".\Release\os_dep.sbr" : $(SOURCE) $(DEP_CPP_OS_DE) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_OS_DE=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\STAT.H"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_OS_DE=\ + ".\il\PCR_IL.h"\ + ".\mm\PCR_MM.h"\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + ".\vd\PCR_VD.h"\ + + +".\Debug\os_dep.obj" : $(SOURCE) $(DEP_CPP_OS_DE) "$(INTDIR)" + +".\Debug\os_dep.sbr" : $(SOURCE) $(DEP_CPP_OS_DE) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\misc.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_MISC_=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_MISC_=\ + ".\il\PCR_IL.h"\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\misc.obj" : $(SOURCE) $(DEP_CPP_MISC_) "$(INTDIR)" + +".\Release\misc.sbr" : $(SOURCE) $(DEP_CPP_MISC_) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_MISC_=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_MISC_=\ + ".\il\PCR_IL.h"\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\misc.obj" : $(SOURCE) $(DEP_CPP_MISC_) "$(INTDIR)" + +".\Debug\misc.sbr" : $(SOURCE) $(DEP_CPP_MISC_) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\mark_rts.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_MARK_=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_MARK_=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\mark_rts.obj" : $(SOURCE) $(DEP_CPP_MARK_) "$(INTDIR)" + +".\Release\mark_rts.sbr" : $(SOURCE) $(DEP_CPP_MARK_) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_MARK_=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_MARK_=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\mark_rts.obj" : $(SOURCE) $(DEP_CPP_MARK_) "$(INTDIR)" + +".\Debug\mark_rts.sbr" : $(SOURCE) $(DEP_CPP_MARK_) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\mach_dep.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_MACH_=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_MACH_=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\mach_dep.obj" : $(SOURCE) $(DEP_CPP_MACH_) "$(INTDIR)" + +".\Release\mach_dep.sbr" : $(SOURCE) $(DEP_CPP_MACH_) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_MACH_=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_MACH_=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\mach_dep.obj" : $(SOURCE) $(DEP_CPP_MACH_) "$(INTDIR)" + +".\Debug\mach_dep.sbr" : $(SOURCE) $(DEP_CPP_MACH_) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\headers.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_HEADE=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_HEADE=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\headers.obj" : $(SOURCE) $(DEP_CPP_HEADE) "$(INTDIR)" + +".\Release\headers.sbr" : $(SOURCE) $(DEP_CPP_HEADE) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_HEADE=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_HEADE=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\headers.obj" : $(SOURCE) $(DEP_CPP_HEADE) "$(INTDIR)" + +".\Debug\headers.sbr" : $(SOURCE) $(DEP_CPP_HEADE) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\alloc.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_ALLOC=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_ALLOC=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\alloc.obj" : $(SOURCE) $(DEP_CPP_ALLOC) "$(INTDIR)" + +".\Release\alloc.sbr" : $(SOURCE) $(DEP_CPP_ALLOC) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_ALLOC=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_ALLOC=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\alloc.obj" : $(SOURCE) $(DEP_CPP_ALLOC) "$(INTDIR)" + +".\Debug\alloc.sbr" : $(SOURCE) $(DEP_CPP_ALLOC) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\allchblk.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_ALLCH=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_ALLCH=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\allchblk.obj" : $(SOURCE) $(DEP_CPP_ALLCH) "$(INTDIR)" + +".\Release\allchblk.sbr" : $(SOURCE) $(DEP_CPP_ALLCH) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_ALLCH=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_ALLCH=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\allchblk.obj" : $(SOURCE) $(DEP_CPP_ALLCH) "$(INTDIR)" + +".\Debug\allchblk.sbr" : $(SOURCE) $(DEP_CPP_ALLCH) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\stubborn.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_STUBB=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_STUBB=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\stubborn.obj" : $(SOURCE) $(DEP_CPP_STUBB) "$(INTDIR)" + +".\Release\stubborn.sbr" : $(SOURCE) $(DEP_CPP_STUBB) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_STUBB=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_STUBB=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\stubborn.obj" : $(SOURCE) $(DEP_CPP_STUBB) "$(INTDIR)" + +".\Debug\stubborn.sbr" : $(SOURCE) $(DEP_CPP_STUBB) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\obj_map.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_OBJ_M=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_OBJ_M=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\obj_map.obj" : $(SOURCE) $(DEP_CPP_OBJ_M) "$(INTDIR)" + +".\Release\obj_map.sbr" : $(SOURCE) $(DEP_CPP_OBJ_M) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_OBJ_M=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_OBJ_M=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\obj_map.obj" : $(SOURCE) $(DEP_CPP_OBJ_M) "$(INTDIR)" + +".\Debug\obj_map.sbr" : $(SOURCE) $(DEP_CPP_OBJ_M) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\new_hblk.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_NEW_H=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_NEW_H=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\new_hblk.obj" : $(SOURCE) $(DEP_CPP_NEW_H) "$(INTDIR)" + +".\Release\new_hblk.sbr" : $(SOURCE) $(DEP_CPP_NEW_H) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_NEW_H=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_NEW_H=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\new_hblk.obj" : $(SOURCE) $(DEP_CPP_NEW_H) "$(INTDIR)" + +".\Debug\new_hblk.sbr" : $(SOURCE) $(DEP_CPP_NEW_H) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\mark.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_MARK_C=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_pmark.h"\ + ".\include\gc_mark.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_MARK_C=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\mark.obj" : $(SOURCE) $(DEP_CPP_MARK_C) "$(INTDIR)" + +".\Release\mark.sbr" : $(SOURCE) $(DEP_CPP_MARK_C) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_MARK_C=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_pmark.h"\ + ".\include\gc_mark.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_MARK_C=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\mark.obj" : $(SOURCE) $(DEP_CPP_MARK_C) "$(INTDIR)" + +".\Debug\mark.sbr" : $(SOURCE) $(DEP_CPP_MARK_C) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\malloc.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_MALLO=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_MALLO=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\malloc.obj" : $(SOURCE) $(DEP_CPP_MALLO) "$(INTDIR)" + +".\Release\malloc.sbr" : $(SOURCE) $(DEP_CPP_MALLO) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_MALLO=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_MALLO=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\malloc.obj" : $(SOURCE) $(DEP_CPP_MALLO) "$(INTDIR)" + +".\Debug\malloc.sbr" : $(SOURCE) $(DEP_CPP_MALLO) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\mallocx.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_MALLX=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_MALLX=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\mallocx.obj" : $(SOURCE) $(DEP_CPP_MALLX) "$(INTDIR)" + +".\Release\mallocx.sbr" : $(SOURCE) $(DEP_CPP_MALLX) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_MALLX=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_MALLX=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\mallocx.obj" : $(SOURCE) $(DEP_CPP_MALLX) "$(INTDIR)" + +".\Debug\mallocx.sbr" : $(SOURCE) $(DEP_CPP_MALLX) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\finalize.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_FINAL=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_pmark.h"\ + ".\include\gc_mark.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_FINAL=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\finalize.obj" : $(SOURCE) $(DEP_CPP_FINAL) "$(INTDIR)" + +".\Release\finalize.sbr" : $(SOURCE) $(DEP_CPP_FINAL) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_FINAL=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_pmark.h"\ + ".\include\gc_mark.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_FINAL=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\finalize.obj" : $(SOURCE) $(DEP_CPP_FINAL) "$(INTDIR)" + +".\Debug\finalize.sbr" : $(SOURCE) $(DEP_CPP_FINAL) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\dbg_mlc.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_DBG_M=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_DBG_M=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\dbg_mlc.obj" : $(SOURCE) $(DEP_CPP_DBG_M) "$(INTDIR)" + +".\Release\dbg_mlc.sbr" : $(SOURCE) $(DEP_CPP_DBG_M) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_DBG_M=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_DBG_M=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\dbg_mlc.obj" : $(SOURCE) $(DEP_CPP_DBG_M) "$(INTDIR)" + +".\Debug\dbg_mlc.sbr" : $(SOURCE) $(DEP_CPP_DBG_M) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\blacklst.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_BLACK=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_BLACK=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\blacklst.obj" : $(SOURCE) $(DEP_CPP_BLACK) "$(INTDIR)" + +".\Release\blacklst.sbr" : $(SOURCE) $(DEP_CPP_BLACK) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_BLACK=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_BLACK=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\blacklst.obj" : $(SOURCE) $(DEP_CPP_BLACK) "$(INTDIR)" + +".\Debug\blacklst.sbr" : $(SOURCE) $(DEP_CPP_BLACK) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\typd_mlc.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_TYPD_=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_pmark.h"\ + ".\include\gc_mark.h"\ + ".\include\private\gc_priv.h"\ + ".\include\gc_typed.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_TYPD_=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\typd_mlc.obj" : $(SOURCE) $(DEP_CPP_TYPD_) "$(INTDIR)" + +".\Release\typd_mlc.sbr" : $(SOURCE) $(DEP_CPP_TYPD_) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_TYPD_=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_pmark.h"\ + ".\include\gc_mark.h"\ + ".\include\private\gc_priv.h"\ + ".\include\gc_typed.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_TYPD_=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\typd_mlc.obj" : $(SOURCE) $(DEP_CPP_TYPD_) "$(INTDIR)" + +".\Debug\typd_mlc.sbr" : $(SOURCE) $(DEP_CPP_TYPD_) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\ptr_chck.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_PTR_C=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_pmark.h"\ + ".\include\gc_mark.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_PTR_C=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\ptr_chck.obj" : $(SOURCE) $(DEP_CPP_PTR_C) "$(INTDIR)" + +".\Release\ptr_chck.sbr" : $(SOURCE) $(DEP_CPP_PTR_C) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_PTR_C=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_pmark.h"\ + ".\include\gc_mark.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_PTR_C=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\ptr_chck.obj" : $(SOURCE) $(DEP_CPP_PTR_C) "$(INTDIR)" + +".\Debug\ptr_chck.sbr" : $(SOURCE) $(DEP_CPP_PTR_C) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\dyn_load.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_DYN_L=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\STAT.H"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_DYN_L=\ + ".\il\PCR_IL.h"\ + ".\mm\PCR_MM.h"\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\dyn_load.obj" : $(SOURCE) $(DEP_CPP_DYN_L) "$(INTDIR)" + +".\Release\dyn_load.sbr" : $(SOURCE) $(DEP_CPP_DYN_L) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_DYN_L=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\STAT.H"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_DYN_L=\ + ".\il\PCR_IL.h"\ + ".\mm\PCR_MM.h"\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\dyn_load.obj" : $(SOURCE) $(DEP_CPP_DYN_L) "$(INTDIR)" + +".\Debug\dyn_load.sbr" : $(SOURCE) $(DEP_CPP_DYN_L) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\win32_threads.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_WIN32=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_WIN32=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\win32_threads.obj" : $(SOURCE) $(DEP_CPP_WIN32) "$(INTDIR)" + +".\Release\win32_threads.sbr" : $(SOURCE) $(DEP_CPP_WIN32) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_WIN32=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_WIN32=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\win32_threads.obj" : $(SOURCE) $(DEP_CPP_WIN32) "$(INTDIR)" + +".\Debug\win32_threads.sbr" : $(SOURCE) $(DEP_CPP_WIN32) "$(INTDIR)" + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\checksums.c + +!IF "$(CFG)" == "gc - Win32 Release" + +DEP_CPP_CHECK=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_CHECK=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Release\checksums.obj" : $(SOURCE) $(DEP_CPP_CHECK) "$(INTDIR)" + +".\Release\checksums.sbr" : $(SOURCE) $(DEP_CPP_CHECK) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gc - Win32 Debug" + +DEP_CPP_CHECK=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_CHECK=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +".\Debug\checksums.obj" : $(SOURCE) $(DEP_CPP_CHECK) "$(INTDIR)" + +".\Debug\checksums.sbr" : $(SOURCE) $(DEP_CPP_CHECK) "$(INTDIR)" + + +!ENDIF + +# End Source File +# End Target +################################################################################ +# Begin Target + +# Name "gctest - Win32 Release" +# Name "gctest - Win32 Debug" + +!IF "$(CFG)" == "gctest - Win32 Release" + +!ELSEIF "$(CFG)" == "gctest - Win32 Debug" + +!ENDIF + +################################################################################ +# Begin Project Dependency + +# Project_Dep_Name "gc" + +!IF "$(CFG)" == "gctest - Win32 Release" + +"gc - Win32 Release" : + $(MAKE) /$(MAKEFLAGS) /F ".\gc.mak" CFG="gc - Win32 Release" + +!ELSEIF "$(CFG)" == "gctest - Win32 Debug" + +"gc - Win32 Debug" : + $(MAKE) /$(MAKEFLAGS) /F ".\gc.mak" CFG="gc - Win32 Debug" + +!ENDIF + +# End Project Dependency +################################################################################ +# Begin Source File + +SOURCE=.\tests\test.c +DEP_CPP_TEST_=\ + ".\include\private\gcconfig.h"\ + ".\include\gc.h"\ + ".\include\private\gc_hdrs.h"\ + ".\include\private\gc_priv.h"\ + ".\include\gc_typed.h"\ + {$(INCLUDE)}"\sys\TYPES.H"\ + +NODEP_CPP_TEST_=\ + ".\th\PCR_Th.h"\ + ".\th\PCR_ThCrSec.h"\ + ".\th\PCR_ThCtl.h"\ + + +!IF "$(CFG)" == "gctest - Win32 Release" + + +".\gctest\Release\test.obj" : $(SOURCE) $(DEP_CPP_TEST_) "$(INTDIR)" + + +!ELSEIF "$(CFG)" == "gctest - Win32 Debug" + + +".\gctest\Debug\test.obj" : $(SOURCE) $(DEP_CPP_TEST_) "$(INTDIR)" + +".\gctest\Debug\test.sbr" : $(SOURCE) $(DEP_CPP_TEST_) "$(INTDIR)" + + +!ENDIF + +# End Source File +# End Target +################################################################################ +# Begin Target + +# Name "cord - Win32 Release" +# Name "cord - Win32 Debug" + +!IF "$(CFG)" == "cord - Win32 Release" + +!ELSEIF "$(CFG)" == "cord - Win32 Debug" + +!ENDIF + +################################################################################ +# Begin Project Dependency + +# Project_Dep_Name "gc" + +!IF "$(CFG)" == "cord - Win32 Release" + +"gc - Win32 Release" : + $(MAKE) /$(MAKEFLAGS) /F ".\gc.mak" CFG="gc - Win32 Release" + +!ELSEIF "$(CFG)" == "cord - Win32 Debug" + +"gc - Win32 Debug" : + $(MAKE) /$(MAKEFLAGS) /F ".\gc.mak" CFG="gc - Win32 Debug" + +!ENDIF + +# End Project Dependency +################################################################################ +# Begin Source File + +SOURCE=.\cord\de_win.c +DEP_CPP_DE_WI=\ + ".\include\cord.h"\ + ".\cord\de_cmds.h"\ + ".\cord\de_win.h"\ + ".\include\private\cord_pos.h"\ + +NODEP_CPP_DE_WI=\ + ".\include\gc.h"\ + + +!IF "$(CFG)" == "cord - Win32 Release" + + +".\cord\Release\de_win.obj" : $(SOURCE) $(DEP_CPP_DE_WI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "cord - Win32 Debug" + + +".\cord\Debug\de_win.obj" : $(SOURCE) $(DEP_CPP_DE_WI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\cord\de.c +DEP_CPP_DE_C2e=\ + ".\include\cord.h"\ + ".\cord\de_cmds.h"\ + ".\cord\de_win.h"\ + ".\include\private\cord_pos.h"\ + +NODEP_CPP_DE_C2e=\ + ".\include\gc.h"\ + + +!IF "$(CFG)" == "cord - Win32 Release" + + +".\cord\Release\de.obj" : $(SOURCE) $(DEP_CPP_DE_C2e) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "cord - Win32 Debug" + + +".\cord\Debug\de.obj" : $(SOURCE) $(DEP_CPP_DE_C2e) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\cord\cordxtra.c +DEP_CPP_CORDX=\ + ".\include\cord.h"\ + ".\include\ec.h"\ + ".\include\private\cord_pos.h"\ + +NODEP_CPP_CORDX=\ + ".\include\gc.h"\ + + +!IF "$(CFG)" == "cord - Win32 Release" + + +".\cord\Release\cordxtra.obj" : $(SOURCE) $(DEP_CPP_CORDX) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "cord - Win32 Debug" + + +".\cord\Debug\cordxtra.obj" : $(SOURCE) $(DEP_CPP_CORDX) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\cord\cordbscs.c +DEP_CPP_CORDB=\ + ".\include\cord.h"\ + ".\include\private\cord_pos.h"\ + +NODEP_CPP_CORDB=\ + ".\include\gc.h"\ + + +!IF "$(CFG)" == "cord - Win32 Release" + + +".\cord\Release\cordbscs.obj" : $(SOURCE) $(DEP_CPP_CORDB) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ELSEIF "$(CFG)" == "cord - Win32 Debug" + + +".\cord\Debug\cordbscs.obj" : $(SOURCE) $(DEP_CPP_CORDB) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\cord\de_win.RC + +!IF "$(CFG)" == "cord - Win32 Release" + + +".\cord\Release\de_win.res" : $(SOURCE) "$(INTDIR)" + $(RSC) /l 0x809 /fo"$(INTDIR)/de_win.res" /i "cord" /d "NDEBUG" $(SOURCE) + + +!ELSEIF "$(CFG)" == "cord - Win32 Debug" + + +".\cord\Debug\de_win.res" : $(SOURCE) "$(INTDIR)" + $(RSC) /l 0x809 /fo"$(INTDIR)/de_win.res" /i "cord" /d "_DEBUG" $(SOURCE) + + +!ENDIF + +# End Source File +# End Target +# End Project +################################################################################ Added: llvm-gcc-4.2/trunk/boehm-gc/OS2_MAKEFILE URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/OS2_MAKEFILE?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/OS2_MAKEFILE (added) +++ llvm-gcc-4.2/trunk/boehm-gc/OS2_MAKEFILE Thu Nov 8 16:56:19 2007 @@ -0,0 +1,45 @@ +# Makefile for OS/2. Assumes IBM's compiler, static linking, and a single thread. +# Adding dynamic linking support seems easy, but takes a little bit of work. +# Adding thread support may be nontrivial, since we haven't yet figured out how to +# look at another thread's registers. + +# Significantly revised for GC version 4.4 by Mark Boulter (Jan 1994). + +OBJS= alloc.obj reclaim.obj allchblk.obj misc.obj mach_dep.obj os_dep.obj mark_rts.obj headers.obj mark.obj obj_map.obj blacklst.obj finalize.obj new_hblk.obj dbg_mlc.obj malloc.obj stubborn.obj typd_mlc.obj ptr_chck.obj mallocx.obj + +CORDOBJS= cord\cordbscs.obj cord\cordxtra.obj cord\cordprnt.obj + +CC= icc +CFLAGS= /O /Q /DSILENT /DSMALL_CONFIG /DALL_INTERIOR_POINTERS +# Use /Ti instead of /O for debugging +# Setjmp_test may yield overly optimistic results when compiled +# without optimization. + +all: $(OBJS) gctest.exe cord\cordtest.exe + +$(OBJS) test.obj: include\private\gc_priv.h include\private\gc_hdrs.h include\gc.h include\private\gcconfig.h + +## ERASE THE LIB FIRST - if it is already there then this command will fail +## (make sure its there or erase will fail!) +gc.lib: $(OBJS) + echo . > gc.lib + erase gc.lib + LIB gc.lib $(OBJS), gc.lst + +mach_dep.obj: mach_dep.c + $(CC) $(CFLAGS) /C mach_dep.c + +gctest.exe: test.obj gc.lib + $(CC) $(CFLAGS) /B"/STACK:524288" /Fegctest test.obj gc.lib + +cord\cordbscs.obj: cord\cordbscs.c include\cord.h include\private\cord_pos.h + $(CC) $(CFLAGS) /C /Focord\cordbscs cord\cordbscs.c + +cord\cordxtra.obj: cord\cordxtra.c include\cord.h include\private\cord_pos.h include\ec.h + $(CC) $(CFLAGS) /C /Focord\cordxtra cord\cordxtra.c + +cord\cordprnt.obj: cord\cordprnt.c include\cord.h include\private\cord_pos.h include\ec.h + $(CC) $(CFLAGS) /C /Focord\cordprnt cord\cordprnt.c + +cord\cordtest.exe: cord\cordtest.c include\cord.h include\private\cord_pos.h include\ec.h $(CORDOBJS) gc.lib + $(CC) $(CFLAGS) /B"/STACK:65536" /Fecord\cordtest cord\cordtest.c gc.lib $(CORDOBJS) Added: llvm-gcc-4.2/trunk/boehm-gc/PCR-Makefile URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/PCR-Makefile?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/PCR-Makefile (added) +++ llvm-gcc-4.2/trunk/boehm-gc/PCR-Makefile Thu Nov 8 16:56:19 2007 @@ -0,0 +1,68 @@ +# +# Default target +# + +default: gc.o + +include ../config/common.mk + +# +# compilation flags, etc. +# + + +CPPFLAGS = $(INCLUDE) $(CONFIG_CPPFLAGS) \ + -DPCR_NO_RENAME -DPCR_NO_HOSTDEP_ERR +#CFLAGS = -DPCR -DSILENT $(CONFIG_CFLAGS) +CFLAGS = -DPCR $(CONFIG_CFLAGS) +SPECIALCFLAGS = # For code involving asm's + +ASPPFLAGS = $(INCLUDE) $(CONFIG_ASPPFLAGS) \ + -DPCR_NO_RENAME -DPCR_NO_HOSTDEP_ERR -DASM + +ASFLAGS = $(CONFIG_ASFLAGS) + +LDRFLAGS = $(CONFIG_LDRFLAGS) + +LDFLAGS = $(CONFIG_LDFLAGS) + +# +# +# +# +# BEGIN PACKAGE-SPECIFIC PART +# +# +# +# + +# Fix to point to local pcr installation directory. +PCRDIR= .. + +COBJ= alloc.o reclaim.o allchblk.o misc.o os_dep.o mark_rts.o headers.o mark.o obj_map.o pcr_interface.o blacklst.o finalize.o new_hblk.o real_malloc.o dyn_load.o dbg_mlc.o malloc.o stubborn.o checksums.o solaris_threads.o typd_mlc.o ptr_chck.o mallocx.o + +CSRC= reclaim.c allchblk.c misc.c alloc.c mach_dep.c os_dep.c mark_rts.c headers.c mark.c obj_map.c pcr_interface.c blacklst.c finalize.c new_hblk.c real_malloc.c dyn_load.c dbg_mlc.c malloc.c stubborn.c checksums.c solaris_threads.c typd_mlc.c ptr_chck.c mallocx.c + +SHELL= /bin/sh + +default: gc.o + +gc.o: $(COBJ) mach_dep.o + $(LDR) $(CONFIG_LDRFLAGS) -o gc.o $(COBJ) mach_dep.o + + +mach_dep.o: mach_dep.c mips_mach_dep.s rs6000_mach_dep.s if_mach if_not_there + rm -f mach_dep.o + ./if_mach MIPS "" as -o mach_dep.o mips_mach_dep.s + ./if_mach RS6000 "" as -o mach_dep.o rs6000_mach_dep.s + ./if_mach ALPHA "" as -o mach_dep.o alpha_mach_dep.s + ./if_mach SPARC SUNOS5 as -o mach_dep.o sparc_mach_dep.s + ./if_not_there mach_dep.o $(CC) -c $(SPECIALCFLAGS) mach_dep.c + +if_mach: if_mach.c gcconfig.h + $(CC) $(CFLAGS) -o if_mach if_mach.c + +if_not_there: if_not_there.c + $(CC) $(CFLAGS) -o if_not_there if_not_there.c + + Added: llvm-gcc-4.2/trunk/boehm-gc/SMakefile.amiga URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/SMakefile.amiga?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/SMakefile.amiga (added) +++ llvm-gcc-4.2/trunk/boehm-gc/SMakefile.amiga Thu Nov 8 16:56:19 2007 @@ -0,0 +1,178 @@ + +# Rewritten smakefile for amiga / sas/c. -Kjetil M. +# Dont use the cord-package if you define parm=both or parm=reg. + + +#----------------TOOLS-------------------------------- +CC=sc +LINKER=slink +LIBER=oml + +#----------------CPU OPTIONS-------------------------- + +CPU=68060 + +#----------------FPU OPTIONS-------------------------- + +MATH=8 +MATHLIB=LIB:scm881.lib + +#----------------COMPILER OPTIONS--------------------- + +IGNORE= IGNORE=85 IGNORE=154 IGNORE=161 IGNORE=100 + +OPTIMIZE=optimize optimizetime optglobal optimizerdepth=100 optimizerpeephole optloop OPTSCHED optimizerinlocal optimizerrecurdepth=100 +# optimizerinline optimizercomplexity=100 + +OPT= $(OPTIMIZE) CPU=$(CPU) math=$(MATH) NOSTACKCHECK VERBOSE \ +MAPHUNK NOVERSION NOICONS nodebug \ +DEFINE SILENT \ +parm=reg \ +DEFINE __USE_SYSBASE + + +SOPT= $(OPT) $(IGNORE) \ +DEFINE AMIGA_SKIP_SEG \ +DEFINE ATOMIC_UNCOLLECTABLE \ +DEFINE GC_AMIGA_FASTALLOC \ +DEFINE GC_AMIGA_RETRY \ +DEFINE GC_AMIGA_PRINTSTATS \ +DEFINE GC_AMIGA_GC + + +#DEFINE ALL_INTERIOR_POINTERS \ + + +SCOPT= $(SOPT) define GC_AMIGA_MAKINGLIB + +CSCOPT= $(OPT) DEFINE AMIGA IGNORE=100 IGNORE=161 + +#------------------LINKING---------------------------- + + +all: gctest setjmp_t cord/cordtest + +clean: + delete *.lib gctest setjmp_t *.o *.lnk cord/*.o cord/*.lib cord/*.lnk cord/cordtest + smake + +test: setjmp_t gctest cord/cordtest + setjmp_t + gctest + cord/cordtest + +gctest: gc$(CPU).lib GCAmigaOS$(CPU).lib test.o + $(LINKER) LIB:c.o test.o TO gctest LIB gc$(CPU).lib LIB:sc.lib $(MATHLIB) + +setjmp_t: setjmp_t.o gc.h + $(LINKER) LIB:c.o setjmp_t.o to setjmp_t lib LIB:sc.lib + +cord/cordtest: cord/cordtest.o cord/cord$(CPU).lib gc$(CPU).lib + slink LIB:c.o cord/cordtest.o LIB $(MATHLIB) gc$(CPU).lib cord/cord$(CPU).lib LIB:sc.lib TO cord/cordtest + + +#------------------LIBBING---------------------------- + +OBJS= alloc.o reclaim.o allchblk.o misc.o mach_dep.o os_dep.o mark_rts.o headers.o mark.o obj_map.o blacklst.o finalize.o new_hblk.o real_malloc.o dyn_load.o dbg_mlc.o malloc.o stubborn.o checksums.o typd_mlc.o ptr_chck.o mallocx.o + +gc$(CPU).lib: $(OBJS) + $(LIBER) gc$(CPU).lib r $(OBJS) + + +COBJS = cord/cordbscs.o cord/cordprnt.o cord/cordxtra.o + +cord/cord$(CPU).lib: $(COBJS) + oml cord/cord$(CPU).lib r $(COBJS) + +#------------------COMPILING-------------------------- + +INC= gc_private.h gc_hdrs.h gc.h gcconfig.h + +alloc.o : alloc.c $(INC) + $(CC) alloc.c $(SCOPT) ignore=7 + +reclaim.o : reclaim.c $(INC) + $(CC) reclaim.c $(SCOPT) + +allchblk.o : allchblk.c $(INC) + $(CC) allchblk.c $(SCOPT) + +misc.o : misc.c $(INC) + $(CC) misc.c $(SCOPT) + +os_dep.o : os_dep.c $(INC) AmigaOS.c + $(CC) os_dep.c $(SCOPT) + +mark_rts.o : mark_rts.c $(INC) + $(CC) mark_rts.c $(SCOPT) + +headers.o : headers.c $(INC) + $(CC) headers.c $(SCOPT) + +mark.o : mark.c $(INC) + $(CC) mark.c $(SCOPT) + +obj_map.o : obj_map.c $(INC) + $(CC) obj_map.c $(SCOPT) + +blacklst.o : blacklst.c $(INC) + $(CC) blacklst.c $(SCOPT) + +finalize.o : finalize.c $(INC) + $(CC) finalize.c $(SCOPT) noopt #Could sas/c still have problems with this one? Gctest sometimes fails to finalize all. + +new_hblk.o : new_hblk.c $(INC) + $(CC) new_hblk.c $(SCOPT) + +real_malloc.o : real_malloc.c $(INC) + $(CC) real_malloc.c $(SCOPT) + +dyn_load.o : dyn_load.c $(INC) + $(CC) dyn_load.c $(SCOPT) + +dbg_mlc.o : dbg_mlc.c $(INC) + $(CC) dbg_mlc.c $(SCOPT) + +malloc.o : malloc.c $(INC) + $(CC) malloc.c $(SCOPT) + +mallocx.o : mallocx.c $(INC) + $(CC) mallocx.c $(SCOPT) + +stubborn.o : stubborn.c $(INC) + $(CC) stubborn.c $(SCOPT) + +checksums.o : checksums.c $(INC) + $(CC) checksums.c $(SCOPT) + +typd_mlc.o: typd_mlc.c $(INC) + $(CC) typd_mlc.c $(SCOPT) + +mach_dep.o : mach_dep.c $(INC) + $(CC) mach_dep.c $(SCOPT) + +ptr_chck.o: ptr_chck.c $(INC) + $(CC) ptr_chck.c $(SCOPT) + +test.o : test.c $(INC) + $(CC) test.c $(SOPT) + +setjmp_t: setjmp_t.c gc.h + $(CC) setjmp_t.c $(SOPT) + + +# cords: + +cord/cordbscs.o: cord/cordbscs.c + sc cord/cordbscs.c $(CSCOPT) + +cord/cordprnt.o: cord/cordprnt.c + sc cord/cordprnt.c $(CSCOPT) + +cord/cordxtra.o: cord/cordxtra.c + sc cord/cordxtra.c $(CSCOPT) + +cord/cordtest.o: cord/cordtest.c + sc cord/cordtest.c $(CSCOPT) + + Added: llvm-gcc-4.2/trunk/boehm-gc/WCC_MAKEFILE URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/WCC_MAKEFILE?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/WCC_MAKEFILE (added) +++ llvm-gcc-4.2/trunk/boehm-gc/WCC_MAKEFILE Thu Nov 8 16:56:19 2007 @@ -0,0 +1,196 @@ +# Makefile for Watcom C/C++ 10.5, 10.6, 11.0 on NT, OS2 and DOS4GW. +# May work with Watcom 10.0. + +# Uncoment one of the lines below for cross compilation. +SYSTEM=MSWIN32 +#SYSTEM=DOS4GW +#SYSTEM=OS2 + +# The collector can be built either as dynamic or as static library. +# Select the library type you need. +#MAKE_AS_DLL=1 +MAKE_AS_LIB=1 + +# Select calling conventions. +# Possible choices are r and s. +CALLING=s + +# Select target CPU. +# Possible choices are 3, 4, 5, and 6. +# The last choice available only since version 11.0. +CPU=5 + +# Set optimization options. +# Watcom before 11.0 does not support option "-oh". +OPTIM=-oneatx -s +#OPTIM=-ohneatx -s + +DEFS=-DALL_INTERIOR_POINTERS -DSILENT -DNO_SIGNALS #-DSMALL_CONFIG #-DGC_DEBUG + + +##### + +!ifndef SYSTEM +!ifdef __MSDOS__ +SYSTEM=DOS4GW +!else ifdef __NT__ +SYSTEM=MSWIN32 +!else ifdef __OS2__ +SYSTEM=OS2 +!else +SYSTEM=Unknown +!endif +!endif + +!define $(SYSTEM) + +!ifdef DOS4GW +SYSFLAG=-DDOS4GW -bt=dos +!else ifdef MSWIN32 +SYSFLAG=-DMSWIN32 -bt=nt +!else ifdef OS2 +SYSFLAG=-DOS2 -bt=os2 +!else +!error undefined or unsupported target platform: $(SYSTEM) +!endif +!ifdef MAKE_AS_DLL +DLLFLAG=-bd -DGC_DLL +TEST_DLLFLAG=-DGC_DLL +!else ifdef MAKE_AS_LIB +DLLFLAG= +TEST_DLLFLAG= +!else +!error Either MAKE_AS_LIB or MAKE_AS_DLL should be defined +!endif + +CC=wcc386 +CXX=wpp386 + +# -DUSE_GENERIC is required ! +CFLAGS=-$(CPU)$(CALLING) $(OPTIM) -zp4 -zc $(SYSFLAG) $(DLLFLAG) -DGC_BUILD -DUSE_GENERIC $(DEFS) +CXXFLAGS= $(CFLAGS) +TEST_CFLAGS=-$(CPU)$(CALLING) $(OPTIM) -zp4 -zc $(SYSFLAG) $(TEST_DLLFLAG) $(DEFS) +TEST_CXXFLAGS= $(TEST_CFLAGS) + +OBJS= alloc.obj reclaim.obj allchblk.obj misc.obj & + mach_dep.obj os_dep.obj mark_rts.obj headers.obj mark.obj & + obj_map.obj blacklst.obj finalize.obj new_hblk.obj & + dbg_mlc.obj malloc.obj stubborn.obj dyn_load.obj & + typd_mlc.obj ptr_chck.obj mallocx.obj + +all: gc.lib gctest.exe test_cpp.exe + +!ifdef MAKE_AS_DLL + +gc.lib: gc.dll gc_cpp.obj + *wlib -b -c -n -p=512 $@ +gc.dll +gc_cpp.obj + +gc.dll: $(OBJS) .AUTODEPEND + @%create $*.lnk +!ifdef DOS4GW + @%append $*.lnk sys os2v2_dll +!else ifdef MSWIN32 + @%append $*.lnk sys nt_dll +!else ifdef OS2 + @%append $*.lnk sys os2v2_dll +!endif + @%append $*.lnk name $* + @for %i in ($(OBJS)) do @%append $*.lnk file '%i' +!ifeq CALLING s + @%append $*.lnk export GC_is_marked + @%append $*.lnk export GC_incr_words_allocd + @%append $*.lnk export GC_incr_mem_freed + @%append $*.lnk export GC_generic_malloc_words_small +!else + @%append $*.lnk export GC_is_marked_ + @%append $*.lnk export GC_incr_words_allocd_ + @%append $*.lnk export GC_incr_mem_freed_ + @%append $*.lnk export GC_generic_malloc_words_small_ +!endif + *wlink @$*.lnk +!else +gc.lib: $(OBJS) gc_cpp.obj + @%create $*.lb1 + @for %i in ($(OBJS)) do @%append $*.lb1 +'%i' + @%append $*.lb1 +'gc_cpp.obj' + *wlib -b -c -n -p=512 $@ @$*.lb1 + +!endif + + +gctest.exe: test.obj gc.lib + %create $*.lnk +!ifdef DOS4GW + @%append $*.lnk sys dos4g +!else ifdef MSWIN32 + @%append $*.lnk sys nt +!else ifdef OS2 + @%append $*.lnk sys os2v2 +!endif + @%append $*.lnk op case + @%append $*.lnk op stack=256K + @%append $*.lnk name $* + @%append $*.lnk file test.obj + @%append $*.lnk library gc.lib +!ifdef MAKE_AS_DLL +!ifeq CALLING s + @%append $*.lnk import GC_is_marked gc +!else + @%append $*.lnk import GC_is_marked_ gc +!endif +!endif + *wlink @$*.lnk +test_cpp.exe: test_cpp.obj gc.lib + %create $*.lnk +!ifdef DOS4GW + @%append $*.lnk sys dos4g +!else ifdef MSWIN32 + @%append $*.lnk sys nt +!else ifdef OS2 + @%append $*.lnk sys os2v2 +!endif + @%append $*.lnk op case + @%append $*.lnk op stack=256K + @%append $*.lnk name $* + @%append $*.lnk file test_cpp.obj + @%append $*.lnk library gc.lib +!ifdef MAKE_AS_DLL +!ifeq CALLING s + @%append $*.lnk import GC_incr_words_allocd gc + @%append $*.lnk import GC_incr_mem_freed gc + @%append $*.lnk import GC_generic_malloc_words_small gc +!else + @%append $*.lnk import GC_incr_words_allocd_ gc + @%append $*.lnk import GC_incr_mem_freed_ gc + @%append $*.lnk import GC_generic_malloc_words_small_ gc +!endif +!endif + *wlink @$*.lnk + +gc_cpp.obj: gc_cpp.cc .AUTODEPEND + $(CXX) $(TEST_CXXFLAGS) -iinclude $*.cc +test.obj: tests\test.c .AUTODEPEND + $(CC) $(TEST_CFLAGS) $*.c +test_cpp.obj: tests\test_cpp.cc .AUTODEPEND + $(CXX) $(TEST_CXXFLAGS) -iinclude $*.cc + + +.c.obj: .AUTODEPEND + $(CC) $(CFLAGS) $*.c + +.cc.obj: .AUTODEPEND + $(CXX) $(CXXFLAGS) $*.cc + +clean : .SYMBOLIC + @if exist *.obj del *.obj + @if exist *.map del *.map + @if exist *.lnk del *.lnk + @if exist *.lb1 del *.lb1 + @if exist *.sym del *.sym + @if exist *.err del *.err + @if exist *.tmp del *.tmp + @if exist *.lst del *.lst + @if exist *.exe del *.exe + @if exist *.log del *.log + @if exist *.lib del *.lib + @if exist *.dll del *.dll Added: llvm-gcc-4.2/trunk/boehm-gc/aclocal.m4 URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/aclocal.m4?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/aclocal.m4 (added) +++ llvm-gcc-4.2/trunk/boehm-gc/aclocal.m4 Thu Nov 8 16:56:19 2007 @@ -0,0 +1,892 @@ +# generated automatically by aclocal 1.9.6 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.9.6])]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 7 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.58])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +AC_DEFUN([AM_MAINTAINER_MODE], +[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode is disabled by default + AC_ARG_ENABLE(maintainer-mode, +[ --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer], + USE_MAINTAINER_MODE=$enableval, + USE_MAINTAINER_MODE=no) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST(MAINT)dnl +] +) + +AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Copyright (C) 1999, 2000, 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_PROG_CC_C_O +# -------------- +# Like AC_PROG_CC_C_O, but changed for automake. +AC_DEFUN([AM_PROG_CC_C_O], +[AC_REQUIRE([AC_PROG_CC_C_O])dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +# FIXME: we rely on the cache variable name because +# there is no other way. +set dummy $CC +ac_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` +if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +# +# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +# created by `make install' are always world readable, even if the +# installer happens to have an overly restrictive umask (e.g. 077). +# This was a mistake. There are at least two reasons why we must not +# use `-m 0755': +# - it causes special bits like SGID to be ignored, +# - it may be too restrictive (some setups expect 775 directories). +# +# Do not use -m 0755 and let people choose whatever they expect by +# setting umask. +# +# We cannot accept any implementation of `mkdir' that recognizes `-p'. +# Some implementations (such as Solaris 8's) are not thread-safe: if a +# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +# concurrently, both version can detect that a/ is missing, but only +# one can create it and the other will error out. Consequently we +# restrict ourselves to GNU make (using the --version option ensures +# this.) +AC_DEFUN([AM_PROG_MKDIR_P], +[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi +AC_SUBST([mkdir_p])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([../config/acx.m4]) +m4_include([../config/depstand.m4]) +m4_include([../config/lead-dot.m4]) +m4_include([../config/multi.m4]) +m4_include([../config/no-executables.m4]) +m4_include([../libtool.m4]) Added: llvm-gcc-4.2/trunk/boehm-gc/add_gc_prefix.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/add_gc_prefix.c?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/add_gc_prefix.c (added) +++ llvm-gcc-4.2/trunk/boehm-gc/add_gc_prefix.c Thu Nov 8 16:56:19 2007 @@ -0,0 +1,20 @@ +# include +# include "version.h" + +int main(argc, argv, envp) +int argc; +char ** argv; +char ** envp; +{ + int i; + + for (i = 1; i < argc; i++) { + if (GC_ALPHA_VERSION == GC_NOT_ALPHA) { + printf("gc%d.%d/%s ", GC_VERSION_MAJOR, GC_VERSION_MINOR, argv[i]); + } else { + printf("gc%d.%dalpha%d/%s ", GC_VERSION_MAJOR, + GC_VERSION_MINOR, GC_ALPHA_VERSION, argv[i]); + } + } + return(0); +} Added: llvm-gcc-4.2/trunk/boehm-gc/allchblk.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/allchblk.c?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/allchblk.c (added) +++ llvm-gcc-4.2/trunk/boehm-gc/allchblk.c Thu Nov 8 16:56:19 2007 @@ -0,0 +1,838 @@ +/* + * Copyright 1988, 1989 Hans-J. Boehm, Alan J. Demers + * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved. + * Copyright (c) 1998-1999 by Silicon Graphics. All rights reserved. + * Copyright (c) 1999 by Hewlett-Packard Company. All rights reserved. + * + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * + * Permission is hereby granted to use or copy this program + * for any purpose, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is granted, + * provided the above notices are retained, and a notice that the code was + * modified is included with the above copyright notice. + */ + +/* #define DEBUG */ +#include +#include "private/gc_priv.h" + +GC_bool GC_use_entire_heap = 0; + +/* + * Free heap blocks are kept on one of several free lists, + * depending on the size of the block. Each free list is doubly linked. + * Adjacent free blocks are coalesced. + */ + + +# define MAX_BLACK_LIST_ALLOC (2*HBLKSIZE) + /* largest block we will allocate starting on a black */ + /* listed block. Must be >= HBLKSIZE. */ + + +# define UNIQUE_THRESHOLD 32 + /* Sizes up to this many HBLKs each have their own free list */ +# define HUGE_THRESHOLD 256 + /* Sizes of at least this many heap blocks are mapped to a */ + /* single free list. */ +# define FL_COMPRESSION 8 + /* In between sizes map this many distinct sizes to a single */ + /* bin. */ + +# define N_HBLK_FLS (HUGE_THRESHOLD - UNIQUE_THRESHOLD)/FL_COMPRESSION \ + + UNIQUE_THRESHOLD + +struct hblk * GC_hblkfreelist[N_HBLK_FLS+1] = { 0 }; + +#ifndef USE_MUNMAP + + word GC_free_bytes[N_HBLK_FLS+1] = { 0 }; + /* Number of free bytes on each list. */ + + /* Is bytes + the number of free bytes on lists n .. N_HBLK_FLS */ + /* > GC_max_large_allocd_bytes? */ +# ifdef __GNUC__ + __inline__ +# endif + static GC_bool GC_enough_large_bytes_left(bytes,n) + word bytes; + int n; + { + int i; + for (i = N_HBLK_FLS; i >= n; --i) { + bytes += GC_free_bytes[i]; + if (bytes > GC_max_large_allocd_bytes) return TRUE; + } + return FALSE; + } + +# define INCR_FREE_BYTES(n, b) GC_free_bytes[n] += (b); + +# define FREE_ASSERT(e) GC_ASSERT(e) + +#else /* USE_MUNMAP */ + +# define INCR_FREE_BYTES(n, b) +# define FREE_ASSERT(e) + +#endif /* USE_MUNMAP */ + +/* Map a number of blocks to the appropriate large block free list index. */ +int GC_hblk_fl_from_blocks(blocks_needed) +word blocks_needed; +{ + if (blocks_needed <= UNIQUE_THRESHOLD) return blocks_needed; + if (blocks_needed >= HUGE_THRESHOLD) return N_HBLK_FLS; + return (blocks_needed - UNIQUE_THRESHOLD)/FL_COMPRESSION + + UNIQUE_THRESHOLD; + +} + +# define PHDR(hhdr) HDR(hhdr -> hb_prev) +# define NHDR(hhdr) HDR(hhdr -> hb_next) + +# ifdef USE_MUNMAP +# define IS_MAPPED(hhdr) (((hhdr) -> hb_flags & WAS_UNMAPPED) == 0) +# else /* !USE_MMAP */ +# define IS_MAPPED(hhdr) 1 +# endif /* USE_MUNMAP */ + +# if !defined(NO_DEBUGGING) +void GC_print_hblkfreelist() +{ + struct hblk * h; + word total_free = 0; + hdr * hhdr; + word sz; + int i; + + for (i = 0; i <= N_HBLK_FLS; ++i) { + h = GC_hblkfreelist[i]; +# ifdef USE_MUNMAP + if (0 != h) GC_printf1("Free list %ld:\n", + (unsigned long)i); +# else + if (0 != h) GC_printf2("Free list %ld (Total size %ld):\n", + (unsigned long)i, + (unsigned long)GC_free_bytes[i]); +# endif + while (h != 0) { + hhdr = HDR(h); + sz = hhdr -> hb_sz; + GC_printf2("\t0x%lx size %lu ", (unsigned long)h, (unsigned long)sz); + total_free += sz; + if (GC_is_black_listed(h, HBLKSIZE) != 0) { + GC_printf0("start black listed\n"); + } else if (GC_is_black_listed(h, hhdr -> hb_sz) != 0) { + GC_printf0("partially black listed\n"); + } else { + GC_printf0("not black listed\n"); + } + h = hhdr -> hb_next; + } + } +# ifndef USE_MUNMAP + if (total_free != GC_large_free_bytes) { + GC_printf1("GC_large_free_bytes = %lu (INCONSISTENT!!)\n", + (unsigned long) GC_large_free_bytes); + } +# endif + GC_printf1("Total of %lu bytes on free list\n", (unsigned long)total_free); +} + +/* Return the free list index on which the block described by the header */ +/* appears, or -1 if it appears nowhere. */ +int free_list_index_of(wanted) +hdr * wanted; +{ + struct hblk * h; + hdr * hhdr; + int i; + + for (i = 0; i <= N_HBLK_FLS; ++i) { + h = GC_hblkfreelist[i]; + while (h != 0) { + hhdr = HDR(h); + if (hhdr == wanted) return i; + h = hhdr -> hb_next; + } + } + return -1; +} + +void GC_dump_regions() +{ + unsigned i; + ptr_t start, end; + ptr_t p; + size_t bytes; + hdr *hhdr; + for (i = 0; i < GC_n_heap_sects; ++i) { + start = GC_heap_sects[i].hs_start; + bytes = GC_heap_sects[i].hs_bytes; + end = start + bytes; + /* Merge in contiguous sections. */ + while (i+1 < GC_n_heap_sects && GC_heap_sects[i+1].hs_start == end) { + ++i; + end = GC_heap_sects[i].hs_start + GC_heap_sects[i].hs_bytes; + } + GC_printf2("***Section from 0x%lx to 0x%lx\n", start, end); + for (p = start; p < end;) { + hhdr = HDR(p); + GC_printf1("\t0x%lx ", (unsigned long)p); + if (IS_FORWARDING_ADDR_OR_NIL(hhdr)) { + GC_printf1("Missing header!!(%ld)\n", hhdr); + p += HBLKSIZE; + continue; + } + if (HBLK_IS_FREE(hhdr)) { + int correct_index = GC_hblk_fl_from_blocks( + divHBLKSZ(hhdr -> hb_sz)); + int actual_index; + + GC_printf1("\tfree block of size 0x%lx bytes", + (unsigned long)(hhdr -> hb_sz)); + if (IS_MAPPED(hhdr)) { + GC_printf0("\n"); + } else { + GC_printf0("(unmapped)\n"); + } + actual_index = free_list_index_of(hhdr); + if (-1 == actual_index) { + GC_printf1("\t\tBlock not on free list %ld!!\n", + correct_index); + } else if (correct_index != actual_index) { + GC_printf2("\t\tBlock on list %ld, should be on %ld!!\n", + actual_index, correct_index); + } + p += hhdr -> hb_sz; + } else { + GC_printf1("\tused for blocks of size 0x%lx bytes\n", + (unsigned long)WORDS_TO_BYTES(hhdr -> hb_sz)); + p += HBLKSIZE * OBJ_SZ_TO_BLOCKS(hhdr -> hb_sz); + } + } + } +} + +# endif /* NO_DEBUGGING */ + +/* Initialize hdr for a block containing the indicated size and */ +/* kind of objects. */ +/* Return FALSE on failure. */ +static GC_bool setup_header(hhdr, sz, kind, flags) +register hdr * hhdr; +word sz; /* object size in words */ +int kind; +unsigned char flags; +{ + register word descr; + + /* Add description of valid object pointers */ + if (!GC_add_map_entry(sz)) return(FALSE); + hhdr -> hb_map = GC_obj_map[sz > MAXOBJSZ? 0 : sz]; + + /* Set size, kind and mark proc fields */ + hhdr -> hb_sz = sz; + hhdr -> hb_obj_kind = kind; + hhdr -> hb_flags = flags; + descr = GC_obj_kinds[kind].ok_descriptor; + if (GC_obj_kinds[kind].ok_relocate_descr) descr += WORDS_TO_BYTES(sz); + hhdr -> hb_descr = descr; + + /* Clear mark bits */ + GC_clear_hdr_marks(hhdr); + + hhdr -> hb_last_reclaimed = (unsigned short)GC_gc_no; + return(TRUE); +} + +#define FL_UNKNOWN -1 +/* + * Remove hhdr from the appropriate free list. + * We assume it is on the nth free list, or on the size + * appropriate free list if n is FL_UNKNOWN. + */ +void GC_remove_from_fl(hhdr, n) +hdr * hhdr; +int n; +{ + int index; + + GC_ASSERT(((hhdr -> hb_sz) & (HBLKSIZE-1)) == 0); +# ifndef USE_MUNMAP + /* We always need index to mainatin free counts. */ + if (FL_UNKNOWN == n) { + index = GC_hblk_fl_from_blocks(divHBLKSZ(hhdr -> hb_sz)); + } else { + index = n; + } +# endif + if (hhdr -> hb_prev == 0) { +# ifdef USE_MUNMAP + if (FL_UNKNOWN == n) { + index = GC_hblk_fl_from_blocks(divHBLKSZ(hhdr -> hb_sz)); + } else { + index = n; + } +# endif + GC_ASSERT(HDR(GC_hblkfreelist[index]) == hhdr); + GC_hblkfreelist[index] = hhdr -> hb_next; + } else { + hdr *phdr; + GET_HDR(hhdr -> hb_prev, phdr); + phdr -> hb_next = hhdr -> hb_next; + } + FREE_ASSERT(GC_free_bytes[index] >= hhdr -> hb_sz); + INCR_FREE_BYTES(index, - (signed_word)(hhdr -> hb_sz)); + if (0 != hhdr -> hb_next) { + hdr * nhdr; + GC_ASSERT(!IS_FORWARDING_ADDR_OR_NIL(NHDR(hhdr))); + GET_HDR(hhdr -> hb_next, nhdr); + nhdr -> hb_prev = hhdr -> hb_prev; + } +} + +/* + * Return a pointer to the free block ending just before h, if any. + */ +struct hblk * GC_free_block_ending_at(h) +struct hblk *h; +{ + struct hblk * p = h - 1; + hdr * phdr; + + GET_HDR(p, phdr); + while (0 != phdr && IS_FORWARDING_ADDR_OR_NIL(phdr)) { + p = FORWARDED_ADDR(p,phdr); + phdr = HDR(p); + } + if (0 != phdr) { + if(HBLK_IS_FREE(phdr)) { + return p; + } else { + return 0; + } + } + p = GC_prev_block(h - 1); + if (0 != p) { + phdr = HDR(p); + if (HBLK_IS_FREE(phdr) && (ptr_t)p + phdr -> hb_sz == (ptr_t)h) { + return p; + } + } + return 0; +} + +/* + * Add hhdr to the appropriate free list. + * We maintain individual free lists sorted by address. + */ +void GC_add_to_fl(h, hhdr) +struct hblk *h; +hdr * hhdr; +{ + int index = GC_hblk_fl_from_blocks(divHBLKSZ(hhdr -> hb_sz)); + struct hblk *second = GC_hblkfreelist[index]; + hdr * second_hdr; +# ifdef GC_ASSERTIONS + struct hblk *next = (struct hblk *)((word)h + hhdr -> hb_sz); + hdr * nexthdr = HDR(next); + struct hblk *prev = GC_free_block_ending_at(h); + hdr * prevhdr = HDR(prev); + GC_ASSERT(nexthdr == 0 || !HBLK_IS_FREE(nexthdr) || !IS_MAPPED(nexthdr)); + GC_ASSERT(prev == 0 || !HBLK_IS_FREE(prevhdr) || !IS_MAPPED(prevhdr)); +# endif + GC_ASSERT(((hhdr -> hb_sz) & (HBLKSIZE-1)) == 0); + GC_hblkfreelist[index] = h; + INCR_FREE_BYTES(index, hhdr -> hb_sz); + FREE_ASSERT(GC_free_bytes[index] <= GC_large_free_bytes) + hhdr -> hb_next = second; + hhdr -> hb_prev = 0; + if (0 != second) { + GET_HDR(second, second_hdr); + second_hdr -> hb_prev = h; + } + GC_invalidate_map(hhdr); +} + +#ifdef USE_MUNMAP + +/* Unmap blocks that haven't been recently touched. This is the only way */ +/* way blocks are ever unmapped. */ +void GC_unmap_old(void) +{ + struct hblk * h; + hdr * hhdr; + word sz; + unsigned short last_rec, threshold; + int i; +# define UNMAP_THRESHOLD 6 + + for (i = 0; i <= N_HBLK_FLS; ++i) { + for (h = GC_hblkfreelist[i]; 0 != h; h = hhdr -> hb_next) { + hhdr = HDR(h); + if (!IS_MAPPED(hhdr)) continue; + threshold = (unsigned short)(GC_gc_no - UNMAP_THRESHOLD); + last_rec = hhdr -> hb_last_reclaimed; + if ((last_rec > GC_gc_no || last_rec < threshold) + && threshold < GC_gc_no /* not recently wrapped */) { + sz = hhdr -> hb_sz; + GC_unmap((ptr_t)h, sz); + hhdr -> hb_flags |= WAS_UNMAPPED; + } + } + } +} + +/* Merge all unmapped blocks that are adjacent to other free */ +/* blocks. This may involve remapping, since all blocks are either */ +/* fully mapped or fully unmapped. */ +void GC_merge_unmapped(void) +{ + struct hblk * h, *next; + hdr * hhdr, *nexthdr; + word size, nextsize; + int i; + + for (i = 0; i <= N_HBLK_FLS; ++i) { + h = GC_hblkfreelist[i]; + while (h != 0) { + GET_HDR(h, hhdr); + size = hhdr->hb_sz; + next = (struct hblk *)((word)h + size); + GET_HDR(next, nexthdr); + /* Coalesce with successor, if possible */ + if (0 != nexthdr && HBLK_IS_FREE(nexthdr)) { + nextsize = nexthdr -> hb_sz; + if (IS_MAPPED(hhdr)) { + GC_ASSERT(!IS_MAPPED(nexthdr)); + /* make both consistent, so that we can merge */ + if (size > nextsize) { + GC_remap((ptr_t)next, nextsize); + } else { + GC_unmap((ptr_t)h, size); + hhdr -> hb_flags |= WAS_UNMAPPED; + } + } else if (IS_MAPPED(nexthdr)) { + GC_ASSERT(!IS_MAPPED(hhdr)); + if (size > nextsize) { + GC_unmap((ptr_t)next, nextsize); + } else { + GC_remap((ptr_t)h, size); + hhdr -> hb_flags &= ~WAS_UNMAPPED; + hhdr -> hb_last_reclaimed = nexthdr -> hb_last_reclaimed; + } + } else { + /* Unmap any gap in the middle */ + GC_unmap_gap((ptr_t)h, size, (ptr_t)next, nexthdr -> hb_sz); + } + /* If they are both unmapped, we merge, but leave unmapped. */ + GC_remove_from_fl(hhdr, i); + GC_remove_from_fl(nexthdr, FL_UNKNOWN); + hhdr -> hb_sz += nexthdr -> hb_sz; + GC_remove_header(next); + GC_add_to_fl(h, hhdr); + /* Start over at beginning of list */ + h = GC_hblkfreelist[i]; + } else /* not mergable with successor */ { + h = hhdr -> hb_next; + } + } /* while (h != 0) ... */ + } /* for ... */ +} + +#endif /* USE_MUNMAP */ + +/* + * Return a pointer to a block starting at h of length bytes. + * Memory for the block is mapped. + * Remove the block from its free list, and return the remainder (if any) + * to its appropriate free list. + * May fail by returning 0. + * The header for the returned block must be set up by the caller. + * If the return value is not 0, then hhdr is the header for it. + */ +struct hblk * GC_get_first_part(h, hhdr, bytes, index) +struct hblk *h; +hdr * hhdr; +word bytes; +int index; +{ + word total_size = hhdr -> hb_sz; + struct hblk * rest; + hdr * rest_hdr; + + GC_ASSERT((total_size & (HBLKSIZE-1)) == 0); + GC_remove_from_fl(hhdr, index); + if (total_size == bytes) return h; + rest = (struct hblk *)((word)h + bytes); + rest_hdr = GC_install_header(rest); + if (0 == rest_hdr) { + /* This may be very bad news ... */ + WARN("Header allocation failed: Dropping block.\n", 0); + return(0); + } + rest_hdr -> hb_sz = total_size - bytes; + rest_hdr -> hb_flags = 0; +# ifdef GC_ASSERTIONS + /* Mark h not free, to avoid assertion about adjacent free blocks. */ + hhdr -> hb_map = 0; +# endif + GC_add_to_fl(rest, rest_hdr); + return h; +} + +/* + * H is a free block. N points at an address inside it. + * A new header for n has already been set up. Fix up h's header + * to reflect the fact that it is being split, move it to the + * appropriate free list. + * N replaces h in the original free list. + * + * Nhdr is not completely filled in, since it is about to allocated. + * It may in fact end up on the wrong free list for its size. + * (Hence adding it to a free list is silly. But this path is hopefully + * rare enough that it doesn't matter. The code is cleaner this way.) + */ +void GC_split_block(h, hhdr, n, nhdr, index) +struct hblk *h; +hdr * hhdr; +struct hblk *n; +hdr * nhdr; +int index; /* Index of free list */ +{ + word total_size = hhdr -> hb_sz; + word h_size = (word)n - (word)h; + struct hblk *prev = hhdr -> hb_prev; + struct hblk *next = hhdr -> hb_next; + + /* Replace h with n on its freelist */ + nhdr -> hb_prev = prev; + nhdr -> hb_next = next; + nhdr -> hb_sz = total_size - h_size; + nhdr -> hb_flags = 0; + if (0 != prev) { + HDR(prev) -> hb_next = n; + } else { + GC_hblkfreelist[index] = n; + } + if (0 != next) { + HDR(next) -> hb_prev = n; + } + INCR_FREE_BYTES(index, -(signed_word)h_size); + FREE_ASSERT(GC_free_bytes[index] > 0); +# ifdef GC_ASSERTIONS + nhdr -> hb_map = 0; /* Don't fail test for consecutive */ + /* free blocks in GC_add_to_fl. */ +# endif +# ifdef USE_MUNMAP + hhdr -> hb_last_reclaimed = GC_gc_no; +# endif + hhdr -> hb_sz = h_size; + GC_add_to_fl(h, hhdr); + GC_invalidate_map(nhdr); +} + +struct hblk * GC_allochblk_nth(); + +/* + * Allocate (and return pointer to) a heap block + * for objects of size sz words, searching the nth free list. + * + * NOTE: We set obj_map field in header correctly. + * Caller is responsible for building an object freelist in block. + * + * Unlike older versions of the collectors, the client is responsible + * for clearing the block, if necessary. + */ +struct hblk * +GC_allochblk(sz, kind, flags) +word sz; +int kind; +unsigned flags; /* IGNORE_OFF_PAGE or 0 */ +{ + word blocks = OBJ_SZ_TO_BLOCKS(sz); + int start_list = GC_hblk_fl_from_blocks(blocks); + int i; + for (i = start_list; i <= N_HBLK_FLS; ++i) { + struct hblk * result = GC_allochblk_nth(sz, kind, flags, i); + if (0 != result) { + return result; + } + } + return 0; +} +/* + * The same, but with search restricted to nth free list. + */ +struct hblk * +GC_allochblk_nth(sz, kind, flags, n) +word sz; +int kind; +unsigned char flags; /* IGNORE_OFF_PAGE or 0 */ +int n; +{ + register struct hblk *hbp; + register hdr * hhdr; /* Header corr. to hbp */ + register struct hblk *thishbp; + register hdr * thishdr; /* Header corr. to hbp */ + signed_word size_needed; /* number of bytes in requested objects */ + signed_word size_avail; /* bytes available in this block */ + + size_needed = HBLKSIZE * OBJ_SZ_TO_BLOCKS(sz); + + /* search for a big enough block in free list */ + hbp = GC_hblkfreelist[n]; + for(; 0 != hbp; hbp = hhdr -> hb_next) { + GET_HDR(hbp, hhdr); + size_avail = hhdr->hb_sz; + if (size_avail < size_needed) continue; + if (size_avail != size_needed + && !GC_use_entire_heap + && !GC_dont_gc + && USED_HEAP_SIZE >= GC_requested_heapsize + && !TRUE_INCREMENTAL && GC_should_collect()) { +# ifdef USE_MUNMAP + continue; +# else + /* If we have enough large blocks left to cover any */ + /* previous request for large blocks, we go ahead */ + /* and split. Assuming a steady state, that should */ + /* be safe. It means that we can use the full */ + /* heap if we allocate only small objects. */ + if (!GC_enough_large_bytes_left(GC_large_allocd_bytes, n)) { + continue; + } + /* If we are deallocating lots of memory from */ + /* finalizers, fail and collect sooner rather */ + /* than later. */ + if (WORDS_TO_BYTES(GC_finalizer_mem_freed) + > (GC_heapsize >> 4)) { + continue; + } +# endif /* !USE_MUNMAP */ + } + /* If the next heap block is obviously better, go on. */ + /* This prevents us from disassembling a single large block */ + /* to get tiny blocks. */ + { + signed_word next_size; + + thishbp = hhdr -> hb_next; + if (thishbp != 0) { + GET_HDR(thishbp, thishdr); + next_size = (signed_word)(thishdr -> hb_sz); + if (next_size < size_avail + && next_size >= size_needed + && !GC_is_black_listed(thishbp, (word)size_needed)) { + continue; + } + } + } + if ( !IS_UNCOLLECTABLE(kind) && + (kind != PTRFREE || size_needed > MAX_BLACK_LIST_ALLOC)) { + struct hblk * lasthbp = hbp; + ptr_t search_end = (ptr_t)hbp + size_avail - size_needed; + signed_word orig_avail = size_avail; + signed_word eff_size_needed = ((flags & IGNORE_OFF_PAGE)? + HBLKSIZE + : size_needed); + + + while ((ptr_t)lasthbp <= search_end + && (thishbp = GC_is_black_listed(lasthbp, + (word)eff_size_needed)) + != 0) { + lasthbp = thishbp; + } + size_avail -= (ptr_t)lasthbp - (ptr_t)hbp; + thishbp = lasthbp; + if (size_avail >= size_needed) { + if (thishbp != hbp && + 0 != (thishdr = GC_install_header(thishbp))) { + /* Make sure it's mapped before we mangle it. */ +# ifdef USE_MUNMAP + if (!IS_MAPPED(hhdr)) { + GC_remap((ptr_t)hbp, hhdr -> hb_sz); + hhdr -> hb_flags &= ~WAS_UNMAPPED; + } +# endif + /* Split the block at thishbp */ + GC_split_block(hbp, hhdr, thishbp, thishdr, n); + /* Advance to thishbp */ + hbp = thishbp; + hhdr = thishdr; + /* We must now allocate thishbp, since it may */ + /* be on the wrong free list. */ + } + } else if (size_needed > (signed_word)BL_LIMIT + && orig_avail - size_needed + > (signed_word)BL_LIMIT) { + /* Punt, since anything else risks unreasonable heap growth. */ + if (++GC_large_alloc_warn_suppressed + >= GC_large_alloc_warn_interval) { + WARN("Repeated allocation of very large block " + "(appr. size %ld):\n" + "\tMay lead to memory leak and poor performance.\n", + size_needed); + GC_large_alloc_warn_suppressed = 0; + } + size_avail = orig_avail; + } else if (size_avail == 0 && size_needed == HBLKSIZE + && IS_MAPPED(hhdr)) { + if (!GC_find_leak) { + static unsigned count = 0; + + /* The block is completely blacklisted. We need */ + /* to drop some such blocks, since otherwise we spend */ + /* all our time traversing them if pointerfree */ + /* blocks are unpopular. */ + /* A dropped block will be reconsidered at next GC. */ + if ((++count & 3) == 0) { + /* Allocate and drop the block in small chunks, to */ + /* maximize the chance that we will recover some */ + /* later. */ + word total_size = hhdr -> hb_sz; + struct hblk * limit = hbp + divHBLKSZ(total_size); + struct hblk * h; + struct hblk * prev = hhdr -> hb_prev; + + GC_words_wasted += BYTES_TO_WORDS(total_size); + GC_large_free_bytes -= total_size; + GC_remove_from_fl(hhdr, n); + for (h = hbp; h < limit; h++) { + if (h == hbp || 0 != (hhdr = GC_install_header(h))) { + (void) setup_header( + hhdr, + BYTES_TO_WORDS(HBLKSIZE), + PTRFREE, 0); /* Cant fail */ + if (GC_debugging_started) { + BZERO(h, HBLKSIZE); + } + } + } + /* Restore hbp to point at free block */ + hbp = prev; + if (0 == hbp) { + return GC_allochblk_nth(sz, kind, flags, n); + } + hhdr = HDR(hbp); + } + } + } + } + if( size_avail >= size_needed ) { +# ifdef USE_MUNMAP + if (!IS_MAPPED(hhdr)) { + GC_remap((ptr_t)hbp, hhdr -> hb_sz); + hhdr -> hb_flags &= ~WAS_UNMAPPED; + } +# endif + /* hbp may be on the wrong freelist; the parameter n */ + /* is important. */ + hbp = GC_get_first_part(hbp, hhdr, size_needed, n); + break; + } + } + + if (0 == hbp) return 0; + + /* Add it to map of valid blocks */ + if (!GC_install_counts(hbp, (word)size_needed)) return(0); + /* This leaks memory under very rare conditions. */ + + /* Set up header */ + if (!setup_header(hhdr, sz, kind, flags)) { + GC_remove_counts(hbp, (word)size_needed); + return(0); /* ditto */ + } + + /* Notify virtual dirty bit implementation that we are about to write. */ + /* Ensure that pointerfree objects are not protected if it's avoidable. */ + GC_remove_protection(hbp, divHBLKSZ(size_needed), + (hhdr -> hb_descr == 0) /* pointer-free */); + + /* We just successfully allocated a block. Restart count of */ + /* consecutive failures. */ + { + extern unsigned GC_fail_count; + + GC_fail_count = 0; + } + + GC_large_free_bytes -= size_needed; + + GC_ASSERT(IS_MAPPED(hhdr)); + return( hbp ); +} + +struct hblk * GC_freehblk_ptr = 0; /* Search position hint for GC_freehblk */ + +/* + * Free a heap block. + * + * Coalesce the block with its neighbors if possible. + * + * All mark words are assumed to be cleared. + */ +void +GC_freehblk(hbp) +struct hblk *hbp; +{ +struct hblk *next, *prev; +hdr *hhdr, *prevhdr, *nexthdr; +signed_word size; + + + GET_HDR(hbp, hhdr); + size = hhdr->hb_sz; + size = HBLKSIZE * OBJ_SZ_TO_BLOCKS(size); + GC_remove_counts(hbp, (word)size); + hhdr->hb_sz = size; +# ifdef USE_MUNMAP + hhdr -> hb_last_reclaimed = GC_gc_no; +# endif + + /* Check for duplicate deallocation in the easy case */ + if (HBLK_IS_FREE(hhdr)) { + GC_printf1("Duplicate large block deallocation of 0x%lx\n", + (unsigned long) hbp); + ABORT("Duplicate large block deallocation"); + } + + GC_ASSERT(IS_MAPPED(hhdr)); + GC_invalidate_map(hhdr); + next = (struct hblk *)((word)hbp + size); + GET_HDR(next, nexthdr); + prev = GC_free_block_ending_at(hbp); + /* Coalesce with successor, if possible */ + if(0 != nexthdr && HBLK_IS_FREE(nexthdr) && IS_MAPPED(nexthdr)) { + GC_remove_from_fl(nexthdr, FL_UNKNOWN); + hhdr -> hb_sz += nexthdr -> hb_sz; + GC_remove_header(next); + } + /* Coalesce with predecessor, if possible. */ + if (0 != prev) { + prevhdr = HDR(prev); + if (IS_MAPPED(prevhdr)) { + GC_remove_from_fl(prevhdr, FL_UNKNOWN); + prevhdr -> hb_sz += hhdr -> hb_sz; +# ifdef USE_MUNMAP + prevhdr -> hb_last_reclaimed = GC_gc_no; +# endif + GC_remove_header(hbp); + hbp = prev; + hhdr = prevhdr; + } + } + /* FIXME: It is not clear we really always want to do these merges */ + /* with -DUSE_MUNMAP, since it updates ages and hence prevents */ + /* unmapping. */ + + GC_large_free_bytes += size; + GC_add_to_fl(hbp, hhdr); +} + Added: llvm-gcc-4.2/trunk/boehm-gc/alloc.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/alloc.c?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/alloc.c (added) +++ llvm-gcc-4.2/trunk/boehm-gc/alloc.c Thu Nov 8 16:56:19 2007 @@ -0,0 +1,1099 @@ +/* + * Copyright 1988, 1989 Hans-J. Boehm, Alan J. Demers + * Copyright (c) 1991-1996 by Xerox Corporation. All rights reserved. + * Copyright (c) 1998 by Silicon Graphics. All rights reserved. + * Copyright (c) 1999 by Hewlett-Packard Company. All rights reserved. + * + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * + * Permission is hereby granted to use or copy this program + * for any purpose, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is granted, + * provided the above notices are retained, and a notice that the code was + * modified is included with the above copyright notice. + * + */ + + +# include "private/gc_priv.h" + +# include +# if !defined(MACOS) && !defined(MSWINCE) +# include +# include +# endif + +/* + * Separate free lists are maintained for different sized objects + * up to MAXOBJSZ. + * The call GC_allocobj(i,k) ensures that the freelist for + * kind k objects of size i points to a non-empty + * free list. It returns a pointer to the first entry on the free list. + * In a single-threaded world, GC_allocobj may be called to allocate + * an object of (small) size i as follows: + * + * opp = &(GC_objfreelist[i]); + * if (*opp == 0) GC_allocobj(i, NORMAL); + * ptr = *opp; + * *opp = obj_link(ptr); + * + * Note that this is very fast if the free list is non-empty; it should + * only involve the execution of 4 or 5 simple instructions. + * All composite objects on freelists are cleared, except for + * their first word. + */ + +/* + * The allocator uses GC_allochblk to allocate large chunks of objects. + * These chunks all start on addresses which are multiples of + * HBLKSZ. Each allocated chunk has an associated header, + * which can be located quickly based on the address of the chunk. + * (See headers.c for details.) + * This makes it possible to check quickly whether an + * arbitrary address corresponds to an object administered by the + * allocator. + */ + +word GC_non_gc_bytes = 0; /* Number of bytes not intended to be collected */ + +word GC_gc_no = 0; + +#ifndef SMALL_CONFIG + int GC_incremental = 0; /* By default, stop the world. */ +#endif + +int GC_parallel = FALSE; /* By default, parallel GC is off. */ + +int GC_full_freq = 19; /* Every 20th collection is a full */ + /* collection, whether we need it */ + /* or not. */ + +GC_bool GC_need_full_gc = FALSE; + /* Need full GC do to heap growth. */ + +#ifdef THREADS + GC_bool GC_world_stopped = FALSE; +# define IF_THREADS(x) x +#else +# define IF_THREADS(x) +#endif + +word GC_used_heap_size_after_full = 0; + +char * GC_copyright[] = +{"Copyright 1988,1989 Hans-J. Boehm and Alan J. Demers ", +"Copyright (c) 1991-1995 by Xerox Corporation. All rights reserved. ", +"Copyright (c) 1996-1998 by Silicon Graphics. All rights reserved. ", +"Copyright (c) 1999-2001 by Hewlett-Packard Company. All rights reserved. ", +"THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY", +" EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK.", +"See source code for details." }; + +# include "version.h" + +#if defined(SAVE_CALL_CHAIN) && \ + !(defined(REDIRECT_MALLOC) && defined(GC_HAVE_BUILTIN_BACKTRACE)) +# define SAVE_CALL_CHAIN_IN_GC + /* This is only safe if the call chain save mechanism won't end up */ + /* calling GC_malloc. The GNU C library documentation suggests */ + /* that backtrace doesn't use malloc, but at least the initial */ + /* call in some versions does seem to invoke the dynamic linker, */ + /* which uses malloc. */ +#endif + +/* some more variables */ + +extern signed_word GC_mem_found; /* Number of reclaimed longwords */ + /* after garbage collection */ + +GC_bool GC_dont_expand = 0; + +word GC_free_space_divisor = 3; + +extern GC_bool GC_collection_in_progress(); + /* Collection is in progress, or was abandoned. */ + +int GC_never_stop_func GC_PROTO((void)) { return(0); } + +unsigned long GC_time_limit = TIME_LIMIT; + +CLOCK_TYPE GC_start_time; /* Time at which we stopped world. */ + /* used only in GC_timeout_stop_func. */ + +int GC_n_attempts = 0; /* Number of attempts at finishing */ + /* collection within GC_time_limit. */ + +#if defined(SMALL_CONFIG) || defined(NO_CLOCK) +# define GC_timeout_stop_func GC_never_stop_func +#else + int GC_timeout_stop_func GC_PROTO((void)) + { + CLOCK_TYPE current_time; + static unsigned count = 0; + unsigned long time_diff; + + if ((count++ & 3) != 0) return(0); + GET_TIME(current_time); + time_diff = MS_TIME_DIFF(current_time,GC_start_time); + if (time_diff >= GC_time_limit) { +# ifdef CONDPRINT + if (GC_print_stats) { + GC_printf0("Abandoning stopped marking after "); + GC_printf1("%lu msecs", (unsigned long)time_diff); + GC_printf1("(attempt %ld)\n", (unsigned long) GC_n_attempts); + } +# endif + return(1); + } + return(0); + } +#endif /* !SMALL_CONFIG */ + +/* Return the minimum number of words that must be allocated between */ +/* collections to amortize the collection cost. */ +static word min_words_allocd() +{ +# ifdef THREADS + /* We punt, for now. */ + register signed_word stack_size = 10000; +# else + int dummy; + register signed_word stack_size = (ptr_t)(&dummy) - GC_stackbottom; +# endif + word total_root_size; /* includes double stack size, */ + /* since the stack is expensive */ + /* to scan. */ + word scan_size; /* Estimate of memory to be scanned */ + /* during normal GC. */ + + if (stack_size < 0) stack_size = -stack_size; + total_root_size = 2 * stack_size + GC_root_size; + scan_size = BYTES_TO_WORDS(GC_heapsize - GC_large_free_bytes + + (GC_large_free_bytes >> 2) + /* use a bit more of large empty heap */ + + total_root_size); + if (TRUE_INCREMENTAL) { + return scan_size / (2 * GC_free_space_divisor); + } else { + return scan_size / GC_free_space_divisor; + } +} + +/* Return the number of words allocated, adjusted for explicit storage */ +/* management, etc.. This number is used in deciding when to trigger */ +/* collections. */ +word GC_adj_words_allocd() +{ + register signed_word result; + register signed_word expl_managed = + BYTES_TO_WORDS((long)GC_non_gc_bytes + - (long)GC_non_gc_bytes_at_gc); + + /* Don't count what was explicitly freed, or newly allocated for */ + /* explicit management. Note that deallocating an explicitly */ + /* managed object should not alter result, assuming the client */ + /* is playing by the rules. */ + result = (signed_word)GC_words_allocd + - (signed_word)GC_mem_freed + + (signed_word)GC_finalizer_mem_freed - expl_managed; + if (result > (signed_word)GC_words_allocd) { + result = GC_words_allocd; + /* probably client bug or unfortunate scheduling */ + } + result += GC_words_finalized; + /* We count objects enqueued for finalization as though they */ + /* had been reallocated this round. Finalization is user */ + /* visible progress. And if we don't count this, we have */ + /* stability problems for programs that finalize all objects. */ + if ((GC_words_wasted >> 3) < result) + result += GC_words_wasted; + /* This doesn't reflect useful work. But if there is lots of */ + /* new fragmentation, the same is probably true of the heap, */ + /* and the collection will be correspondingly cheaper. */ + if (result < (signed_word)(GC_words_allocd >> 3)) { + /* Always count at least 1/8 of the allocations. We don't want */ + /* to collect too infrequently, since that would inhibit */ + /* coalescing of free storage blocks. */ + /* This also makes us partially robust against client bugs. */ + return(GC_words_allocd >> 3); + } else { + return(result); + } +} + + +/* Clear up a few frames worth of garbage left at the top of the stack. */ +/* This is used to prevent us from accidentally treating garbade left */ +/* on the stack by other parts of the collector as roots. This */ +/* differs from the code in misc.c, which actually tries to keep the */ +/* stack clear of long-lived, client-generated garbage. */ +void GC_clear_a_few_frames() +{ +# define NWORDS 64 + word frames[NWORDS]; + /* Some compilers will warn that frames was set but never used. */ + /* That's the whole idea ... */ + register int i; + + for (i = 0; i < NWORDS; i++) frames[i] = 0; +} + +/* Heap size at which we need a collection to avoid expanding past */ +/* limits used by blacklisting. */ +static word GC_collect_at_heapsize = (word)(-1); + +/* Have we allocated enough to amortize a collection? */ +GC_bool GC_should_collect() +{ + return(GC_adj_words_allocd() >= min_words_allocd() + || GC_heapsize >= GC_collect_at_heapsize); +} + + +void GC_notify_full_gc() +{ + if (GC_start_call_back != (void (*) GC_PROTO((void)))0) { + (*GC_start_call_back)(); + } +} + +GC_bool GC_is_full_gc = FALSE; + +/* + * Initiate a garbage collection if appropriate. + * Choose judiciously + * between partial, full, and stop-world collections. + * Assumes lock held, signals disabled. + */ +void GC_maybe_gc() +{ + static int n_partial_gcs = 0; + + if (GC_should_collect()) { + if (!GC_incremental) { + GC_gcollect_inner(); + n_partial_gcs = 0; + return; + } else { +# ifdef PARALLEL_MARK + GC_wait_for_reclaim(); +# endif + if (GC_need_full_gc || n_partial_gcs >= GC_full_freq) { +# ifdef CONDPRINT + if (GC_print_stats) { + GC_printf2( + "***>Full mark for collection %lu after %ld allocd bytes\n", + (unsigned long) GC_gc_no+1, + (long)WORDS_TO_BYTES(GC_words_allocd)); + } +# endif + GC_promote_black_lists(); + (void)GC_reclaim_all((GC_stop_func)0, TRUE); + GC_clear_marks(); + n_partial_gcs = 0; + GC_notify_full_gc(); + GC_is_full_gc = TRUE; + } else { + n_partial_gcs++; + } + } + /* We try to mark with the world stopped. */ + /* If we run out of time, this turns into */ + /* incremental marking. */ +# ifndef NO_CLOCK + if (GC_time_limit != GC_TIME_UNLIMITED) { GET_TIME(GC_start_time); } +# endif + if (GC_stopped_mark(GC_time_limit == GC_TIME_UNLIMITED? + GC_never_stop_func : GC_timeout_stop_func)) { +# ifdef SAVE_CALL_CHAIN_IN_GC + GC_save_callers(GC_last_stack); +# endif + GC_finish_collection(); + } else { + if (!GC_is_full_gc) { + /* Count this as the first attempt */ + GC_n_attempts++; + } + } + } +} + + +/* + * Stop the world garbage collection. Assumes lock held, signals disabled. + * If stop_func is not GC_never_stop_func, then abort if stop_func returns TRUE. + * Return TRUE if we successfully completed the collection. + */ +GC_bool GC_try_to_collect_inner(stop_func) +GC_stop_func stop_func; +{ +# ifdef CONDPRINT + CLOCK_TYPE start_time, current_time; +# endif + if (GC_dont_gc) return FALSE; + if (GC_incremental && GC_collection_in_progress()) { +# ifdef CONDPRINT + if (GC_print_stats) { + GC_printf0( + "GC_try_to_collect_inner: finishing collection in progress\n"); + } +# endif /* CONDPRINT */ + /* Just finish collection already in progress. */ + while(GC_collection_in_progress()) { + if (stop_func()) return(FALSE); + GC_collect_a_little_inner(1); + } + } + if (stop_func == GC_never_stop_func) GC_notify_full_gc(); +# ifdef CONDPRINT + if (GC_print_stats) { + if (GC_print_stats) GET_TIME(start_time); + GC_printf2( + "Initiating full world-stop collection %lu after %ld allocd bytes\n", + (unsigned long) GC_gc_no+1, + (long)WORDS_TO_BYTES(GC_words_allocd)); + } +# endif + GC_promote_black_lists(); + /* Make sure all blocks have been reclaimed, so sweep routines */ + /* don't see cleared mark bits. */ + /* If we're guaranteed to finish, then this is unnecessary. */ + /* In the find_leak case, we have to finish to guarantee that */ + /* previously unmarked objects are not reported as leaks. */ +# ifdef PARALLEL_MARK + GC_wait_for_reclaim(); +# endif + if ((GC_find_leak || stop_func != GC_never_stop_func) + && !GC_reclaim_all(stop_func, FALSE)) { + /* Aborted. So far everything is still consistent. */ + return(FALSE); + } + GC_invalidate_mark_state(); /* Flush mark stack. */ + GC_clear_marks(); +# ifdef SAVE_CALL_CHAIN_IN_GC + GC_save_callers(GC_last_stack); +# endif + GC_is_full_gc = TRUE; + if (!GC_stopped_mark(stop_func)) { + if (!GC_incremental) { + /* We're partially done and have no way to complete or use */ + /* current work. Reestablish invariants as cheaply as */ + /* possible. */ + GC_invalidate_mark_state(); + GC_unpromote_black_lists(); + } /* else we claim the world is already still consistent. We'll */ + /* finish incrementally. */ + return(FALSE); + } + GC_finish_collection(); +# if defined(CONDPRINT) + if (GC_print_stats) { + GET_TIME(current_time); + GC_printf1("Complete collection took %lu msecs\n", + MS_TIME_DIFF(current_time,start_time)); + } +# endif + return(TRUE); +} + + + +/* + * Perform n units of garbage collection work. A unit is intended to touch + * roughly GC_RATE pages. Every once in a while, we do more than that. + * This needa to be a fairly large number with our current incremental + * GC strategy, since otherwise we allocate too much during GC, and the + * cleanup gets expensive. + */ +# define GC_RATE 10 +# define MAX_PRIOR_ATTEMPTS 1 + /* Maximum number of prior attempts at world stop marking */ + /* A value of 1 means that we finish the second time, no matter */ + /* how long it takes. Doesn't count the initial root scan */ + /* for a full GC. */ + +int GC_deficit = 0; /* The number of extra calls to GC_mark_some */ + /* that we have made. */ + +void GC_collect_a_little_inner(n) +int n; +{ + register int i; + + if (GC_dont_gc) return; + if (GC_incremental && GC_collection_in_progress()) { + for (i = GC_deficit; i < GC_RATE*n; i++) { + if (GC_mark_some((ptr_t)0)) { + /* Need to finish a collection */ +# ifdef SAVE_CALL_CHAIN_IN_GC + GC_save_callers(GC_last_stack); +# endif +# ifdef PARALLEL_MARK + GC_wait_for_reclaim(); +# endif + if (GC_n_attempts < MAX_PRIOR_ATTEMPTS + && GC_time_limit != GC_TIME_UNLIMITED) { + GET_TIME(GC_start_time); + if (!GC_stopped_mark(GC_timeout_stop_func)) { + GC_n_attempts++; + break; + } + } else { + (void)GC_stopped_mark(GC_never_stop_func); + } + GC_finish_collection(); + break; + } + } + if (GC_deficit > 0) GC_deficit -= GC_RATE*n; + if (GC_deficit < 0) GC_deficit = 0; + } else { + GC_maybe_gc(); + } +} + +int GC_collect_a_little GC_PROTO(()) +{ + int result; + DCL_LOCK_STATE; + + DISABLE_SIGNALS(); + LOCK(); + GC_collect_a_little_inner(1); + result = (int)GC_collection_in_progress(); + UNLOCK(); + ENABLE_SIGNALS(); + if (!result && GC_debugging_started) GC_print_all_smashed(); + return(result); +} + +/* + * Assumes lock is held, signals are disabled. + * We stop the world. + * If stop_func() ever returns TRUE, we may fail and return FALSE. + * Increment GC_gc_no if we succeed. + */ +GC_bool GC_stopped_mark(stop_func) +GC_stop_func stop_func; +{ + register int i; + int dummy; +# if defined(PRINTTIMES) || defined(CONDPRINT) + CLOCK_TYPE start_time, current_time; +# endif + +# ifdef PRINTTIMES + GET_TIME(start_time); +# endif +# if defined(CONDPRINT) && !defined(PRINTTIMES) + if (GC_print_stats) GET_TIME(start_time); +# endif +# if defined(REGISTER_LIBRARIES_EARLY) + GC_cond_register_dynamic_libraries(); +# endif + STOP_WORLD(); + IF_THREADS(GC_world_stopped = TRUE); +# ifdef CONDPRINT + if (GC_print_stats) { + GC_printf1("--> Marking for collection %lu ", + (unsigned long) GC_gc_no + 1); + GC_printf2("after %lu allocd bytes + %lu wasted bytes\n", + (unsigned long) WORDS_TO_BYTES(GC_words_allocd), + (unsigned long) WORDS_TO_BYTES(GC_words_wasted)); + } +# endif +# ifdef MAKE_BACK_GRAPH + if (GC_print_back_height) { + GC_build_back_graph(); + } +# endif + + /* Mark from all roots. */ + /* Minimize junk left in my registers and on the stack */ + GC_clear_a_few_frames(); + GC_noop(0,0,0,0,0,0); + GC_initiate_gc(); + for(i = 0;;i++) { + if ((*stop_func)()) { +# ifdef CONDPRINT + if (GC_print_stats) { + GC_printf0("Abandoned stopped marking after "); + GC_printf1("%lu iterations\n", + (unsigned long)i); + } +# endif + GC_deficit = i; /* Give the mutator a chance. */ + IF_THREADS(GC_world_stopped = FALSE); + START_WORLD(); + return(FALSE); + } + if (GC_mark_some((ptr_t)(&dummy))) break; + } + + GC_gc_no++; +# ifdef PRINTSTATS + GC_printf2("Collection %lu reclaimed %ld bytes", + (unsigned long) GC_gc_no - 1, + (long)WORDS_TO_BYTES(GC_mem_found)); +# else +# ifdef CONDPRINT + if (GC_print_stats) { + GC_printf1("Collection %lu finished", (unsigned long) GC_gc_no - 1); + } +# endif +# endif /* !PRINTSTATS */ +# ifdef CONDPRINT + if (GC_print_stats) { + GC_printf1(" ---> heapsize = %lu bytes\n", + (unsigned long) GC_heapsize); + /* Printf arguments may be pushed in funny places. Clear the */ + /* space. */ + GC_printf0(""); + } +# endif /* CONDPRINT */ + + /* Check all debugged objects for consistency */ + if (GC_debugging_started) { + (*GC_check_heap)(); + } + + IF_THREADS(GC_world_stopped = FALSE); + START_WORLD(); +# ifdef PRINTTIMES + GET_TIME(current_time); + GC_printf1("World-stopped marking took %lu msecs\n", + MS_TIME_DIFF(current_time,start_time)); +# else +# ifdef CONDPRINT + if (GC_print_stats) { + GET_TIME(current_time); + GC_printf1("World-stopped marking took %lu msecs\n", + MS_TIME_DIFF(current_time,start_time)); + } +# endif +# endif + return(TRUE); +} + +/* Set all mark bits for the free list whose first entry is q */ +#ifdef __STDC__ + void GC_set_fl_marks(ptr_t q) +#else + void GC_set_fl_marks(q) + ptr_t q; +#endif +{ + ptr_t p; + struct hblk * h, * last_h = 0; + hdr *hhdr; + int word_no; + + for (p = q; p != 0; p = obj_link(p)){ + h = HBLKPTR(p); + if (h != last_h) { + last_h = h; + hhdr = HDR(h); + } + word_no = (((word *)p) - ((word *)h)); + set_mark_bit_from_hdr(hhdr, word_no); + } +} + +/* Clear all mark bits for the free list whose first entry is q */ +/* Decrement GC_mem_found by number of words on free list. */ +#ifdef __STDC__ + void GC_clear_fl_marks(ptr_t q) +#else + void GC_clear_fl_marks(q) + ptr_t q; +#endif +{ + ptr_t p; + struct hblk * h, * last_h = 0; + hdr *hhdr; + int word_no; + + for (p = q; p != 0; p = obj_link(p)){ + h = HBLKPTR(p); + if (h != last_h) { + last_h = h; + hhdr = HDR(h); + } + word_no = (((word *)p) - ((word *)h)); + clear_mark_bit_from_hdr(hhdr, word_no); +# ifdef GATHERSTATS + GC_mem_found -= hhdr -> hb_sz; +# endif + } +} + +/* Finish up a collection. Assumes lock is held, signals are disabled, */ +/* but the world is otherwise running. */ +void GC_finish_collection() +{ +# ifdef PRINTTIMES + CLOCK_TYPE start_time; + CLOCK_TYPE finalize_time; + CLOCK_TYPE done_time; + + GET_TIME(start_time); + finalize_time = start_time; +# endif + +# ifdef GATHERSTATS + GC_mem_found = 0; +# endif +# if defined(LINUX) && defined(__ELF__) && !defined(SMALL_CONFIG) + if (getenv("GC_PRINT_ADDRESS_MAP") != 0) { + GC_print_address_map(); + } +# endif + COND_DUMP; + if (GC_find_leak) { + /* Mark all objects on the free list. All objects should be */ + /* marked when we're done. */ + { + register word size; /* current object size */ + int kind; + ptr_t q; + + for (kind = 0; kind < GC_n_kinds; kind++) { + for (size = 1; size <= MAXOBJSZ; size++) { + q = GC_obj_kinds[kind].ok_freelist[size]; + if (q != 0) GC_set_fl_marks(q); + } + } + } + GC_start_reclaim(TRUE); + /* The above just checks; it doesn't really reclaim anything. */ + } + + GC_finalize(); +# ifdef STUBBORN_ALLOC + GC_clean_changing_list(); +# endif + +# ifdef PRINTTIMES + GET_TIME(finalize_time); +# endif + + if (GC_print_back_height) { +# ifdef MAKE_BACK_GRAPH + GC_traverse_back_graph(); +# else +# ifndef SMALL_CONFIG + GC_err_printf0("Back height not available: " + "Rebuild collector with -DMAKE_BACK_GRAPH\n"); +# endif +# endif + } + + /* Clear free list mark bits, in case they got accidentally marked */ + /* (or GC_find_leak is set and they were intentionally marked). */ + /* Also subtract memory remaining from GC_mem_found count. */ + /* Note that composite objects on free list are cleared. */ + /* Thus accidentally marking a free list is not a problem; only */ + /* objects on the list itself will be marked, and that's fixed here. */ + { + register word size; /* current object size */ + register ptr_t q; /* pointer to current object */ + int kind; + + for (kind = 0; kind < GC_n_kinds; kind++) { + for (size = 1; size <= MAXOBJSZ; size++) { + q = GC_obj_kinds[kind].ok_freelist[size]; + if (q != 0) GC_clear_fl_marks(q); + } + } + } + + +# ifdef PRINTSTATS + GC_printf1("Bytes recovered before sweep - f.l. count = %ld\n", + (long)WORDS_TO_BYTES(GC_mem_found)); +# endif + /* Reconstruct free lists to contain everything not marked */ + GC_start_reclaim(FALSE); + if (GC_is_full_gc) { + GC_used_heap_size_after_full = USED_HEAP_SIZE; + GC_need_full_gc = FALSE; + } else { + GC_need_full_gc = + BYTES_TO_WORDS(USED_HEAP_SIZE - GC_used_heap_size_after_full) + > min_words_allocd(); + } + +# ifdef PRINTSTATS + GC_printf2( + "Immediately reclaimed %ld bytes in heap of size %lu bytes", + (long)WORDS_TO_BYTES(GC_mem_found), + (unsigned long)GC_heapsize); +# ifdef USE_MUNMAP + GC_printf1("(%lu unmapped)", GC_unmapped_bytes); +# endif + GC_printf2( + "\n%lu (atomic) + %lu (composite) collectable bytes in use\n", + (unsigned long)WORDS_TO_BYTES(GC_atomic_in_use), + (unsigned long)WORDS_TO_BYTES(GC_composite_in_use)); +# endif + + GC_n_attempts = 0; + GC_is_full_gc = FALSE; + /* Reset or increment counters for next cycle */ + GC_words_allocd_before_gc += GC_words_allocd; + GC_non_gc_bytes_at_gc = GC_non_gc_bytes; + GC_words_allocd = 0; + GC_words_wasted = 0; + GC_mem_freed = 0; + GC_finalizer_mem_freed = 0; + +# ifdef USE_MUNMAP + GC_unmap_old(); +# endif +# ifdef PRINTTIMES + GET_TIME(done_time); + GC_printf2("Finalize + initiate sweep took %lu + %lu msecs\n", + MS_TIME_DIFF(finalize_time,start_time), + MS_TIME_DIFF(done_time,finalize_time)); +# endif +} + +/* Externally callable routine to invoke full, stop-world collection */ +# if defined(__STDC__) || defined(__cplusplus) + int GC_try_to_collect(GC_stop_func stop_func) +# else + int GC_try_to_collect(stop_func) + GC_stop_func stop_func; +# endif +{ + int result; + DCL_LOCK_STATE; + + if (GC_debugging_started) GC_print_all_smashed(); + GC_INVOKE_FINALIZERS(); + DISABLE_SIGNALS(); + LOCK(); + ENTER_GC(); + if (!GC_is_initialized) GC_init_inner(); + /* Minimize junk left in my registers */ + GC_noop(0,0,0,0,0,0); + result = (int)GC_try_to_collect_inner(stop_func); + EXIT_GC(); + UNLOCK(); + ENABLE_SIGNALS(); + if(result) { + if (GC_debugging_started) GC_print_all_smashed(); + GC_INVOKE_FINALIZERS(); + } + return(result); +} + +void GC_gcollect GC_PROTO(()) +{ + (void)GC_try_to_collect(GC_never_stop_func); + if (GC_have_errors) GC_print_all_errors(); +} + +word GC_n_heap_sects = 0; /* Number of sections currently in heap. */ + +/* + * Use the chunk of memory starting at p of size bytes as part of the heap. + * Assumes p is HBLKSIZE aligned, and bytes is a multiple of HBLKSIZE. + */ +void GC_add_to_heap(p, bytes) +struct hblk *p; +word bytes; +{ + word words; + hdr * phdr; + + if (GC_n_heap_sects >= MAX_HEAP_SECTS) { + ABORT("Too many heap sections: Increase MAXHINCR or MAX_HEAP_SECTS"); + } + phdr = GC_install_header(p); + if (0 == phdr) { + /* This is extremely unlikely. Can't add it. This will */ + /* almost certainly result in a 0 return from the allocator, */ + /* which is entirely appropriate. */ + return; + } + GC_heap_sects[GC_n_heap_sects].hs_start = (ptr_t)p; + GC_heap_sects[GC_n_heap_sects].hs_bytes = bytes; + GC_n_heap_sects++; + words = BYTES_TO_WORDS(bytes); + phdr -> hb_sz = words; + phdr -> hb_map = (unsigned char *)1; /* A value != GC_invalid_map */ + phdr -> hb_flags = 0; + GC_freehblk(p); + GC_heapsize += bytes; + if ((ptr_t)p <= (ptr_t)GC_least_plausible_heap_addr + || GC_least_plausible_heap_addr == 0) { + GC_least_plausible_heap_addr = (GC_PTR)((ptr_t)p - sizeof(word)); + /* Making it a little smaller than necessary prevents */ + /* us from getting a false hit from the variable */ + /* itself. There's some unintentional reflection */ + /* here. */ + } + if ((ptr_t)p + bytes >= (ptr_t)GC_greatest_plausible_heap_addr) { + GC_greatest_plausible_heap_addr = (GC_PTR)((ptr_t)p + bytes); + } +} + +# if !defined(NO_DEBUGGING) +void GC_print_heap_sects() +{ + register unsigned i; + + GC_printf1("Total heap size: %lu\n", (unsigned long) GC_heapsize); + for (i = 0; i < GC_n_heap_sects; i++) { + unsigned long start = (unsigned long) GC_heap_sects[i].hs_start; + unsigned long len = (unsigned long) GC_heap_sects[i].hs_bytes; + struct hblk *h; + unsigned nbl = 0; + + GC_printf3("Section %ld from 0x%lx to 0x%lx ", (unsigned long)i, + start, (unsigned long)(start + len)); + for (h = (struct hblk *)start; h < (struct hblk *)(start + len); h++) { + if (GC_is_black_listed(h, HBLKSIZE)) nbl++; + } + GC_printf2("%lu/%lu blacklisted\n", (unsigned long)nbl, + (unsigned long)(len/HBLKSIZE)); + } +} +# endif + +GC_PTR GC_least_plausible_heap_addr = (GC_PTR)ONES; +GC_PTR GC_greatest_plausible_heap_addr = 0; + +ptr_t GC_max(x,y) +ptr_t x, y; +{ + return(x > y? x : y); +} + +ptr_t GC_min(x,y) +ptr_t x, y; +{ + return(x < y? x : y); +} + +# if defined(__STDC__) || defined(__cplusplus) + void GC_set_max_heap_size(GC_word n) +# else + void GC_set_max_heap_size(n) + GC_word n; +# endif +{ + GC_max_heapsize = n; +} + +GC_word GC_max_retries = 0; + +/* + * this explicitly increases the size of the heap. It is used + * internally, but may also be invoked from GC_expand_hp by the user. + * The argument is in units of HBLKSIZE. + * Tiny values of n are rounded up. + * Returns FALSE on failure. + */ +GC_bool GC_expand_hp_inner(n) +word n; +{ + word bytes; + struct hblk * space; + word expansion_slop; /* Number of bytes by which we expect the */ + /* heap to expand soon. */ + + if (n < MINHINCR) n = MINHINCR; + bytes = n * HBLKSIZE; + /* Make sure bytes is a multiple of GC_page_size */ + { + word mask = GC_page_size - 1; + bytes += mask; + bytes &= ~mask; + } + + if (GC_max_heapsize != 0 && GC_heapsize + bytes > GC_max_heapsize) { + /* Exceeded self-imposed limit */ + return(FALSE); + } + space = GET_MEM(bytes); + if( space == 0 ) { +# ifdef CONDPRINT + if (GC_print_stats) { + GC_printf1("Failed to expand heap by %ld bytes\n", + (unsigned long)bytes); + } +# endif + return(FALSE); + } +# ifdef CONDPRINT + if (GC_print_stats) { + GC_printf2("Increasing heap size by %lu after %lu allocated bytes\n", + (unsigned long)bytes, + (unsigned long)WORDS_TO_BYTES(GC_words_allocd)); +# ifdef UNDEFINED + GC_printf1("Root size = %lu\n", GC_root_size); + GC_print_block_list(); GC_print_hblkfreelist(); + GC_printf0("\n"); +# endif + } +# endif + expansion_slop = WORDS_TO_BYTES(min_words_allocd()) + 4*MAXHINCR*HBLKSIZE; + if (GC_last_heap_addr == 0 && !((word)space & SIGNB) + || (GC_last_heap_addr != 0 && GC_last_heap_addr < (ptr_t)space)) { + /* Assume the heap is growing up */ + GC_greatest_plausible_heap_addr = + (GC_PTR)GC_max((ptr_t)GC_greatest_plausible_heap_addr, + (ptr_t)space + bytes + expansion_slop); + } else { + /* Heap is growing down */ + GC_least_plausible_heap_addr = + (GC_PTR)GC_min((ptr_t)GC_least_plausible_heap_addr, + (ptr_t)space - expansion_slop); + } +# if defined(LARGE_CONFIG) + if (((ptr_t)GC_greatest_plausible_heap_addr <= (ptr_t)space + bytes + || (ptr_t)GC_least_plausible_heap_addr >= (ptr_t)space) + && GC_heapsize > 0) { + /* GC_add_to_heap will fix this, but ... */ + WARN("Too close to address space limit: blacklisting ineffective\n", 0); + } +# endif + GC_prev_heap_addr = GC_last_heap_addr; + GC_last_heap_addr = (ptr_t)space; + GC_add_to_heap(space, bytes); + /* Force GC before we are likely to allocate past expansion_slop */ + GC_collect_at_heapsize = + GC_heapsize + expansion_slop - 2*MAXHINCR*HBLKSIZE; +# if defined(LARGE_CONFIG) + if (GC_collect_at_heapsize < GC_heapsize /* wrapped */) + GC_collect_at_heapsize = (word)(-1); +# endif + return(TRUE); +} + +/* Really returns a bool, but it's externally visible, so that's clumsy. */ +/* Arguments is in bytes. */ +# if defined(__STDC__) || defined(__cplusplus) + int GC_expand_hp(size_t bytes) +# else + int GC_expand_hp(bytes) + size_t bytes; +# endif +{ + int result; + DCL_LOCK_STATE; + + DISABLE_SIGNALS(); + LOCK(); + if (!GC_is_initialized) GC_init_inner(); + result = (int)GC_expand_hp_inner(divHBLKSZ((word)bytes)); + if (result) GC_requested_heapsize += bytes; + UNLOCK(); + ENABLE_SIGNALS(); + return(result); +} + +unsigned GC_fail_count = 0; + /* How many consecutive GC/expansion failures? */ + /* Reset by GC_allochblk. */ + +GC_bool GC_collect_or_expand(needed_blocks, ignore_off_page) +word needed_blocks; +GC_bool ignore_off_page; +{ + if (!GC_incremental && !GC_dont_gc && + ((GC_dont_expand && GC_words_allocd > 0) || GC_should_collect())) { + GC_gcollect_inner(); + } else { + word blocks_to_get = GC_heapsize/(HBLKSIZE*GC_free_space_divisor) + + needed_blocks; + + if (blocks_to_get > MAXHINCR) { + word slop; + + /* Get the minimum required to make it likely that we */ + /* can satisfy the current request in the presence of black- */ + /* listing. This will probably be more than MAXHINCR. */ + if (ignore_off_page) { + slop = 4; + } else { + slop = 2*divHBLKSZ(BL_LIMIT); + if (slop > needed_blocks) slop = needed_blocks; + } + if (needed_blocks + slop > MAXHINCR) { + blocks_to_get = needed_blocks + slop; + } else { + blocks_to_get = MAXHINCR; + } + } + if (!GC_expand_hp_inner(blocks_to_get) + && !GC_expand_hp_inner(needed_blocks)) { + if (GC_fail_count++ < GC_max_retries) { + WARN("Out of Memory! Trying to continue ...\n", 0); + GC_gcollect_inner(); + } else { +# if !defined(AMIGA) || !defined(GC_AMIGA_FASTALLOC) + WARN("Out of Memory! Returning NIL!\n", 0); +# endif + return(FALSE); + } + } else { +# ifdef CONDPRINT + if (GC_fail_count && GC_print_stats) { + GC_printf0("Memory available again ...\n"); + } +# endif + } + } + return(TRUE); +} + +/* + * Make sure the object free list for sz is not empty. + * Return a pointer to the first object on the free list. + * The object MUST BE REMOVED FROM THE FREE LIST BY THE CALLER. + * Assumes we hold the allocator lock and signals are disabled. + * + */ +ptr_t GC_allocobj(sz, kind) +word sz; +int kind; +{ + ptr_t * flh = &(GC_obj_kinds[kind].ok_freelist[sz]); + GC_bool tried_minor = FALSE; + + if (sz == 0) return(0); + + while (*flh == 0) { + ENTER_GC(); + /* Do our share of marking work */ + if(TRUE_INCREMENTAL) GC_collect_a_little_inner(1); + /* Sweep blocks for objects of this size */ + GC_continue_reclaim(sz, kind); + EXIT_GC(); + if (*flh == 0) { + GC_new_hblk(sz, kind); + } + if (*flh == 0) { + ENTER_GC(); + if (GC_incremental && GC_time_limit == GC_TIME_UNLIMITED + && ! tried_minor ) { + GC_collect_a_little_inner(1); + tried_minor = TRUE; + } else { + if (!GC_collect_or_expand((word)1,FALSE)) { + EXIT_GC(); + return(0); + } + } + EXIT_GC(); + } + } + /* Successful allocation; reset failure count. */ + GC_fail_count = 0; + + return(*flh); +} Added: llvm-gcc-4.2/trunk/boehm-gc/alpha_mach_dep.S URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/alpha_mach_dep.S?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/alpha_mach_dep.S (added) +++ llvm-gcc-4.2/trunk/boehm-gc/alpha_mach_dep.S Thu Nov 8 16:56:19 2007 @@ -0,0 +1,86 @@ + .arch ev6 + + .text + .align 4 + .globl GC_push_regs + .ent GC_push_regs 2 +GC_push_regs: + ldgp $gp, 0($27) + lda $sp, -16($sp) + stq $26, 0($sp) + .mask 0x04000000, 0 + .frame $sp, 16, $26, 0 + +/* $0 integer result */ +/* $1-$8 temp regs - not preserved cross calls */ +/* $9-$15 call saved regs */ +/* $16-$21 argument regs - not preserved cross calls */ +/* $22-$28 temp regs - not preserved cross calls */ +/* $29 global pointer - not preserved cross calls */ +/* $30 stack pointer */ + +# define call_push(x) \ + mov x, $16; \ + jsr $26, GC_push_one; \ + ldgp $gp, 0($26) + + call_push($9) + call_push($10) + call_push($11) + call_push($12) + call_push($13) + call_push($14) + call_push($15) + +/* $f0-$f1 floating point results */ +/* $f2-$f9 call saved regs */ +/* $f10-$f30 temp regs - not preserved cross calls */ + + /* Use the most efficient transfer method for this hardware. */ + /* Bit 1 detects the FIX extension, which includes ftoit. */ + amask 2, $0 + bne $0, $use_stack + +#undef call_push +#define call_push(x) \ + ftoit x, $16; \ + jsr $26, GC_push_one; \ + ldgp $gp, 0($26) + + call_push($f2) + call_push($f3) + call_push($f4) + call_push($f5) + call_push($f6) + call_push($f7) + call_push($f8) + call_push($f9) + + ldq $26, 0($sp) + lda $sp, 16($sp) + ret $31, ($26), 1 + + .align 4 +$use_stack: + +#undef call_push +#define call_push(x) \ + stt x, 8($sp); \ + ldq $16, 8($sp); \ + jsr $26, GC_push_one; \ + ldgp $gp, 0($26) + + call_push($f2) + call_push($f3) + call_push($f4) + call_push($f5) + call_push($f6) + call_push($f7) + call_push($f8) + call_push($f9) + + ldq $26, 0($sp) + lda $sp, 16($sp) + ret $31, ($26), 1 + + .end GC_push_regs Added: llvm-gcc-4.2/trunk/boehm-gc/backgraph.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/backgraph.c?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/backgraph.c (added) +++ llvm-gcc-4.2/trunk/boehm-gc/backgraph.c Thu Nov 8 16:56:19 2007 @@ -0,0 +1,469 @@ +/* + * Copyright (c) 2001 by Hewlett-Packard Company. All rights reserved. + * + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * + * Permission is hereby granted to use or copy this program + * for any purpose, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is granted, + * provided the above notices are retained, and a notice that the code was + * modified is included with the above copyright notice. + * + */ + +/* + * This implements a full, though not well-tuned, representation of the + * backwards points-to graph. This is used to test for non-GC-robust + * data structures; the code is not used during normal garbage collection. + * + * One restriction is that we drop all back-edges from nodes with very + * high in-degree, and simply add them add them to a list of such + * nodes. They are then treated as permanent roots. Id this by itself + * doesn't introduce a space leak, then such nodes can't contribute to + * a growing space leak. + */ + +#include "gc.h" /* For configuration information. */ + +#ifdef MAKE_BACK_GRAPH + +#define MAX_IN 10 /* Maximum in-degree we handle directly */ + +#include "private/dbg_mlc.h" +#include + +#if !defined(DBG_HDRS_ALL) || (ALIGNMENT != CPP_WORDSZ/8) || !defined(UNIX_LIKE) +# error Configuration doesnt support MAKE_BACK_GRAPH +#endif + +/* We store single back pointers directly in the object's oh_bg_ptr field. */ +/* If there is more than one ptr to an object, we store q | FLAG_MANY, */ +/* where q is a pointer to a back_edges object. */ +/* Every once in a while we use a back_edges object even for a single */ +/* pointer, since we need the other fields in the back_edges structure to */ +/* be present in some fraction of the objects. Otherwise we get serious */ +/* performance issues. */ +#define FLAG_MANY 2 + +typedef struct back_edges_struct { + word n_edges; /* Number of edges, including those in continuation */ + /* structures. */ + unsigned short flags; +# define RETAIN 1 /* Directly points to a reachable object; */ + /* retain for next GC. */ + unsigned short height_gc_no; + /* If height > 0, then the GC_gc_no value when it */ + /* was computed. If it was computed this cycle, then */ + /* it is current. If it was computed during the */ + /* last cycle, then it represents the old height, */ + /* which is only saved for live objects referenced by */ + /* dead ones. This may grow due to refs from newly */ + /* dead objects. */ + signed_word height; + /* Longest path through unreachable nodes to this node */ + /* that we found using depth first search. */ + +# define HEIGHT_UNKNOWN ((signed_word)(-2)) +# define HEIGHT_IN_PROGRESS ((signed_word)(-1)) + ptr_t edges[MAX_IN]; + struct back_edges_struct *cont; + /* Pointer to continuation structure; we use only the */ + /* edges field in the continuation. */ + /* also used as free list link. */ +} back_edges; + +/* Allocate a new back edge structure. Should be more sophisticated */ +/* if this were production code. */ +#define MAX_BACK_EDGE_STRUCTS 100000 +static back_edges *back_edge_space = 0; +int GC_n_back_edge_structs = 0; /* Serves as pointer to never used */ + /* back_edges space. */ +static back_edges *avail_back_edges = 0; + /* Pointer to free list of deallocated */ + /* back_edges structures. */ + +static back_edges * new_back_edges(void) +{ + if (0 == back_edge_space) { + back_edge_space = (back_edges *) + GET_MEM(MAX_BACK_EDGE_STRUCTS*sizeof(back_edges)); + } + if (0 != avail_back_edges) { + back_edges * result = avail_back_edges; + avail_back_edges = result -> cont; + result -> cont = 0; + return result; + } + if (GC_n_back_edge_structs >= MAX_BACK_EDGE_STRUCTS - 1) { + ABORT("needed too much space for back edges: adjust " + "MAX_BACK_EDGE_STRUCTS"); + } + return back_edge_space + (GC_n_back_edge_structs++); +} + +/* Deallocate p and its associated continuation structures. */ +static void deallocate_back_edges(back_edges *p) +{ + back_edges *last = p; + + while (0 != last -> cont) last = last -> cont; + last -> cont = avail_back_edges; + avail_back_edges = p; +} + +/* Table of objects that are currently on the depth-first search */ +/* stack. Only objects with in-degree one are in this table. */ +/* Other objects are identified using HEIGHT_IN_PROGRESS. */ +/* FIXME: This data structure NEEDS IMPROVEMENT. */ +#define INITIAL_IN_PROGRESS 10000 +static ptr_t * in_progress_space = 0; +static size_t in_progress_size = 0; +static size_t n_in_progress = 0; + +static void push_in_progress(ptr_t p) +{ + if (n_in_progress >= in_progress_size) + if (in_progress_size == 0) { + in_progress_size = INITIAL_IN_PROGRESS; + in_progress_space = (ptr_t *)GET_MEM(in_progress_size * sizeof(ptr_t)); + } else { + ptr_t * new_in_progress_space; + in_progress_size *= 2; + new_in_progress_space = (ptr_t *) + GET_MEM(in_progress_size * sizeof(ptr_t)); + BCOPY(in_progress_space, new_in_progress_space, + n_in_progress * sizeof(ptr_t)); + in_progress_space = new_in_progress_space; + /* FIXME: This just drops the old space. */ + } + if (in_progress_space == 0) + ABORT("MAKE_BACK_GRAPH: Out of in-progress space: " + "Huge linear data structure?"); + in_progress_space[n_in_progress++] = p; +} + +static GC_bool is_in_progress(ptr_t p) +{ + int i; + for (i = 0; i < n_in_progress; ++i) { + if (in_progress_space[i] == p) return TRUE; + } + return FALSE; +} + +static void pop_in_progress(ptr_t p) +{ + --n_in_progress; + GC_ASSERT(in_progress_space[n_in_progress] == p); +} + +#define GET_OH_BG_PTR(p) \ + (ptr_t)REVEAL_POINTER(((oh *)(p)) -> oh_bg_ptr) +#define SET_OH_BG_PTR(p,q) (((oh *)(p)) -> oh_bg_ptr) = HIDE_POINTER(q) + +/* Execute s once for each predecessor q of p in the points-to graph. */ +/* s should be a bracketed statement. We declare q. */ +#define FOR_EACH_PRED(q, p, s) \ + { \ + ptr_t q = GET_OH_BG_PTR(p); \ + if (!((word)q & FLAG_MANY)) { \ + if (q && !((word)q & 1)) s \ + /* !((word)q & 1) checks for a misnterpreted freelist link */ \ + } else { \ + back_edges *orig_be_ = (back_edges *)((word)q & ~FLAG_MANY); \ + back_edges *be_ = orig_be_; \ + int total_, local_; \ + int n_edges_ = be_ -> n_edges; \ + for (total_ = 0, local_ = 0; total_ < n_edges_; ++local_, ++total_) { \ + if (local_ == MAX_IN) { \ + be_ = be_ -> cont; \ + local_ = 0; \ + } \ + q = be_ -> edges[local_]; s \ + } \ + } \ + } + +/* Ensure that p has a back_edges structure associated with it. */ +static void ensure_struct(ptr_t p) +{ + ptr_t old_back_ptr = GET_OH_BG_PTR(p); + + if (!((word)old_back_ptr & FLAG_MANY)) { + back_edges *be = new_back_edges(); + be -> flags = 0; + if (0 == old_back_ptr) { + be -> n_edges = 0; + } else { + be -> n_edges = 1; + be -> edges[0] = old_back_ptr; + } + be -> height = HEIGHT_UNKNOWN; + be -> height_gc_no = GC_gc_no - 1; + GC_ASSERT(be >= back_edge_space); + SET_OH_BG_PTR(p, (word)be | FLAG_MANY); + } +} + +/* Add the (forward) edge from p to q to the backward graph. Both p */ +/* q are pointers to the object base, i.e. pointers to an oh. */ +static void add_edge(ptr_t p, ptr_t q) +{ + ptr_t old_back_ptr = GET_OH_BG_PTR(q); + back_edges * be, *be_cont; + word i; + static unsigned random_number = 13; +# define GOT_LUCKY_NUMBER (((++random_number) & 0x7f) == 0) + /* A not very random number we use to occasionally allocate a */ + /* back_edges structure even for a single backward edge. This */ + /* prevents us from repeatedly tracing back through very long */ + /* chains, since we will have some place to store height and */ + /* in_progress flags along the way. */ + + GC_ASSERT(p == GC_base(p) && q == GC_base(q)); + if (!GC_HAS_DEBUG_INFO(q) || !GC_HAS_DEBUG_INFO(p)) { + /* This is really a misinterpreted free list link, since we saw */ + /* a pointer to a free list. Dont overwrite it! */ + return; + } + if (0 == old_back_ptr) { + SET_OH_BG_PTR(q, p); + if (GOT_LUCKY_NUMBER) ensure_struct(q); + return; + } + /* Check whether it was already in the list of predecessors. */ + FOR_EACH_PRED(pred, q, { if (p == pred) return; }); + ensure_struct(q); + old_back_ptr = GET_OH_BG_PTR(q); + be = (back_edges *)((word)old_back_ptr & ~FLAG_MANY); + for (i = be -> n_edges, be_cont = be; i > MAX_IN; + be_cont = be_cont -> cont, i -= MAX_IN) {} + if (i == MAX_IN) { + be_cont -> cont = new_back_edges(); + be_cont = be_cont -> cont; + i = 0; + } + be_cont -> edges[i] = p; + be -> n_edges++; + if (be -> n_edges == 100) { +# if 0 + if (GC_print_stats) { + GC_err_printf0("The following object has in-degree >= 100:\n"); + GC_print_heap_obj(q); + } +# endif + } +} + +typedef void (*per_object_func)(ptr_t p, word n_words, word gc_descr); + +static void per_object_helper(struct hblk *h, word fn) +{ + hdr * hhdr = HDR(h); + word sz = hhdr -> hb_sz; + word descr = hhdr -> hb_descr; + per_object_func f = (per_object_func)fn; + int i = 0; + + do { + f((ptr_t)(h -> hb_body + i), sz, descr); + i += sz; + } while (i + sz <= BYTES_TO_WORDS(HBLKSIZE)); +} + +void GC_apply_to_each_object(per_object_func f) +{ + GC_apply_to_all_blocks(per_object_helper, (word)f); +} + +static void reset_back_edge(ptr_t p, word n_words, word gc_descr) +{ + /* Skip any free list links, or dropped blocks */ + if (GC_HAS_DEBUG_INFO(p)) { + ptr_t old_back_ptr = GET_OH_BG_PTR(p); + if ((word)old_back_ptr & FLAG_MANY) { + back_edges *be = (back_edges *)((word)old_back_ptr & ~FLAG_MANY); + if (!(be -> flags & RETAIN)) { + deallocate_back_edges(be); + SET_OH_BG_PTR(p, 0); + } else { + word *currentp; + + GC_ASSERT(GC_is_marked(p)); + + /* Back edges may point to objects that will not be retained. */ + /* Delete them for now, but remember the height. */ + /* Some will be added back at next GC. */ + be -> n_edges = 0; + if (0 != be -> cont) { + deallocate_back_edges(be -> cont); + be -> cont = 0; + } + + GC_ASSERT(GC_is_marked(p)); + + /* We only retain things for one GC cycle at a time. */ + be -> flags &= ~RETAIN; + } + } else /* Simple back pointer */ { + /* Clear to avoid dangling pointer. */ + SET_OH_BG_PTR(p, 0); + } + } +} + +static void add_back_edges(ptr_t p, word n_words, word gc_descr) +{ + word *currentp = (word *)(p + sizeof(oh)); + + /* For now, fix up non-length descriptors conservatively. */ + if((gc_descr & GC_DS_TAGS) != GC_DS_LENGTH) { + gc_descr = WORDS_TO_BYTES(n_words); + } + while (currentp < (word *)(p + gc_descr)) { + word current = *currentp++; + FIXUP_POINTER(current); + if (current >= (word)GC_least_plausible_heap_addr && + current <= (word)GC_greatest_plausible_heap_addr) { + ptr_t target = GC_base((GC_PTR)current); + if (0 != target) { + add_edge(p, target); + } + } + } +} + +/* Rebuild the representation of the backward reachability graph. */ +/* Does not examine mark bits. Can be called before GC. */ +void GC_build_back_graph(void) +{ + GC_apply_to_each_object(add_back_edges); +} + +/* Return an approximation to the length of the longest simple path */ +/* through unreachable objects to p. We refer to this as the height */ +/* of p. */ +static word backwards_height(ptr_t p) +{ + word result; + ptr_t back_ptr = GET_OH_BG_PTR(p); + back_edges *be; + + if (0 == back_ptr) return 1; + if (!((word)back_ptr & FLAG_MANY)) { + if (is_in_progress(p)) return 0; /* DFS back edge, i.e. we followed */ + /* an edge to an object already */ + /* on our stack: ignore */ + push_in_progress(p); + result = backwards_height(back_ptr)+1; + pop_in_progress(p); + return result; + } + be = (back_edges *)((word)back_ptr & ~FLAG_MANY); + if (be -> height >= 0 && be -> height_gc_no == GC_gc_no) + return be -> height; + /* Ignore back edges in DFS */ + if (be -> height == HEIGHT_IN_PROGRESS) return 0; + result = (be -> height > 0? be -> height : 1); + be -> height = HEIGHT_IN_PROGRESS; + FOR_EACH_PRED(q, p, { + word this_height; + if (GC_is_marked(q) && !(FLAG_MANY & (word)GET_OH_BG_PTR(p))) { + if (GC_print_stats) + GC_printf2("Found bogus pointer from 0x%lx to 0x%lx\n", q, p); + /* Reachable object "points to" unreachable one. */ + /* Could be caused by our lax treatment of GC descriptors. */ + this_height = 1; + } else { + this_height = backwards_height(q); + } + if (this_height >= result) result = this_height + 1; + }); + be -> height = result; + be -> height_gc_no = GC_gc_no; + return result; +} + +word GC_max_height; +ptr_t GC_deepest_obj; + +/* Compute the maximum height of every unreachable predecessor p of a */ +/* reachable object. Arrange to save the heights of all such objects p */ +/* so that they can be used in calculating the height of objects in the */ +/* next GC. */ +/* Set GC_max_height to be the maximum height we encounter, and */ +/* GC_deepest_obj to be the corresponding object. */ +static void update_max_height(ptr_t p, word n_words, word gc_descr) +{ + if (GC_is_marked(p) && GC_HAS_DEBUG_INFO(p)) { + int i; + word p_height = 0; + ptr_t p_deepest_obj = 0; + ptr_t back_ptr; + back_edges *be = 0; + + /* If we remembered a height last time, use it as a minimum. */ + /* It may have increased due to newly unreachable chains pointing */ + /* to p, but it can't have decreased. */ + back_ptr = GET_OH_BG_PTR(p); + if (0 != back_ptr && ((word)back_ptr & FLAG_MANY)) { + be = (back_edges *)((word)back_ptr & ~FLAG_MANY); + if (be -> height != HEIGHT_UNKNOWN) p_height = be -> height; + } + FOR_EACH_PRED(q, p, { + if (!GC_is_marked(q) && GC_HAS_DEBUG_INFO(q)) { + word q_height; + + q_height = backwards_height(q); + if (q_height > p_height) { + p_height = q_height; + p_deepest_obj = q; + } + } + }); + if (p_height > 0) { + /* Remember the height for next time. */ + if (be == 0) { + ensure_struct(p); + back_ptr = GET_OH_BG_PTR(p); + be = (back_edges *)((word)back_ptr & ~FLAG_MANY); + } + be -> flags |= RETAIN; + be -> height = p_height; + be -> height_gc_no = GC_gc_no; + } + if (p_height > GC_max_height) { + GC_max_height = p_height; + GC_deepest_obj = p_deepest_obj; + } + } +} + +word GC_max_max_height = 0; + +void GC_traverse_back_graph(void) +{ + GC_max_height = 0; + GC_apply_to_each_object(update_max_height); +} + +void GC_print_back_graph_stats(void) +{ + GC_printf2("Maximum backwards height of reachable objects at GC %lu is %ld\n", + (unsigned long) GC_gc_no, GC_max_height); + if (GC_max_height > GC_max_max_height) { + GC_max_max_height = GC_max_height; + GC_printf0("The following unreachable object is last in a longest chain " + "of unreachable objects:\n"); + GC_print_heap_obj(GC_deepest_obj); + } + if (GC_print_stats) { + GC_printf1("Needed max total of %ld back-edge structs\n", + GC_n_back_edge_structs); + } + GC_apply_to_each_object(reset_back_edge); + GC_deepest_obj = 0; +} + +#endif /* MAKE_BACK_GRAPH */ Added: llvm-gcc-4.2/trunk/boehm-gc/blacklst.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/blacklst.c?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/blacklst.c (added) +++ llvm-gcc-4.2/trunk/boehm-gc/blacklst.c Thu Nov 8 16:56:19 2007 @@ -0,0 +1,300 @@ +/* + * Copyright 1988, 1989 Hans-J. Boehm, Alan J. Demers + * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved. + * + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * + * Permission is hereby granted to use or copy this program + * for any purpose, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is granted, + * provided the above notices are retained, and a notice that the code was + * modified is included with the above copyright notice. + */ +/* Boehm, August 9, 1995 6:09 pm PDT */ +# include "private/gc_priv.h" + +/* + * We maintain several hash tables of hblks that have had false hits. + * Each contains one bit per hash bucket; If any page in the bucket + * has had a false hit, we assume that all of them have. + * See the definition of page_hash_table in gc_private.h. + * False hits from the stack(s) are much more dangerous than false hits + * from elsewhere, since the former can pin a large object that spans the + * block, eventhough it does not start on the dangerous block. + */ + +/* + * Externally callable routines are: + + * GC_add_to_black_list_normal + * GC_add_to_black_list_stack + * GC_promote_black_lists + * GC_is_black_listed + * + * All require that the allocator lock is held. + */ + +/* Pointers to individual tables. We replace one table by another by */ +/* switching these pointers. */ +word * GC_old_normal_bl; + /* Nonstack false references seen at last full */ + /* collection. */ +word * GC_incomplete_normal_bl; + /* Nonstack false references seen since last */ + /* full collection. */ +word * GC_old_stack_bl; +word * GC_incomplete_stack_bl; + +word GC_total_stack_black_listed; + +word GC_black_list_spacing = MINHINCR*HBLKSIZE; /* Initial rough guess */ + +void GC_clear_bl(); + +# if defined(__STDC__) || defined(__cplusplus) + void GC_default_print_heap_obj_proc(ptr_t p) +# else + void GC_default_print_heap_obj_proc(p) + ptr_t p; +# endif +{ + ptr_t base = GC_base(p); + + GC_err_printf2("start: 0x%lx, appr. length: %ld", base, GC_size(base)); +} + +void (*GC_print_heap_obj) GC_PROTO((ptr_t p)) = + GC_default_print_heap_obj_proc; + +void GC_print_source_ptr(p) +ptr_t p; +{ + ptr_t base = GC_base(p); + if (0 == base) { + if (0 == p) { + GC_err_printf0("in register"); + } else { + GC_err_printf0("in root set"); + } + } else { + GC_err_printf0("in object at "); + (*GC_print_heap_obj)(base); + } +} + +void GC_bl_init() +{ + if (!GC_all_interior_pointers) { + GC_old_normal_bl = (word *) + GC_scratch_alloc((word)(sizeof (page_hash_table))); + GC_incomplete_normal_bl = (word *)GC_scratch_alloc + ((word)(sizeof(page_hash_table))); + if (GC_old_normal_bl == 0 || GC_incomplete_normal_bl == 0) { + GC_err_printf0("Insufficient memory for black list\n"); + EXIT(); + } + GC_clear_bl(GC_old_normal_bl); + GC_clear_bl(GC_incomplete_normal_bl); + } + GC_old_stack_bl = (word *)GC_scratch_alloc((word)(sizeof(page_hash_table))); + GC_incomplete_stack_bl = (word *)GC_scratch_alloc + ((word)(sizeof(page_hash_table))); + if (GC_old_stack_bl == 0 || GC_incomplete_stack_bl == 0) { + GC_err_printf0("Insufficient memory for black list\n"); + EXIT(); + } + GC_clear_bl(GC_old_stack_bl); + GC_clear_bl(GC_incomplete_stack_bl); +} + +void GC_clear_bl(doomed) +word *doomed; +{ + BZERO(doomed, sizeof(page_hash_table)); +} + +void GC_copy_bl(old, new) +word *new, *old; +{ + BCOPY(old, new, sizeof(page_hash_table)); +} + +static word total_stack_black_listed(); + +/* Signal the completion of a collection. Turn the incomplete black */ +/* lists into new black lists, etc. */ +void GC_promote_black_lists() +{ + word * very_old_normal_bl = GC_old_normal_bl; + word * very_old_stack_bl = GC_old_stack_bl; + + GC_old_normal_bl = GC_incomplete_normal_bl; + GC_old_stack_bl = GC_incomplete_stack_bl; + if (!GC_all_interior_pointers) { + GC_clear_bl(very_old_normal_bl); + } + GC_clear_bl(very_old_stack_bl); + GC_incomplete_normal_bl = very_old_normal_bl; + GC_incomplete_stack_bl = very_old_stack_bl; + GC_total_stack_black_listed = total_stack_black_listed(); +# ifdef PRINTSTATS + GC_printf1("%ld bytes in heap blacklisted for interior pointers\n", + (unsigned long)GC_total_stack_black_listed); +# endif + if (GC_total_stack_black_listed != 0) { + GC_black_list_spacing = + HBLKSIZE*(GC_heapsize/GC_total_stack_black_listed); + } + if (GC_black_list_spacing < 3 * HBLKSIZE) { + GC_black_list_spacing = 3 * HBLKSIZE; + } + if (GC_black_list_spacing > MAXHINCR * HBLKSIZE) { + GC_black_list_spacing = MAXHINCR * HBLKSIZE; + /* Makes it easier to allocate really huge blocks, which otherwise */ + /* may have problems with nonuniform blacklist distributions. */ + /* This way we should always succeed immediately after growing the */ + /* heap. */ + } +} + +void GC_unpromote_black_lists() +{ + if (!GC_all_interior_pointers) { + GC_copy_bl(GC_old_normal_bl, GC_incomplete_normal_bl); + } + GC_copy_bl(GC_old_stack_bl, GC_incomplete_stack_bl); +} + +/* P is not a valid pointer reference, but it falls inside */ +/* the plausible heap bounds. */ +/* Add it to the normal incomplete black list if appropriate. */ +#ifdef PRINT_BLACK_LIST + void GC_add_to_black_list_normal(p, source) + ptr_t source; +#else + void GC_add_to_black_list_normal(p) +#endif +word p; +{ + if (!(GC_modws_valid_offsets[p & (sizeof(word)-1)])) return; + { + register int index = PHT_HASH(p); + + if (HDR(p) == 0 || get_pht_entry_from_index(GC_old_normal_bl, index)) { +# ifdef PRINT_BLACK_LIST + if (!get_pht_entry_from_index(GC_incomplete_normal_bl, index)) { + GC_err_printf2( + "Black listing (normal) 0x%lx referenced from 0x%lx ", + (unsigned long) p, (unsigned long) source); + GC_print_source_ptr(source); + GC_err_puts("\n"); + } +# endif + set_pht_entry_from_index(GC_incomplete_normal_bl, index); + } /* else this is probably just an interior pointer to an allocated */ + /* object, and isn't worth black listing. */ + } +} + +/* And the same for false pointers from the stack. */ +#ifdef PRINT_BLACK_LIST + void GC_add_to_black_list_stack(p, source) + ptr_t source; +#else + void GC_add_to_black_list_stack(p) +#endif +word p; +{ + register int index = PHT_HASH(p); + + if (HDR(p) == 0 || get_pht_entry_from_index(GC_old_stack_bl, index)) { +# ifdef PRINT_BLACK_LIST + if (!get_pht_entry_from_index(GC_incomplete_stack_bl, index)) { + GC_err_printf2( + "Black listing (stack) 0x%lx referenced from 0x%lx ", + (unsigned long)p, (unsigned long)source); + GC_print_source_ptr(source); + GC_err_puts("\n"); + } +# endif + set_pht_entry_from_index(GC_incomplete_stack_bl, index); + } +} + +/* + * Is the block starting at h of size len bytes black listed? If so, + * return the address of the next plausible r such that (r, len) might not + * be black listed. (R may not actually be in the heap. We guarantee only + * that every smaller value of r after h is also black listed.) + * If (h,len) is not black listed, return 0. + * Knows about the structure of the black list hash tables. + */ +struct hblk * GC_is_black_listed(h, len) +struct hblk * h; +word len; +{ + register int index = PHT_HASH((word)h); + register word i; + word nblocks = divHBLKSZ(len); + + if (!GC_all_interior_pointers) { + if (get_pht_entry_from_index(GC_old_normal_bl, index) + || get_pht_entry_from_index(GC_incomplete_normal_bl, index)) { + return(h+1); + } + } + + for (i = 0; ; ) { + if (GC_old_stack_bl[divWORDSZ(index)] == 0 + && GC_incomplete_stack_bl[divWORDSZ(index)] == 0) { + /* An easy case */ + i += WORDSZ - modWORDSZ(index); + } else { + if (get_pht_entry_from_index(GC_old_stack_bl, index) + || get_pht_entry_from_index(GC_incomplete_stack_bl, index)) { + return(h+i+1); + } + i++; + } + if (i >= nblocks) break; + index = PHT_HASH((word)(h+i)); + } + return(0); +} + + +/* Return the number of blacklisted blocks in a given range. */ +/* Used only for statistical purposes. */ +/* Looks only at the GC_incomplete_stack_bl. */ +word GC_number_stack_black_listed(start, endp1) +struct hblk *start, *endp1; +{ + register struct hblk * h; + word result = 0; + + for (h = start; h < endp1; h++) { + register int index = PHT_HASH((word)h); + + if (get_pht_entry_from_index(GC_old_stack_bl, index)) result++; + } + return(result); +} + + +/* Return the total number of (stack) black-listed bytes. */ +static word total_stack_black_listed() +{ + register unsigned i; + word total = 0; + + for (i = 0; i < GC_n_heap_sects; i++) { + struct hblk * start = (struct hblk *) GC_heap_sects[i].hs_start; + word len = (word) GC_heap_sects[i].hs_bytes; + struct hblk * endp1 = start + len/HBLKSIZE; + + total += GC_number_stack_black_listed(start, endp1); + } + return(total * HBLKSIZE); +} + Added: llvm-gcc-4.2/trunk/boehm-gc/callprocs URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/callprocs?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/callprocs (added) +++ llvm-gcc-4.2/trunk/boehm-gc/callprocs Thu Nov 8 16:56:19 2007 @@ -0,0 +1,4 @@ +#!/bin/sh +GC_DEBUG=1 +export GC_DEBUG +$* 2>&1 | awk '{print "0x3e=c\""$0"\""};/^\t##PC##=/ {if ($2 != 0) {print $2"?i"}}' | adb $1 | sed "s/^ >/>/" Propchange: llvm-gcc-4.2/trunk/boehm-gc/callprocs ------------------------------------------------------------------------------ svn:executable = * Added: llvm-gcc-4.2/trunk/boehm-gc/checksums.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/checksums.c?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/checksums.c (added) +++ llvm-gcc-4.2/trunk/boehm-gc/checksums.c Thu Nov 8 16:56:19 2007 @@ -0,0 +1,199 @@ +/* + * Copyright (c) 1992-1994 by Xerox Corporation. All rights reserved. + * + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * + * Permission is hereby granted to use or copy this program + * for any purpose, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is granted, + * provided the above notices are retained, and a notice that the code was + * modified is included with the above copyright notice. + */ +/* Boehm, March 29, 1995 12:51 pm PST */ +# ifdef CHECKSUMS + +# include "private/gc_priv.h" + +/* This is debugging code intended to verify the results of dirty bit */ +/* computations. Works only in a single threaded environment. */ +/* We assume that stubborn objects are changed only when they are */ +/* enabled for writing. (Certain kinds of writing are actually */ +/* safe under other conditions.) */ +# define NSUMS 10000 + +# define OFFSET 0x10000 + +typedef struct { + GC_bool new_valid; + word old_sum; + word new_sum; + struct hblk * block; /* Block to which this refers + OFFSET */ + /* to hide it from collector. */ +} page_entry; + +page_entry GC_sums [NSUMS]; + +word GC_checksum(h) +struct hblk *h; +{ + register word *p = (word *)h; + register word *lim = (word *)(h+1); + register word result = 0; + + while (p < lim) { + result += *p++; + } + return(result | 0x80000000 /* doesn't look like pointer */); +} + +# ifdef STUBBORN_ALLOC +/* Check whether a stubborn object from the given block appears on */ +/* the appropriate free list. */ +GC_bool GC_on_free_list(h) +struct hblk *h; +{ + register hdr * hhdr = HDR(h); + register int sz = hhdr -> hb_sz; + ptr_t p; + + if (sz > MAXOBJSZ) return(FALSE); + for (p = GC_sobjfreelist[sz]; p != 0; p = obj_link(p)) { + if (HBLKPTR(p) == h) return(TRUE); + } + return(FALSE); +} +# endif + +int GC_n_dirty_errors; +int GC_n_changed_errors; +int GC_n_clean; +int GC_n_dirty; + +void GC_update_check_page(h, index) +struct hblk *h; +int index; +{ + page_entry *pe = GC_sums + index; + register hdr * hhdr = HDR(h); + struct hblk *b; + + if (pe -> block != 0 && pe -> block != h + OFFSET) ABORT("goofed"); + pe -> old_sum = pe -> new_sum; + pe -> new_sum = GC_checksum(h); +# if !defined(MSWIN32) && !defined(MSWINCE) + if (pe -> new_sum != 0x80000000 && !GC_page_was_ever_dirty(h)) { + GC_printf1("GC_page_was_ever_dirty(0x%lx) is wrong\n", + (unsigned long)h); + } +# endif + if (GC_page_was_dirty(h)) { + GC_n_dirty++; + } else { + GC_n_clean++; + } + b = h; + while (IS_FORWARDING_ADDR_OR_NIL(hhdr) && hhdr != 0) { + b -= (word)hhdr; + hhdr = HDR(b); + } + if (pe -> new_valid + && hhdr != 0 && hhdr -> hb_descr != 0 /* may contain pointers */ + && pe -> old_sum != pe -> new_sum) { + if (!GC_page_was_dirty(h) || !GC_page_was_ever_dirty(h)) { + /* Set breakpoint here */GC_n_dirty_errors++; + } +# ifdef STUBBORN_ALLOC + if ( hhdr -> hb_map != GC_invalid_map + && hhdr -> hb_obj_kind == STUBBORN + && !GC_page_was_changed(h) + && !GC_on_free_list(h)) { + /* if GC_on_free_list(h) then reclaim may have touched it */ + /* without any allocations taking place. */ + /* Set breakpoint here */GC_n_changed_errors++; + } +# endif + } + pe -> new_valid = TRUE; + pe -> block = h + OFFSET; +} + +word GC_bytes_in_used_blocks; + +void GC_add_block(h, dummy) +struct hblk *h; +word dummy; +{ + register hdr * hhdr = HDR(h); + register bytes = WORDS_TO_BYTES(hhdr -> hb_sz); + + bytes += HBLKSIZE-1; + bytes &= ~(HBLKSIZE-1); + GC_bytes_in_used_blocks += bytes; +} + +void GC_check_blocks() +{ + word bytes_in_free_blocks = GC_large_free_bytes; + + GC_bytes_in_used_blocks = 0; + GC_apply_to_all_blocks(GC_add_block, (word)0); + GC_printf2("GC_bytes_in_used_blocks = %ld, bytes_in_free_blocks = %ld ", + GC_bytes_in_used_blocks, bytes_in_free_blocks); + GC_printf1("GC_heapsize = %ld\n", GC_heapsize); + if (GC_bytes_in_used_blocks + bytes_in_free_blocks != GC_heapsize) { + GC_printf0("LOST SOME BLOCKS!!\n"); + } +} + +/* Should be called immediately after GC_read_dirty and GC_read_changed. */ +void GC_check_dirty() +{ + register int index; + register unsigned i; + register struct hblk *h; + register ptr_t start; + + GC_check_blocks(); + + GC_n_dirty_errors = 0; + GC_n_changed_errors = 0; + GC_n_clean = 0; + GC_n_dirty = 0; + + index = 0; + for (i = 0; i < GC_n_heap_sects; i++) { + start = GC_heap_sects[i].hs_start; + for (h = (struct hblk *)start; + h < (struct hblk *)(start + GC_heap_sects[i].hs_bytes); + h++) { + GC_update_check_page(h, index); + index++; + if (index >= NSUMS) goto out; + } + } +out: + GC_printf2("Checked %lu clean and %lu dirty pages\n", + (unsigned long) GC_n_clean, (unsigned long) GC_n_dirty); + if (GC_n_dirty_errors > 0) { + GC_printf1("Found %lu dirty bit errors\n", + (unsigned long)GC_n_dirty_errors); + } + if (GC_n_changed_errors > 0) { + GC_printf1("Found %lu changed bit errors\n", + (unsigned long)GC_n_changed_errors); + GC_printf0("These may be benign (provoked by nonpointer changes)\n"); +# ifdef THREADS + GC_printf0( + "Also expect 1 per thread currently allocating a stubborn obj.\n"); +# endif + } +} + +# else + +extern int GC_quiet; + /* ANSI C doesn't allow translation units to be empty. */ + /* So we guarantee this one is nonempty. */ + +# endif /* CHECKSUMS */ Added: llvm-gcc-4.2/trunk/boehm-gc/configure URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/configure?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/configure (added) +++ llvm-gcc-4.2/trunk/boehm-gc/configure Thu Nov 8 16:56:19 2007 @@ -0,0 +1,9224 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59. +# +# Copyright (C) 2003 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="gcj_mlc.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS multi_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical mkinstalldirs INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CFLAGS CXXFLAGS CCAS CCASFLAGS AS ac_ct_AS AR ! ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT GC_CFLAGS LN_S LIBTOOL CXXCPP CPPFLAGS THREADLIBS POWERPC_DARWIN_TRUE POWERPC_DARWIN_FALSE extra_ldflags_libgc EXTRA_TEST_LIBS target_all CPLUSPLUS_TRUE CPLUSPLUS_FALSE AM_CPPFLAGS addobjs addincludes addlibs addtests CPP EGREP MY_CFLAGS toolexecdir toolexeclibdir LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -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 && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -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 && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -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 && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + 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 && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CXXCPP_set=${CXXCPP+set} +ac_env_CXXCPP_value=$CXXCPP +ac_cv_env_CXXCPP_set=${CXXCPP+set} +ac_cv_env_CXXCPP_value=$CXXCPP +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # 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 this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-multilib build many library versions (default) + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer + --enable-shared=PKGS build shared libraries default=yes + --enable-static=PKGS build static libraries default=yes + --enable-fast-install=PKGS optimize for fast installation default=yes + --disable-libtool-lock avoid locking (might break parallel builds) + --enable-parallel-mark parallelize marking and free list construction + --enable-gc-debug include full support for pointer backtracing etc. + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld default=no + --with-pic try to use only PIC/non-PIC objects default=use both + --with-target-subdir=SUBDIR + configuring with a cross compiler + --with-cross-host=HOST configuring with a cross compiler + --with-ecos enable runtime eCos target support + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright (C) 2003 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + +# This works around the fact that libtool configuration may change LD +# for this particular configuration, but some shells, instead of +# keeping the changes in LD private, export them just because LD is +# exported. +ORIGINAL_LD_FOR_MULTILIBS=$LD + +# Default to --enable-multilib +# Check whether --enable-multilib or --disable-multilib was given. +if test "${enable_multilib+set}" = set; then + enableval="$enable_multilib" + case "$enableval" in + yes) multilib=yes ;; + no) multilib=no ;; + *) { { echo "$as_me:$LINENO: error: bad value $enableval for multilib option" >&5 +echo "$as_me: error: bad value $enableval for multilib option" >&2;} + { (exit 1); exit 1; }; } ;; + esac +else + multilib=yes +fi; + +# We may get other options which we leave undocumented: +# --with-target-subdir, --with-multisrctop, --with-multisubdir +# See config-ml.in if you want the gory details. + +if test "$srcdir" = "."; then + if test "$with_target_subdir" != "."; then + multi_basedir="$srcdir/$with_multisrctop../.." + else + multi_basedir="$srcdir/$with_multisrctop.." + fi +else + multi_basedir="$srcdir/.." +fi + + +# Even if the default multilib is not a cross compilation, +# it may be that some of the other multilibs are. +if test $cross_compiling = no && test $multilib = yes \ + && test "x${with_multisubdir}" != x ; then + cross_compiling=maybe +fi + + ac_config_commands="$ac_config_commands default-1" + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking target system type" >&5 +echo $ECHO_N "checking target system type... $ECHO_C" >&6 +if test "${ac_cv_target+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_target_alias=$target_alias +test "x$ac_cv_target_alias" = "x" && + ac_cv_target_alias=$ac_cv_host_alias +ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +echo "${ECHO_T}$ac_cv_target" >&6 +target=$ac_cv_target +target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + +# Get the 'noncanonical' system names. + case ${build_alias} in + "") build_noncanonical=${build} ;; + *) build_noncanonical=${build_alias} ;; +esac + + case ${host_alias} in + "") host_noncanonical=${build_noncanonical} ;; + *) host_noncanonical=${host_alias} ;; +esac + + case ${target_alias} in + "") target_noncanonical=${host_noncanonical} ;; + *) target_noncanonical=${target_alias} ;; +esac + + + + +# This works around an automake problem. +mkinstalldirs="`cd $ac_aux_dir && ${PWDCMD-pwd}`/mkinstalldirs" + + +am__api_version="1.9" +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $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. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=gc + VERSION=6.6 + + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + +# The autoconf 2.5x version of the no-executables hack. + + +# Yak. We must force CC and CXX to /not/ be precious variables; otherwise +# the wrong, non-multilib-adjusted value will be used in multilibs. +# As a side effect, we have to subst CFLAGS and CXXFLAGS ourselves. + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +# FIXME: Cleanup? +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + gcc_no_link=no +else + gcc_no_link=yes +fi + +if test x$gcc_no_link = xyes; then + # Setting cross_compile will disable run tests; it will + # also disable AC_CHECK_FILE but that's generally + # correct if we can't link. + cross_compiling=yes + EXEEXT= +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +fi +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CXX" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + +if test "x$CC" != xcc; then + echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5 +echo $ECHO_N "checking whether $CC and cc understand -c and -o together... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5 +echo $ECHO_N "checking whether cc understands -c and -o together... $ECHO_C" >&6 +fi +set dummy $CC; ac_cc=`echo $2 | + sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` +if eval "test \"\${ac_cv_prog_cc_${ac_cc}_c_o+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +# Make sure it works both with $CC and with simple cc. +# We do the test twice because some compilers refuse to overwrite an +# existing .o file with -o, though they will create one. +ac_try='$CC -c conftest.$ac_ext -o conftest.$ac_objext >&5' +if { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + test -f conftest.$ac_objext && { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; +then + eval ac_cv_prog_cc_${ac_cc}_c_o=yes + if test "x$CC" != xcc; then + # Test first that cc exists at all. + if { ac_try='cc -c conftest.$ac_ext >&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_try='cc -c conftest.$ac_ext -o conftest.$ac_objext >&5' + if { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + test -f conftest.$ac_objext && { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; + then + # cc works too. + : + else + # cc exists but doesn't like -o. + eval ac_cv_prog_cc_${ac_cc}_c_o=no + fi + fi + fi +else + eval ac_cv_prog_cc_${ac_cc}_c_o=no +fi +rm -f conftest* + +fi +if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + +cat >>confdefs.h <<\_ACEOF +#define NO_MINUS_C_MINUS_O 1 +_ACEOF + +fi + +# FIXME: we rely on the cache variable name because +# there is no other way. +set dummy $CC +ac_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` +if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi + + + + + +# Newer automakes demand CCAS and CCASFLAGS. +: ${CCAS='$(CC)'} +: ${CCASFLAGS='$(CFLAGS)'} + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +set dummy ${ac_tool_prefix}as; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AS="${ac_tool_prefix}as" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + echo "$as_me:$LINENO: result: $AS" >&5 +echo "${ECHO_T}$AS" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_AS"; then + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. +set dummy as; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_AS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AS"; then + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AS="as" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_AS=$ac_cv_prog_ac_ct_AS +if test -n "$ac_ct_AS"; then + echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 +echo "${ECHO_T}$ac_ct_AS" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + AS=$ac_ct_AS +else + AS="$ac_cv_prog_AS" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + AR=$ac_ct_AR +else + AR="$ac_cv_prog_AR" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $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. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + +echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then + enableval="$enable_maintainer_mode" + USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi; + echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 + + +if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + + +. ${srcdir}/configure.host + +case ${gc_basedir} in +/* | A-Za-z:/\\*) gc_flagbasedir=${gc_basedir} ;; +*) gc_flagbasedir='$(top_builddir)/'${gc_basedir} ;; +esac + +gc_cflags="${gc_cflags} -Iinclude -I"'$(top_builddir)'"/./targ-include -I${gc_flagbasedir}/libc/include" +case "${host}" in + *-*-cygwin32*) + gc_cflags="${gc_cflags} -I${gc_flagbasedir}/../winsup/include" + ;; +esac + + +GC_CFLAGS=${gc_cflags} + + +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} +case $enableval in +yes) enable_shared=yes ;; +no) enable_shared=no ;; +*) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_shared=yes +fi; +# Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + p=${PACKAGE-default} +case $enableval in +yes) enable_static=yes ;; +no) enable_static=no ;; +*) + enable_static=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_static=yes +fi; +# Check whether --enable-fast-install or --disable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval="$enable_fast_install" + p=${PACKAGE-default} +case $enableval in +yes) enable_fast_install=yes ;; +no) enable_fast_install=no ;; +*) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_fast_install=yes +fi; + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$lt_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + lt_cv_prog_gnu_ld=yes +else + lt_cv_prog_gnu_ld=no +fi +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +reload_flag=$lt_cv_ld_reload_flag +test -n "$reload_flag" && reload_flag=" $reload_flag" + +echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/${ac_tool_prefix}nm + if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then + lt_cv_path_NM="$tmp_nm -B" + break + elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + lt_cv_path_NM="$tmp_nm -p" + break + else + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi + +NM="$lt_cv_path_NM" +echo "$as_me:$LINENO: result: $NM" >&5 +echo "${ECHO_T}$NM" >&6 + +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 +echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [regex]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given egrep regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi4*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin* | mingw* |pw32*) + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + # this will be overwritten by pass_all, but leave it in just in case + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' + lt_cv_file_magic_cmd='/usr/bin/file -L' + case "$host_os" in + rhapsody* | darwin1.012) + lt_cv_file_magic_test_file='/System/Library/Frameworks/System.framework/System' + ;; + *) # Darwin 1.3 on + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' + ;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | kfreebsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20*|hpux11*) + case $host_cpu in + hppa*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + esac + ;; + +irix5* | irix6*) + case $host_os in + irix5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux-gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' + fi + ;; + +newsos6) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +sysv5uw[78]* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + esac + ;; +esac + +fi +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method + + + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +# find the maximum length of command line arguments +echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 +if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for *BSD + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + esac + +fi + +if test -n "$lt_cv_sys_max_cmd_len" ; then + echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 +else + echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6 +fi + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="/usr/bin:$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool at gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="/usr/bin:$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool at gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $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 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + + +# Check for any special flags to pass to ltconfig. +libtool_flags="--cache-file=$cache_file" +test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" +test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" +test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" +test "$GCC" = yes && libtool_flags="$libtool_flags --with-gcc" +test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" + + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" +test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" + + +# Check whether --with-pic or --without-pic was given. +if test "${with_pic+set}" = set; then + withval="$with_pic" + pic_mode="$withval" +else + pic_mode=default +fi; +test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic" +test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic" + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 4783 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case "`/usr/bin/file conftest.o`" in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + if test x$gcc_no_link = xyes; then + { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5 +echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;} + { (exit 1); exit 1; }; } +fi +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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 +sed 's/^/| /' conftest.$ac_ext >&5 + +lt_cv_cc_needs_belf=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + + +esac + + +# Save cache, so that ltconfig can load it +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +# Actually configure libtool. ac_aux_dir is where install-sh is found. +AR="$AR" LTCC="$CC" CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ +MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ +LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \ +AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \ +objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \ +deplibs_check_method="$deplibs_check_method" file_magic_cmd="$file_magic_cmd" \ +${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ +$libtool_flags --no-verify --build="$build" $ac_aux_dir/ltmain.sh $host \ +|| { { echo "$as_me:$LINENO: error: libtool configure failed" >&5 +echo "$as_me: error: libtool configure failed" >&2;} + { (exit 1); exit 1; }; } + +# Reload cache, that may have been modified by ltconfig +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh $ac_aux_dir/ltcf-c.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Redirect the config.log output again, so that the ltconfig log is not +# clobbered by the next message. +exec 5>>./config.log + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 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); } >/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 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 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); } >/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 + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6 +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 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); } >/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 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 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); } >/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 + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +LIBTOOL_DEPS=$LIBTOOL_DEPS" $ac_aux_dir/ltcf-cxx.sh" +lt_save_CC="$CC" +lt_save_CFLAGS="$CFLAGS" +AR="$AR" LTCC="$CC" CC="$CXX" CXX="$CXX" CFLAGS="$CXXFLAGS" CPPFLAGS="$CPPFLAGS" \ +MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ +LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \ +AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \ +objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \ +deplibs_check_method="$deplibs_check_method" \ +file_magic_cmd="$file_magic_cmd" \ +${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig -o libtool $libtool_flags \ +--build="$build" --add-tag=CXX $ac_aux_dir/ltcf-cxx.sh $host \ +|| { { echo "$as_me:$LINENO: error: libtool tag configuration failed" >&5 +echo "$as_me: error: libtool tag configuration failed" >&2;} + { (exit 1); exit 1; }; } +CC="$lt_save_CC" +CFLAGS="$lt_save_CFLAGS" + +# Redirect the config.log output again, so that the ltconfig log is not +# clobbered by the next message. +exec 5>>./config.log + + + + + + + + +# Check whether --with-target-subdir or --without-target-subdir was given. +if test "${with_target_subdir+set}" = set; then + withval="$with_target_subdir" + +fi; + +# Check whether --with-cross-host or --without-cross-host was given. +if test "${with_cross_host+set}" = set; then + withval="$with_cross_host" + +fi; + +echo "$as_me:$LINENO: checking for thread model used by GCC" >&5 +echo $ECHO_N "checking for thread model used by GCC... $ECHO_C" >&6 +THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` +if test -z "$THREADS"; then + THREADS=no +fi +echo "$as_me:$LINENO: result: $THREADS" >&5 +echo "${ECHO_T}$THREADS" >&6 + +# Check whether --enable-parallel-mark or --disable-parallel-mark was given. +if test "${enable_parallel_mark+set}" = set; then + enableval="$enable_parallel_mark" + case "$THREADS" in + no | none | single) + { { echo "$as_me:$LINENO: error: Parallel mark requires --enable-threads=x spec" >&5 +echo "$as_me: error: Parallel mark requires --enable-threads=x spec" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + +fi; + +AM_CPPFLAGS="-I`cd $srcdir && ${PWDCMD-pwd}`/include" +THREADLIBS= +case "$THREADS" in + no | none | single) + THREADS=none + ;; + posix | posix95 | pthreads) + THREADS=posix + THREADLIBS=-lpthread + case "$host" in + x86-*-linux* | ia64-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* | alpha-*-linux*) + +cat >>confdefs.h <<\_ACEOF +#define GC_LINUX_THREADS 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define _REENTRANT 1 +_ACEOF + + if test "${enable_parallel_mark}" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define PARALLEL_MARK 1 +_ACEOF + + fi + +cat >>confdefs.h <<\_ACEOF +#define THREAD_LOCAL_ALLOC 1 +_ACEOF + + ;; + *-*-linux*) + cat >>confdefs.h <<\_ACEOF +#define GC_LINUX_THREADS 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define _REENTRANT 1 +_ACEOF + + ;; + *-*-aix*) + +cat >>confdefs.h <<\_ACEOF +#define GC_AIX_THREADS 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define _REENTRANT 1 +_ACEOF + + ;; + *-*-hpux11*) + { echo "$as_me:$LINENO: WARNING: \"Only HP-UX 11 POSIX threads are supported.\"" >&5 +echo "$as_me: WARNING: \"Only HP-UX 11 POSIX threads are supported.\"" >&2;} + +cat >>confdefs.h <<\_ACEOF +#define GC_HPUX_THREADS 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define _POSIX_C_SOURCE 199506L +_ACEOF + + if test "${enable_parallel_mark}" = yes; then + cat >>confdefs.h <<\_ACEOF +#define PARALLEL_MARK 1 +_ACEOF + + fi + cat >>confdefs.h <<\_ACEOF +#define THREAD_LOCAL_ALLOC 1 +_ACEOF + + THREADLIBS="-lpthread -lrt" + # HPUX needs REENTRANT for the _r calls. + +cat >>confdefs.h <<\_ACEOF +#define _REENTRANT 1 +_ACEOF + + ;; + *-*-hpux10*) + { echo "$as_me:$LINENO: WARNING: \"Only HP-UX 11 POSIX threads are supported.\"" >&5 +echo "$as_me: WARNING: \"Only HP-UX 11 POSIX threads are supported.\"" >&2;} + ;; + *-*-kfreebsd*-gnu) + cat >>confdefs.h <<\_ACEOF +#define GC_FREEBSD_THREADS 1 +_ACEOF + + INCLUDES="$INCLUDES -pthread" + THREADDLLIBS=-pthread + cat >>confdefs.h <<\_ACEOF +#define _REENTRANT 1 +_ACEOF + + if test "${enable_parallel_mark}" = yes; then + cat >>confdefs.h <<\_ACEOF +#define PARALLEL_MARK 1 +_ACEOF + + fi + cat >>confdefs.h <<\_ACEOF +#define THREAD_LOCAL_ALLOC 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define USE_COMPILER_TLS 1 +_ACEOF + + ;; + *-*-freebsd*) + { echo "$as_me:$LINENO: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&5 +echo "$as_me: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&2;} + +cat >>confdefs.h <<\_ACEOF +#define GC_FREEBSD_THREADS 1 +_ACEOF + + AM_CPPFLAGS="$AM_CPPFLAGS -pthread" + THREADLIBS=-pthread + ;; + *-*-solaris*) + +cat >>confdefs.h <<\_ACEOF +#define GC_SOLARIS_THREADS 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define GC_SOLARIS_PTHREADS 1 +_ACEOF + + ;; + *-*-irix*) + +cat >>confdefs.h <<\_ACEOF +#define GC_IRIX_THREADS 1 +_ACEOF + + ;; + *-*-cygwin*) + +cat >>confdefs.h <<\_ACEOF +#define GC_WIN32_THREADS 1 +_ACEOF + + ;; + *-*-darwin*) + +cat >>confdefs.h <<\_ACEOF +#define GC_DARWIN_THREADS 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define THREAD_LOCAL_ALLOC 1 +_ACEOF + + if test "${enable_parallel_mark}" = yes; then + cat >>confdefs.h <<\_ACEOF +#define PARALLEL_MARK 1 +_ACEOF + + fi + ;; + *-*-osf*) + +cat >>confdefs.h <<\_ACEOF +#define GC_OSF1_THREADS 1 +_ACEOF + + if test "${enable_parallel_mark}" = yes; then + cat >>confdefs.h <<\_ACEOF +#define PARALLEL_MARK 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define THREAD_LOCAL_ALLOC 1 +_ACEOF + + # May want to enable it in other cases, too. + # Measurements havent yet been done. + fi + AM_CPPFLAGS="$AM_CPPFLAGS -pthread" + THREADLIBS="-lpthread -lrt" + ;; + esac + ;; + win32) + cat >>confdefs.h <<\_ACEOF +#define GC_WIN32_THREADS 1 +_ACEOF + + ;; + dgux386) + THREADS=dgux386 +echo "$as_me:$LINENO: result: $THREADLIBS" >&5 +echo "${ECHO_T}$THREADLIBS" >&6 + # Use pthread GCC switch + THREADLIBS=-pthread + if test "${enable_parallel_mark}" = yes; then + cat >>confdefs.h <<\_ACEOF +#define PARALLEL_MARK 1 +_ACEOF + + fi + cat >>confdefs.h <<\_ACEOF +#define THREAD_LOCAL_ALLOC 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define GC_DGUX386_THREADS 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define DGUX_THREADS 1 +_ACEOF + + # Enable _POSIX4A_DRAFT10_SOURCE with flag -pthread + AM_CPPFLAGS="-pthread $AM_CPPFLAGS" + ;; + aix) + THREADS=posix + THREADLIBS=-lpthread + cat >>confdefs.h <<\_ACEOF +#define GC_AIX_THREADS 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define _REENTRANT 1 +_ACEOF + + ;; + decosf1 | irix | mach | os2 | solaris | dce | vxworks) + { { echo "$as_me:$LINENO: error: thread package $THREADS not yet supported" >&5 +echo "$as_me: error: thread package $THREADS not yet supported" >&2;} + { (exit 1); exit 1; }; } + ;; + *) + { { echo "$as_me:$LINENO: error: $THREADS is an unknown thread package" >&5 +echo "$as_me: error: $THREADS is an unknown thread package" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + + +case "$host" in + powerpc-*-darwin*) + powerpc_darwin=true + ;; +esac + + +if test x$powerpc_darwin = xtrue; then + POWERPC_DARWIN_TRUE= + POWERPC_DARWIN_FALSE='#' +else + POWERPC_DARWIN_TRUE='#' + POWERPC_DARWIN_FALSE= +fi + + +# Darwin needs a few extra special tests to deal with variation in the +# system headers. +case "$host" in + powerpc*-*-darwin*) + echo "$as_me:$LINENO: checking for ppc_thread_state_t.r0" >&5 +echo $ECHO_N "checking for ppc_thread_state_t.r0... $ECHO_C" >&6 +if test "${ac_cv_member_ppc_thread_state_t_r0+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +static ppc_thread_state_t ac_aggr; +if (ac_aggr.r0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_ppc_thread_state_t_r0=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +static ppc_thread_state_t ac_aggr; +if (sizeof ac_aggr.r0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_ppc_thread_state_t_r0=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_ppc_thread_state_t_r0=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_ppc_thread_state_t_r0" >&5 +echo "${ECHO_T}$ac_cv_member_ppc_thread_state_t_r0" >&6 +if test $ac_cv_member_ppc_thread_state_t_r0 = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAS_PPC_THREAD_STATE_R0 1 +_ACEOF + +fi + + echo "$as_me:$LINENO: checking for ppc_thread_state_t.__r0" >&5 +echo $ECHO_N "checking for ppc_thread_state_t.__r0... $ECHO_C" >&6 +if test "${ac_cv_member_ppc_thread_state_t___r0+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +static ppc_thread_state_t ac_aggr; +if (ac_aggr.__r0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_ppc_thread_state_t___r0=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +static ppc_thread_state_t ac_aggr; +if (sizeof ac_aggr.__r0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_ppc_thread_state_t___r0=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_ppc_thread_state_t___r0=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_ppc_thread_state_t___r0" >&5 +echo "${ECHO_T}$ac_cv_member_ppc_thread_state_t___r0" >&6 +if test $ac_cv_member_ppc_thread_state_t___r0 = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAS_PPC_THREAD_STATE___R0 1 +_ACEOF + +fi + + echo "$as_me:$LINENO: checking for ppc_thread_state64_t.r0" >&5 +echo $ECHO_N "checking for ppc_thread_state64_t.r0... $ECHO_C" >&6 +if test "${ac_cv_member_ppc_thread_state64_t_r0+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +static ppc_thread_state64_t ac_aggr; +if (ac_aggr.r0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_ppc_thread_state64_t_r0=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +static ppc_thread_state64_t ac_aggr; +if (sizeof ac_aggr.r0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_ppc_thread_state64_t_r0=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_ppc_thread_state64_t_r0=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_ppc_thread_state64_t_r0" >&5 +echo "${ECHO_T}$ac_cv_member_ppc_thread_state64_t_r0" >&6 +if test $ac_cv_member_ppc_thread_state64_t_r0 = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAS_PPC_THREAD_STATE64_R0 1 +_ACEOF + +fi + + echo "$as_me:$LINENO: checking for ppc_thread_state64_t.__r0" >&5 +echo $ECHO_N "checking for ppc_thread_state64_t.__r0... $ECHO_C" >&6 +if test "${ac_cv_member_ppc_thread_state64_t___r0+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +static ppc_thread_state64_t ac_aggr; +if (ac_aggr.__r0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_ppc_thread_state64_t___r0=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +static ppc_thread_state64_t ac_aggr; +if (sizeof ac_aggr.__r0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_ppc_thread_state64_t___r0=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_ppc_thread_state64_t___r0=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_ppc_thread_state64_t___r0" >&5 +echo "${ECHO_T}$ac_cv_member_ppc_thread_state64_t___r0" >&6 +if test $ac_cv_member_ppc_thread_state64_t___r0 = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAS_PPC_THREAD_STATE64___R0 1 +_ACEOF + +fi + + ;; + i?86*-*-darwin*) + echo "$as_me:$LINENO: checking for x86_thread_state32_t.eax" >&5 +echo $ECHO_N "checking for x86_thread_state32_t.eax... $ECHO_C" >&6 +if test "${ac_cv_member_x86_thread_state32_t_eax+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + #include + +int +main () +{ +static x86_thread_state32_t ac_aggr; +if (ac_aggr.eax) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_x86_thread_state32_t_eax=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + #include + +int +main () +{ +static x86_thread_state32_t ac_aggr; +if (sizeof ac_aggr.eax) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_x86_thread_state32_t_eax=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_x86_thread_state32_t_eax=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_x86_thread_state32_t_eax" >&5 +echo "${ECHO_T}$ac_cv_member_x86_thread_state32_t_eax" >&6 +if test $ac_cv_member_x86_thread_state32_t_eax = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAS_X86_THREAD_STATE32_EAX 1 +_ACEOF + +fi + + echo "$as_me:$LINENO: checking for x86_thread_state32_t.__eax" >&5 +echo $ECHO_N "checking for x86_thread_state32_t.__eax... $ECHO_C" >&6 +if test "${ac_cv_member_x86_thread_state32_t___eax+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + #include + +int +main () +{ +static x86_thread_state32_t ac_aggr; +if (ac_aggr.__eax) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_x86_thread_state32_t___eax=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + #include + +int +main () +{ +static x86_thread_state32_t ac_aggr; +if (sizeof ac_aggr.__eax) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_x86_thread_state32_t___eax=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_x86_thread_state32_t___eax=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_x86_thread_state32_t___eax" >&5 +echo "${ECHO_T}$ac_cv_member_x86_thread_state32_t___eax" >&6 +if test $ac_cv_member_x86_thread_state32_t___eax = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAS_X86_THREAD_STATE32___EAX 1 +_ACEOF + +fi + + ;; + x86_64-*-darwin*) + echo "$as_me:$LINENO: checking for x86_thread_state64_t.rax" >&5 +echo $ECHO_N "checking for x86_thread_state64_t.rax... $ECHO_C" >&6 +if test "${ac_cv_member_x86_thread_state64_t_rax+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + #include + +int +main () +{ +static x86_thread_state64_t ac_aggr; +if (ac_aggr.rax) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_x86_thread_state64_t_rax=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + #include + +int +main () +{ +static x86_thread_state64_t ac_aggr; +if (sizeof ac_aggr.rax) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_x86_thread_state64_t_rax=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_x86_thread_state64_t_rax=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_x86_thread_state64_t_rax" >&5 +echo "${ECHO_T}$ac_cv_member_x86_thread_state64_t_rax" >&6 +if test $ac_cv_member_x86_thread_state64_t_rax = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAS_X86_THREAD_STATE64_RAX 1 +_ACEOF + +fi + + echo "$as_me:$LINENO: checking for x86_thread_state64_t.__rax" >&5 +echo $ECHO_N "checking for x86_thread_state64_t.__rax... $ECHO_C" >&6 +if test "${ac_cv_member_x86_thread_state64_t___rax+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + #include + +int +main () +{ +static x86_thread_state64_t ac_aggr; +if (ac_aggr.__rax) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_x86_thread_state64_t___rax=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + #include + +int +main () +{ +static x86_thread_state64_t ac_aggr; +if (sizeof ac_aggr.__rax) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_x86_thread_state64_t___rax=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_x86_thread_state64_t___rax=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_x86_thread_state64_t___rax" >&5 +echo "${ECHO_T}$ac_cv_member_x86_thread_state64_t___rax" >&6 +if test $ac_cv_member_x86_thread_state64_t___rax = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAS_X86_THREAD_STATE64___RAX 1 +_ACEOF + +fi + + ;; + *) ;; +esac + +# We never want libdl on darwin. It is a fake libdl that just ends up making +# dyld calls anyway +case "$host" in + *-*-darwin*) ;; + *) + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +if test x$gcc_no_link = xyes; then + { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5 +echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;} + { (exit 1); exit 1; }; } +fi +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl" +fi + + ;; +esac + +# extra LD Flags which are required for targets +case "${host}" in + *-*-darwin*) + extra_ldflags_libgc=-Wl,-single_module + ;; +esac + + + + +target_all=libgcjgc.la + + +TARGET_ECOS="no" + +# Check whether --with-ecos or --without-ecos was given. +if test "${with_ecos+set}" = set; then + withval="$with_ecos" + TARGET_ECOS="$with_ecos" + +fi; + +addobjs= +addlibs= +addincludes= +addtests= +case "$TARGET_ECOS" in + no) + ;; + *) + +cat >>confdefs.h <<\_ACEOF +#define ECOS 1 +_ACEOF + + AM_CPPFLAGS="${AM_CPPFLAGS} -I${TARGET_ECOS}/include" + addobjs="$addobjs ecos.lo" + ;; +esac + +if test "${enable_cplusplus}" = yes; then + addincludes="$addincludes include/gc_cpp.h include/gc_allocator.h" + addtests="$addtests test_cpp" +fi + + + +if test "${enable_cplusplus}" = yes; then + CPLUSPLUS_TRUE= + CPLUSPLUS_FALSE='#' +else + CPLUSPLUS_TRUE='#' + CPLUSPLUS_FALSE= +fi + + + + + + +# Configuration of shared libraries +# +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} +case $enableval in +yes) enable_shared=yes ;; +no) enable_shared=no ;; +*) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_shared=yes +fi; + +case "$host" in + alpha-*-openbsd*) + enable_shared=no + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + *) + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + ;; +esac + +# Checks for pthreads functions +# +oldLIBS="$LIBS" +LIBS="$LIBS $THREADLIBS" + +for ac_func in pthread_getattr_np +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test x$gcc_no_link = xyes; then + { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5 +echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;} + { (exit 1); exit 1; }; } +fi +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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 conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +LIBS="$oldLIBS" + +# Configuration of machine-dependent code +# +# We don't set NO_EXECUTE_PERMISSION by default because gcj (and +# anything else that creates trampolines in gc-allocated memory) +# always needs exec permission. The exceptions to this are IA-64 and +# some variations of Power PC, where trampolines don't contain +# executable code. +# +echo "$as_me:$LINENO: checking which machine-dependent code should be used" >&5 +echo $ECHO_N "checking which machine-dependent code should be used... $ECHO_C" >&6 +machdep= +case "$host" in + alpha*-*-openbsd*) + machdep="alpha_mach_dep.lo" + if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then + { echo "$as_me:$LINENO: WARNING: OpenBSD/Alpha without dlopen(). Shared library support is disabled" >&5 +echo "$as_me: WARNING: OpenBSD/Alpha without dlopen(). Shared library support is disabled" >&2;} + fi + ;; + alpha*-*-linux*) + machdep="alpha_mach_dep.lo" + ;; + i?86-*-solaris2.[89] | i?86-*-solaris2.1?) + +cat >>confdefs.h <<\_ACEOF +#define SOLARIS25_PROC_VDB_BUG_FIXED 1 +_ACEOF + + ;; + mipstx39-*-elf*) + machdep="mips_ultrix_mach_dep.lo" + +cat >>confdefs.h <<\_ACEOF +#define STACKBASE __stackbase +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define DATASTART_IS_ETEXT 1 +_ACEOF + + ;; + mips-dec-ultrix*) + machdep="mips_ultrix_mach-dep.lo" + ;; + mips-nec-sysv*|mips-unknown-sysv*) + ;; + mips*-*-linux*) + ;; + mips-*-*) + machdep="mips_sgi_mach_dep.lo" + ;; + sparc-*-netbsd*) + machdep="sparc_netbsd_mach_dep.lo" + ;; + sparc-sun-solaris2.3) + machdep="sparc_mach_dep.lo" + +cat >>confdefs.h <<\_ACEOF +#define SUNOS53_SHARED_LIB 1 +_ACEOF + + ;; + sparc*-sun-solaris2.*) + machdep="sparc_mach_dep.lo" + ;; + ia64-*-*) + +cat >>confdefs.h <<\_ACEOF +#define NO_EXECUTE_PERMISSION 1 +_ACEOF + + machdep="mach_dep.lo ia64_save_regs_in_stack.lo" + ;; +esac +if test x"$machdep" = x; then +echo "$as_me:$LINENO: result: $machdep" >&5 +echo "${ECHO_T}$machdep" >&6 + machdep="mach_dep.lo" +fi +addobjs="$addobjs $machdep" + + + + + +# +# Check for AViiON Machines running DGUX +# +echo "$as_me:$LINENO: checking if host is AViiON running DGUX" >&5 +echo $ECHO_N "checking if host is AViiON running DGUX... $ECHO_C" >&6 +ac_is_dgux=no +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 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); } >/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 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 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); } >/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 + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 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); } >/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 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 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); } >/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 + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +if test "${ac_cv_header_sys_dg_sys_info_h+set}" = set; then + echo "$as_me:$LINENO: checking for sys/dg_sys_info.h" >&5 +echo $ECHO_N "checking for sys/dg_sys_info.h... $ECHO_C" >&6 +if test "${ac_cv_header_sys_dg_sys_info_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sys_dg_sys_info_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_dg_sys_info_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking sys/dg_sys_info.h usability" >&5 +echo $ECHO_N "checking sys/dg_sys_info.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&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); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking sys/dg_sys_info.h presence" >&5 +echo $ECHO_N "checking sys/dg_sys_info.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 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); } >/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 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: sys/dg_sys_info.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: sys/dg_sys_info.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: sys/dg_sys_info.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: sys/dg_sys_info.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: sys/dg_sys_info.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: sys/dg_sys_info.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: sys/dg_sys_info.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: sys/dg_sys_info.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for sys/dg_sys_info.h" >&5 +echo $ECHO_N "checking for sys/dg_sys_info.h... $ECHO_C" >&6 +if test "${ac_cv_header_sys_dg_sys_info_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_sys_dg_sys_info_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sys_dg_sys_info_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_dg_sys_info_h" >&6 + +fi +if test $ac_cv_header_sys_dg_sys_info_h = yes; then + ac_is_dgux=yes; +fi + + + +echo "$as_me:$LINENO: result: $ac_is_dgux" >&5 +echo "${ECHO_T}$ac_is_dgux" >&6 + ## :GOTCHA: we do not check anything but sys/dg_sys_info.h +if test $ac_is_dgux = yes; then + if test "$enable_full_debug" = "yes"; then + CFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" + CXXFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" + else + CFLAGS="-DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" + CXXFLAGS="-DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" + fi + + +fi + +echo "$as_me:$LINENO: checking whether Solaris gcc optimization fix is necessary" >&5 +echo $ECHO_N "checking whether Solaris gcc optimization fix is necessary... $ECHO_C" >&6 +case "$host" in + *aix*) + if test "$GCC" = yes; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + new_CFLAGS= + for i in $CFLAGS; do + case "$i" in + -O*) + ;; + *) + new_CFLAGS="$new_CFLAGS $i" + ;; + esac + done + CFLAGS="$new_CFLAGS" + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + fi + ;; + *) echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 ;; +esac + +MY_CFLAGS="$CFLAGS" + + + +cat >>confdefs.h <<\_ACEOF +#define SILENT 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define NO_SIGNALS 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define ALL_INTERIOR_POINTERS 1 +_ACEOF + + + +cat >>confdefs.h <<\_ACEOF +#define JAVA_FINALIZATION 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define GC_GCJ_SUPPORT 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define ATOMIC_UNCOLLECTABLE 1 +_ACEOF + + +if test -n "${with_cross_host}"; then + +cat >>confdefs.h <<\_ACEOF +#define NO_SIGSET 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define NO_DEBUGGING 1 +_ACEOF + +fi + +# Check whether --enable-gc-debug or --disable-gc-debug was given. +if test "${enable_gc_debug+set}" = set; then + enableval="$enable_gc_debug" + if test "$enable_gc_debug" = "yes"; then + { echo "$as_me:$LINENO: WARNING: \"Must define GC_DEBUG and use debug alloc. in clients.\"" >&5 +echo "$as_me: WARNING: \"Must define GC_DEBUG and use debug alloc. in clients.\"" >&2;} + +cat >>confdefs.h <<\_ACEOF +#define KEEP_BACK_PTRS 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define DBG_HDRS_ALL 1 +_ACEOF + + case $host in + ia64-*-linux* ) + +cat >>confdefs.h <<\_ACEOF +#define MAKE_BACK_GRAPH 1 +_ACEOF + + ;; + x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* ) + cat >>confdefs.h <<\_ACEOF +#define MAKE_BACK_GRAPH 1 +_ACEOF + + { echo "$as_me:$LINENO: WARNING: \"Client must not use -fomit-frame-pointer.\"" >&5 +echo "$as_me: WARNING: \"Client must not use -fomit-frame-pointer.\"" >&2;} + +cat >>confdefs.h <<\_ACEOF +#define SAVE_CALL_COUNT 8 +_ACEOF + + ;; + i345686-*-dgux*) + cat >>confdefs.h <<\_ACEOF +#define MAKE_BACK_GRAPH 1 +_ACEOF + + ;; + esac + fi +fi; + +if test "${gc_use_mmap}" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define USE_MMAP 1 +_ACEOF + +fi + +if test -n "$with_cross_host" && + test x"$with_cross_host" != x"no"; then + toolexecdir='$(exec_prefix)/$(target_noncanonical)' + toolexeclibdir='$(toolexecdir)/lib' +else + toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)' + toolexeclibdir='$(libdir)' +fi +multi_os_directory=`$CC -print-multi-os-directory` +case $multi_os_directory in + .) ;; # Avoid trailing /. + *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; +esac + + + +if test "${multilib}" = "yes"; then + multilib_arg="--enable-multilib" +else + multilib_arg= +fi + + ac_config_headers="$ac_config_headers include/gc_config.h include/gc_ext_config.h" + + + ac_config_files="$ac_config_files Makefile include/Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${POWERPC_DARWIN_TRUE}" && test -z "${POWERPC_DARWIN_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"POWERPC_DARWIN\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"POWERPC_DARWIN\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${CPLUSPLUS_TRUE}" && test -z "${CPLUSPLUS_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"CPLUSPLUS\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"CPLUSPLUS\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, 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 + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + + +srcdir="$srcdir" +host="$host" +target="$target" +with_multisubdir="$with_multisubdir" +with_multisrctop="$with_multisrctop" +with_target_subdir="$with_target_subdir" +ac_configure_args="${multilib_arg} ${ac_configure_args}" +multi_basedir="$multi_basedir" +CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +CC="$CC" +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "include/gc_config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/gc_config.h" ;; + "include/gc_ext_config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/gc_ext_config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s, at SHELL@,$SHELL,;t t +s, at PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s, at PACKAGE_NAME@,$PACKAGE_NAME,;t t +s, at PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s, at PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s, at PACKAGE_STRING@,$PACKAGE_STRING,;t t +s, at PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s, at exec_prefix@,$exec_prefix,;t t +s, at prefix@,$prefix,;t t +s, at program_transform_name@,$program_transform_name,;t t +s, at bindir@,$bindir,;t t +s, at sbindir@,$sbindir,;t t +s, at libexecdir@,$libexecdir,;t t +s, at datadir@,$datadir,;t t +s, at sysconfdir@,$sysconfdir,;t t +s, at sharedstatedir@,$sharedstatedir,;t t +s, at localstatedir@,$localstatedir,;t t +s, at libdir@,$libdir,;t t +s, at includedir@,$includedir,;t t +s, at oldincludedir@,$oldincludedir,;t t +s, at infodir@,$infodir,;t t +s, at mandir@,$mandir,;t t +s, at build_alias@,$build_alias,;t t +s, at host_alias@,$host_alias,;t t +s, at target_alias@,$target_alias,;t t +s, at DEFS@,$DEFS,;t t +s, at ECHO_C@,$ECHO_C,;t t +s, at ECHO_N@,$ECHO_N,;t t +s, at ECHO_T@,$ECHO_T,;t t +s, at LIBS@,$LIBS,;t t +s, at multi_basedir@,$multi_basedir,;t t +s, at build@,$build,;t t +s, at build_cpu@,$build_cpu,;t t +s, at build_vendor@,$build_vendor,;t t +s, at build_os@,$build_os,;t t +s, at host@,$host,;t t +s, at host_cpu@,$host_cpu,;t t +s, at host_vendor@,$host_vendor,;t t +s, at host_os@,$host_os,;t t +s, at target@,$target,;t t +s, at target_cpu@,$target_cpu,;t t +s, at target_vendor@,$target_vendor,;t t +s, at target_os@,$target_os,;t t +s, at target_noncanonical@,$target_noncanonical,;t t +s, at mkinstalldirs@,$mkinstalldirs,;t t +s, at INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s, at INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s, at INSTALL_DATA@,$INSTALL_DATA,;t t +s, at CYGPATH_W@,$CYGPATH_W,;t t +s, at PACKAGE@,$PACKAGE,;t t +s, at VERSION@,$VERSION,;t t +s, at ACLOCAL@,$ACLOCAL,;t t +s, at AUTOCONF@,$AUTOCONF,;t t +s, at AUTOMAKE@,$AUTOMAKE,;t t +s, at AUTOHEADER@,$AUTOHEADER,;t t +s, at MAKEINFO@,$MAKEINFO,;t t +s, at install_sh@,$install_sh,;t t +s, at STRIP@,$STRIP,;t t +s, at ac_ct_STRIP@,$ac_ct_STRIP,;t t +s, at INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s, at mkdir_p@,$mkdir_p,;t t +s, at AWK@,$AWK,;t t +s, at SET_MAKE@,$SET_MAKE,;t t +s, at am__leading_dot@,$am__leading_dot,;t t +s, at AMTAR@,$AMTAR,;t t +s, at am__tar@,$am__tar,;t t +s, at am__untar@,$am__untar,;t t +s, at CC@,$CC,;t t +s, at ac_ct_CC@,$ac_ct_CC,;t t +s, at EXEEXT@,$EXEEXT,;t t +s, at OBJEXT@,$OBJEXT,;t t +s, at DEPDIR@,$DEPDIR,;t t +s, at am__include@,$am__include,;t t +s, at am__quote@,$am__quote,;t t +s, at AMDEP_TRUE@,$AMDEP_TRUE,;t t +s, at AMDEP_FALSE@,$AMDEP_FALSE,;t t +s, at AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s, at CCDEPMODE@,$CCDEPMODE,;t t +s, at am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s, at am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s, at CXX@,$CXX,;t t +s, at ac_ct_CXX@,$ac_ct_CXX,;t t +s, at CXXDEPMODE@,$CXXDEPMODE,;t t +s, at am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t +s, at am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t +s, at CFLAGS@,$CFLAGS,;t t +s, at CXXFLAGS@,$CXXFLAGS,;t t +s, at CCAS@,$CCAS,;t t +s, at CCASFLAGS@,$CCASFLAGS,;t t +s, at AS@,$AS,;t t +s, at ac_ct_AS@,$ac_ct_AS,;t t +s, at AR@,$AR,;t t +s, at ac_ct_AR@,$ac_ct_AR,;t t +s, at RANLIB@,$RANLIB,;t t +s, at ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s, at MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +s, at MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +s, at MAINT@,$MAINT,;t t +s, at GC_CFLAGS@,$GC_CFLAGS,;t t +s, at LN_S@,$LN_S,;t t +s, at LIBTOOL@,$LIBTOOL,;t t +s, at CXXCPP@,$CXXCPP,;t t +s, at CPPFLAGS@,$CPPFLAGS,;t t +s, at THREADLIBS@,$THREADLIBS,;t t +s, at POWERPC_DARWIN_TRUE@,$POWERPC_DARWIN_TRUE,;t t +s, at POWERPC_DARWIN_FALSE@,$POWERPC_DARWIN_FALSE,;t t +s, at extra_ldflags_libgc@,$extra_ldflags_libgc,;t t +s, at EXTRA_TEST_LIBS@,$EXTRA_TEST_LIBS,;t t +s, at target_all@,$target_all,;t t +s, at CPLUSPLUS_TRUE@,$CPLUSPLUS_TRUE,;t t +s, at CPLUSPLUS_FALSE@,$CPLUSPLUS_FALSE,;t t +s, at AM_CPPFLAGS@,$AM_CPPFLAGS,;t t +s, at addobjs@,$addobjs,;t t +s, at addincludes@,$addincludes,;t t +s, at addlibs@,$addlibs,;t t +s, at addtests@,$addtests,;t t +s, at CPP@,$CPP,;t t +s, at EGREP@,$EGREP,;t t +s, at MY_CFLAGS@,$MY_CFLAGS,;t t +s, at toolexecdir@,$toolexecdir,;t t +s, at toolexeclibdir@,$toolexeclibdir,;t t +s, at LIBOBJS@,$LIBOBJS,;t t +s, at LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s, at configure_input@,$configure_input,;t t +s, at srcdir@,$ac_srcdir,;t t +s, at abs_srcdir@,$ac_abs_srcdir,;t t +s, at top_srcdir@,$ac_top_srcdir,;t t +s, at abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s, at builddir@,$ac_builddir,;t t +s, at abs_builddir@,$ac_abs_builddir,;t t +s, at top_builddir@,$ac_top_builddir,;t t +s, at abs_top_builddir@,$ac_abs_top_builddir,;t t +s, at INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + default-1 ) +# Only add multilib support code if we just rebuilt the top-level +# Makefile. +case " $CONFIG_FILES " in + *" Makefile "*) + ac_file=Makefile . ${multi_basedir}/config-ml.in + ;; +esac ;; + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + Propchange: llvm-gcc-4.2/trunk/boehm-gc/configure ------------------------------------------------------------------------------ svn:executable = * Added: llvm-gcc-4.2/trunk/boehm-gc/configure.ac URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/configure.ac?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/configure.ac (added) +++ llvm-gcc-4.2/trunk/boehm-gc/configure.ac Thu Nov 8 16:56:19 2007 @@ -0,0 +1,557 @@ +# Copyright (c) 1999, 2000, 2001, 2002, 2003, 2006 by Red Hat, Inc. All rights reserved. +# Copyright 2004 Nathanael Nerode +# +# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED +# OR IMPLIED. ANY USE IS AT YOUR OWN RISK. +# +# Permission is hereby granted to use or copy this program +# for any purpose, provided the above notices are retained on all copies. +# Permission to modify the code and to distribute modified code is granted, +# provided the above notices are retained, and a notice that the code was +# modified is included with the above copyright notice. +# +# Original author: Tom Tromey +# Modified by Nathanael Nerode + +dnl Process this file with autoconf to produce configure. + +AC_PREREQ(2.59) +AC_INIT +AC_CONFIG_SRCDIR(gcj_mlc.c) +# This works around the fact that libtool configuration may change LD +# for this particular configuration, but some shells, instead of +# keeping the changes in LD private, export them just because LD is +# exported. +ORIGINAL_LD_FOR_MULTILIBS=$LD + +AM_ENABLE_MULTILIB(, ..) + +AC_CANONICAL_HOST +AC_CANONICAL_TARGET + +# Get the 'noncanonical' system names. +ACX_NONCANONICAL_TARGET + +# This works around an automake problem. +mkinstalldirs="`cd $ac_aux_dir && ${PWDCMD-pwd}`/mkinstalldirs" +AC_SUBST(mkinstalldirs) + +AM_INIT_AUTOMAKE(gc, 6.6, no-define) + +# The autoconf 2.5x version of the no-executables hack. +GCC_NO_EXECUTABLES + +# Yak. We must force CC and CXX to /not/ be precious variables; otherwise +# the wrong, non-multilib-adjusted value will be used in multilibs. +# As a side effect, we have to subst CFLAGS and CXXFLAGS ourselves. + +m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) +m4_define([_AC_ARG_VAR_PRECIOUS],[]) +AC_PROG_CC +AC_PROG_CXX +m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) + +AM_PROG_CC_C_O + +AC_SUBST(CFLAGS) +AC_SUBST(CXXFLAGS) + +# Newer automakes demand CCAS and CCASFLAGS. +: ${CCAS='$(CC)'} +: ${CCASFLAGS='$(CFLAGS)'} +AC_SUBST(CCAS) +AC_SUBST(CCASFLAGS) + +AC_CHECK_TOOL(AS, as) +AC_CHECK_TOOL(AR, ar) +AC_CHECK_TOOL(RANLIB, ranlib, :) + +AC_PROG_INSTALL + +AM_MAINTAINER_MODE + +. ${srcdir}/configure.host + +case ${gc_basedir} in +/* | [A-Za-z]:[/\\]*) gc_flagbasedir=${gc_basedir} ;; +*) gc_flagbasedir='$(top_builddir)/'${gc_basedir} ;; +esac + +gc_cflags="${gc_cflags} -Iinclude -I"'$(top_builddir)'"/./targ-include -I${gc_flagbasedir}/libc/include" +case "${host}" in + *-*-cygwin32*) + gc_cflags="${gc_cflags} -I${gc_flagbasedir}/../winsup/include" + ;; +esac + +dnl gc_cflags="${gc_cflags} -fno-builtin" + +GC_CFLAGS=${gc_cflags} +AC_SUBST(GC_CFLAGS) + +AC_PROG_LIBTOOL + +dnl We use these options to decide which functions to include. +AC_ARG_WITH(target-subdir, +[ --with-target-subdir=SUBDIR + configuring with a cross compiler]) +AC_ARG_WITH(cross-host, +[ --with-cross-host=HOST configuring with a cross compiler]) + +AC_MSG_CHECKING([for thread model used by GCC]) +THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` +if test -z "$THREADS"; then + THREADS=no +fi +AC_MSG_RESULT([$THREADS]) + +AC_ARG_ENABLE(parallel-mark, +[ --enable-parallel-mark parallelize marking and free list construction], + [case "$THREADS" in + no | none | single) + AC_MSG_ERROR([Parallel mark requires --enable-threads=x spec]) + ;; + esac] +) + +AM_CPPFLAGS="-I`cd $srcdir && ${PWDCMD-pwd}`/include" +THREADLIBS= +case "$THREADS" in + no | none | single) + THREADS=none + ;; + posix | posix95 | pthreads) + THREADS=posix + THREADLIBS=-lpthread + case "$host" in + x86-*-linux* | ia64-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* | alpha-*-linux*) + AC_DEFINE(GC_LINUX_THREADS,1,[support for Xavier Leroy's Linux threads]) + AC_DEFINE(_REENTRANT,1,[Use reentrant code]) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK,1,[allow the marker to run in multiple threads]) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC,1,[define GC_local_malloc() & GC_local_malloc_atomic()]) + ;; + *-*-linux*) + AC_DEFINE(GC_LINUX_THREADS,1) + AC_DEFINE(_REENTRANT,1) + ;; + *-*-aix*) + AC_DEFINE(GC_AIX_THREADS,1,[support AIX threads]) + AC_DEFINE(_REENTRANT,1) + ;; + *-*-hpux11*) + AC_MSG_WARN("Only HP-UX 11 POSIX threads are supported.") + AC_DEFINE(GC_HPUX_THREADS,1,[enables support for HP/UX 11 pthreads]) + AC_DEFINE(_POSIX_C_SOURCE,199506L,[POSIX version of C Source]) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK,1) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC,1) + THREADLIBS="-lpthread -lrt" + # HPUX needs REENTRANT for the _r calls. + AC_DEFINE(_REENTRANT, 1, [Required define if using POSIX threads]) + ;; + *-*-hpux10*) + AC_MSG_WARN("Only HP-UX 11 POSIX threads are supported.") + ;; + *-*-kfreebsd*-gnu) + AC_DEFINE(GC_FREEBSD_THREADS) + INCLUDES="$INCLUDES -pthread" + THREADDLLIBS=-pthread + AC_DEFINE(_REENTRANT) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC) + AC_DEFINE(USE_COMPILER_TLS, 1,[use tls for boehm]) + ;; + *-*-freebsd*) + AC_MSG_WARN("FreeBSD does not yet fully support threads with Boehm GC.") + AC_DEFINE(GC_FREEBSD_THREADS,1,[support FreeBSD threads]) + AM_CPPFLAGS="$AM_CPPFLAGS -pthread" + THREADLIBS=-pthread + ;; + *-*-solaris*) + AC_DEFINE(GC_SOLARIS_THREADS,1,[support for Solaris (thr_) threads]) + AC_DEFINE(GC_SOLARIS_PTHREADS,1,[support for Solaris pthreads]) + ;; + *-*-irix*) + AC_DEFINE(GC_IRIX_THREADS,1,[support for Irix pthreads]) + ;; + *-*-cygwin*) + AC_DEFINE(GC_WIN32_THREADS,1,[support for win32 threads]) + ;; + *-*-darwin*) + AC_DEFINE(GC_DARWIN_THREADS,1,[support for Mac OS X pthreads]) + AC_DEFINE(THREAD_LOCAL_ALLOC,1) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK,1) + fi + ;; + *-*-osf*) + AC_DEFINE(GC_OSF1_THREADS,1,[support for Tru64 pthreads]) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK,1) + AC_DEFINE(THREAD_LOCAL_ALLOC,1) + # May want to enable it in other cases, too. + # Measurements havent yet been done. + fi + AM_CPPFLAGS="$AM_CPPFLAGS -pthread" + THREADLIBS="-lpthread -lrt" + ;; + esac + ;; + win32) + AC_DEFINE(GC_WIN32_THREADS,1) + dnl Old wine getenv may not return NULL for missing entry. + dnl Define EMPTY_GETENV_RESULTS here to work around the bug. + ;; + dgux386) + THREADS=dgux386 +AC_MSG_RESULT($THREADLIBS) + # Use pthread GCC switch + THREADLIBS=-pthread + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK,1) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC,1) + AC_DEFINE(GC_DGUX386_THREADS,1,[support for DB/UX on I386 threads]) + AC_DEFINE(DGUX_THREADS,1,[No description]) + # Enable _POSIX4A_DRAFT10_SOURCE with flag -pthread + AM_CPPFLAGS="-pthread $AM_CPPFLAGS" + ;; + aix) + THREADS=posix + THREADLIBS=-lpthread + AC_DEFINE(GC_AIX_THREADS,1) + AC_DEFINE(_REENTRANT,1) + ;; + decosf1 | irix | mach | os2 | solaris | dce | vxworks) + AC_MSG_ERROR(thread package $THREADS not yet supported) + ;; + *) + AC_MSG_ERROR($THREADS is an unknown thread package) + ;; +esac +AC_SUBST(THREADLIBS) + +case "$host" in + powerpc-*-darwin*) + powerpc_darwin=true + ;; +esac +AM_CONDITIONAL(POWERPC_DARWIN,test x$powerpc_darwin = xtrue) + +# Darwin needs a few extra special tests to deal with variation in the +# system headers. +case "$host" in + powerpc*-*-darwin*) + AC_CHECK_MEMBER(ppc_thread_state_t.r0, + AC_DEFINE(HAS_PPC_THREAD_STATE_R0,1, + [ppc_thread_state_t has field r0]),, + [#include ]) + AC_CHECK_MEMBER(ppc_thread_state_t.__r0, + AC_DEFINE(HAS_PPC_THREAD_STATE___R0,1,dnl + [ppc_thread_state_t has field __r0]),, + [#include ]) + AC_CHECK_MEMBER(ppc_thread_state64_t.r0, + AC_DEFINE(HAS_PPC_THREAD_STATE64_R0,1,dnl + [ppc_thread_state64_t has field r0]),, + [#include ]) + AC_CHECK_MEMBER(ppc_thread_state64_t.__r0, + AC_DEFINE(HAS_PPC_THREAD_STATE64___R0,1,dnl + [ppc_thread_state64_t has field __r0]),, + [#include ]) + ;; + i?86*-*-darwin*) + AC_CHECK_MEMBER(x86_thread_state32_t.eax, + AC_DEFINE(HAS_X86_THREAD_STATE32_EAX,1,dnl + [x86_thread_state32_t has field eax]),, + [#include + #include ]) + AC_CHECK_MEMBER(x86_thread_state32_t.__eax, + AC_DEFINE(HAS_X86_THREAD_STATE32___EAX,1,dnl + [x86_thread_state32_t has field __eax]),, + [#include + #include ]) + ;; + x86_64-*-darwin*) + AC_CHECK_MEMBER(x86_thread_state64_t.rax, + AC_DEFINE(HAS_X86_THREAD_STATE64_RAX,1,dnl + [x86_thread_state64_t has field rax]),, + [#include + #include ]) + AC_CHECK_MEMBER(x86_thread_state64_t.__rax, + AC_DEFINE(HAS_X86_THREAD_STATE64___RAX,1,dnl + [x86_thread_state64_t has field __rax]),, + [#include + #include ]) + ;; + *) ;; +esac + +# We never want libdl on darwin. It is a fake libdl that just ends up making +# dyld calls anyway +case "$host" in + *-*-darwin*) ;; + *) + AC_CHECK_LIB(dl, dlopen, EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl") + ;; +esac + +# extra LD Flags which are required for targets +case "${host}" in + *-*-darwin*) + extra_ldflags_libgc=-Wl,-single_module + ;; +esac +AC_SUBST(extra_ldflags_libgc) + +AC_SUBST(EXTRA_TEST_LIBS) + +target_all=libgcjgc.la +AC_SUBST(target_all) + +dnl If the target is an eCos system, use the appropriate eCos +dnl I/O routines. +dnl FIXME: this should not be a local option but a global target +dnl system; at present there is no eCos target. +TARGET_ECOS="no" +AC_ARG_WITH(ecos, +[ --with-ecos enable runtime eCos target support], +TARGET_ECOS="$with_ecos" +) + +addobjs= +addlibs= +addincludes= +addtests= +case "$TARGET_ECOS" in + no) + ;; + *) + AC_DEFINE(ECOS,1,[Target is ECOS]) + AM_CPPFLAGS="${AM_CPPFLAGS} -I${TARGET_ECOS}/include" + addobjs="$addobjs ecos.lo" + ;; +esac + +if test "${enable_cplusplus}" = yes; then + addincludes="$addincludes include/gc_cpp.h include/gc_allocator.h" + addtests="$addtests test_cpp" +fi + +AM_CONDITIONAL(CPLUSPLUS, test "${enable_cplusplus}" = yes) + +AC_SUBST(CXX) + +AC_SUBST(AM_CPPFLAGS) + +# Configuration of shared libraries +# +AC_MSG_CHECKING(whether to build shared libraries) +AC_ENABLE_SHARED + +case "$host" in + alpha-*-openbsd*) + enable_shared=no + AC_MSG_RESULT(no) + ;; + *) + AC_MSG_RESULT(yes) + ;; +esac + +# Checks for pthreads functions +# +oldLIBS="$LIBS" +LIBS="$LIBS $THREADLIBS" +AC_CHECK_FUNCS([pthread_getattr_np]) +LIBS="$oldLIBS" + +# Configuration of machine-dependent code +# +# We don't set NO_EXECUTE_PERMISSION by default because gcj (and +# anything else that creates trampolines in gc-allocated memory) +# always needs exec permission. The exceptions to this are IA-64 and +# some variations of Power PC, where trampolines don't contain +# executable code. +# +AC_MSG_CHECKING(which machine-dependent code should be used) +machdep= +case "$host" in + alpha*-*-openbsd*) + machdep="alpha_mach_dep.lo" + if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then + AC_MSG_WARN(OpenBSD/Alpha without dlopen(). Shared library support is disabled) + fi + ;; + alpha*-*-linux*) + machdep="alpha_mach_dep.lo" + ;; + i?86-*-solaris2.[[89]] | i?86-*-solaris2.1?) + AC_DEFINE(SOLARIS25_PROC_VDB_BUG_FIXED,1,[PROC_VDB in Solaris 2.5 gives wrong values for dirty bits]) + ;; + mipstx39-*-elf*) + machdep="mips_ultrix_mach_dep.lo" + AC_DEFINE(STACKBASE, __stackbase,[No description]) + AC_DEFINE(DATASTART_IS_ETEXT,1,[No description]) + ;; + mips-dec-ultrix*) + machdep="mips_ultrix_mach-dep.lo" + ;; + mips-nec-sysv*|mips-unknown-sysv*) + ;; + mips*-*-linux*) + ;; + mips-*-*) + machdep="mips_sgi_mach_dep.lo" + ;; + sparc-*-netbsd*) + machdep="sparc_netbsd_mach_dep.lo" + ;; + sparc-sun-solaris2.3) + machdep="sparc_mach_dep.lo" + AC_DEFINE(SUNOS53_SHARED_LIB,1,[Avoid Solaris 5.3 dynamic library bug]) + ;; + sparc*-sun-solaris2.*) + machdep="sparc_mach_dep.lo" + ;; + ia64-*-*) + AC_DEFINE(NO_EXECUTE_PERMISSION,1,[cause some or all of the heap to not have execute permission]) + machdep="mach_dep.lo ia64_save_regs_in_stack.lo" + ;; +esac +if test x"$machdep" = x; then +AC_MSG_RESULT($machdep) + machdep="mach_dep.lo" +fi +addobjs="$addobjs $machdep" +AC_SUBST(addobjs) +AC_SUBST(addincludes) +AC_SUBST(addlibs) +AC_SUBST(addtests) + +# +# Check for AViiON Machines running DGUX +# +AC_MSG_CHECKING(if host is AViiON running DGUX) +ac_is_dgux=no +AC_CHECK_HEADER(sys/dg_sys_info.h, +[ac_is_dgux=yes;]) + +AC_MSG_RESULT($ac_is_dgux) + ## :GOTCHA: we do not check anything but sys/dg_sys_info.h +if test $ac_is_dgux = yes; then + if test "$enable_full_debug" = "yes"; then + CFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" + CXXFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" + else + CFLAGS="-DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" + CXXFLAGS="-DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" + fi + AC_SUBST(CFLAGS) + AC_SUBST(CXXFLAGS) +fi + +dnl As of 4.13a2, the collector will not properly work on Solaris when +dnl built with gcc and -O. So we remove -O in the appropriate case. +dnl Not needed anymore on Solaris. +AC_MSG_CHECKING(whether Solaris gcc optimization fix is necessary) +case "$host" in + *aix*) + if test "$GCC" = yes; then + AC_MSG_RESULT(yes) + new_CFLAGS= + for i in $CFLAGS; do + case "$i" in + -O*) + ;; + *) + new_CFLAGS="$new_CFLAGS $i" + ;; + esac + done + CFLAGS="$new_CFLAGS" + else + AC_MSG_RESULT(no) + fi + ;; + *) AC_MSG_RESULT(no) ;; +esac + +dnl We need to override the top-level CFLAGS. This is how we do it. +MY_CFLAGS="$CFLAGS" +AC_SUBST(MY_CFLAGS) + +dnl Include defines that have become de facto standard. +dnl ALL_INTERIOR_POINTERS can be overridden in startup code. +AC_DEFINE(SILENT,1,[disables statistics printing]) +AC_DEFINE(NO_SIGNALS,1,[does not disable signals]) +AC_DEFINE(ALL_INTERIOR_POINTERS,1,[allows all pointers to the interior of objects to be recognized]) + +dnl By default, make the library as general as possible. +AC_DEFINE(JAVA_FINALIZATION,1,[make it somewhat safer to finalize objects out of order]) +AC_DEFINE(GC_GCJ_SUPPORT,1,[include support for gcj]) +AC_DEFINE(ATOMIC_UNCOLLECTABLE,1,[include code for GC_malloc_atomic_uncollectable]) + +dnl This is something of a hack. When cross-compiling we turn off +dnl some functionality. These is only correct when targetting an +dnl embedded system. FIXME. +if test -n "${with_cross_host}"; then + AC_DEFINE(NO_SIGSET,1,[use empty GC_disable_signals and GC_enable_signals]) + AC_DEFINE(NO_DEBUGGING,1,[removes GC_dump]) +fi + +AC_ARG_ENABLE(gc-debug, +[ --enable-gc-debug include full support for pointer backtracing etc.], +[ if test "$enable_gc_debug" = "yes"; then + AC_MSG_WARN("Must define GC_DEBUG and use debug alloc. in clients.") + AC_DEFINE(KEEP_BACK_PTRS,1,[Add code to save back pointers]) + AC_DEFINE(DBG_HDRS_ALL,1,[Make sure that all objects have debug headers]) + case $host in + ia64-*-linux* ) + AC_DEFINE(MAKE_BACK_GRAPH,1,[Enable GC_PRINT_BACK_HEIGHT environment variable]) + ;; + x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* ) + AC_DEFINE(MAKE_BACK_GRAPH,1) + AC_MSG_WARN("Client must not use -fomit-frame-pointer.") + AC_DEFINE(SAVE_CALL_COUNT, 8, [number of call frames saved with objects allocated through the debugging interface]) + ;; + i[3456]86-*-dgux*) + AC_DEFINE(MAKE_BACK_GRAPH,1) + ;; + esac + fi]) + +if test "${gc_use_mmap}" = "yes"; then + AC_DEFINE(USE_MMAP, 1, [use MMAP instead of sbrk to get new memory]) +fi + +if test -n "$with_cross_host" && + test x"$with_cross_host" != x"no"; then + toolexecdir='$(exec_prefix)/$(target_noncanonical)' + toolexeclibdir='$(toolexecdir)/lib' +else + toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)' + toolexeclibdir='$(libdir)' +fi +multi_os_directory=`$CC -print-multi-os-directory` +case $multi_os_directory in + .) ;; # Avoid trailing /. + *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; +esac +AC_SUBST(toolexecdir) +AC_SUBST(toolexeclibdir) + +if test "${multilib}" = "yes"; then + multilib_arg="--enable-multilib" +else + multilib_arg= +fi + +AC_CONFIG_HEADERS([include/gc_config.h include/gc_ext_config.h]) + +AC_CONFIG_FILES(Makefile include/Makefile) +AC_OUTPUT Added: llvm-gcc-4.2/trunk/boehm-gc/configure.host URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/configure.host?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/configure.host (added) +++ llvm-gcc-4.2/trunk/boehm-gc/configure.host Thu Nov 8 16:56:19 2007 @@ -0,0 +1,70 @@ +# configure.host + +# This shell script handles all host based configuration for the garbage +# collector. +# It sets various shell variables based on the the host and the +# configuration options. You can modify this shell script without +# needing to rerun autoconf. + +# This shell script should be invoked as +# . configure.host +# If it encounters an error, it will exit with a message. + +# It uses the following shell variables: +# host The configuration host +# host_cpu The configuration host CPU +# target_optspace --enable-target-optspace ("yes", "no", "") +# GCC should be "yes" if using gcc + +# It sets the following shell variables: +# gc_cflags Special CFLAGS to use when building +# gc_use_mmap Set to "yes" on platforms where mmap should be used instead +# of sbrk. This will define USE_MMAP. + +gc_cflags="" +gc_use_mmap= + +# We should set -fexceptions if we are using gcc and might be used +# inside something like gcj. This is the zeroth approximation: +if test :"$GCC": = :yes: ; then + gc_cflags="${gc_cflags} -fexceptions" +else + case "$host" in + hppa*-*-hpux* ) + if test :$GCC: != :"yes": ; then + gc_cflags="${gc_flags} +ESdbgasm" + fi + # :TODO: actaully we should check using Autoconf if + # the compiler supports this option. + ;; + esac +fi + +case "${host}" in + *-linux*) + gc_use_mmap=yes + ;; +esac + +case "${target_optspace}:${host}" in + yes:*) + gc_cflags="${gc_cflags} -Os" + ;; + :m32r-* | :d10v-* | :d30v-*) + gc_cflags="${gc_cflags} -Os" + ;; + no:* | :*) + # Nothing. + ;; +esac + +# Set any host dependent compiler flags. +# THIS TABLE IS SORTED. KEEP IT THAT WAY. + +case "${host}" in + mips-tx39-*|mipstx39-unknown-*) + gc_cflags="${gc_cflags} -G 0" + ;; + *) + ;; +esac Added: llvm-gcc-4.2/trunk/boehm-gc/cord/cordbscs.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/cord/cordbscs.c?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/cord/cordbscs.c (added) +++ llvm-gcc-4.2/trunk/boehm-gc/cord/cordbscs.c Thu Nov 8 16:56:19 2007 @@ -0,0 +1,919 @@ +/* + * Copyright (c) 1993-1994 by Xerox Corporation. All rights reserved. + * + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * + * Permission is hereby granted to use or copy this program + * for any purpose, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is granted, + * provided the above notices are retained, and a notice that the code was + * modified is included with the above copyright notice. + * + * Author: Hans-J. Boehm (boehm at parc.xerox.com) + */ +/* Boehm, October 3, 1994 5:19 pm PDT */ +# include "gc.h" +# include "cord.h" +# include +# include +# include + +/* An implementation of the cord primitives. These are the only */ +/* Functions that understand the representation. We perform only */ +/* minimal checks on arguments to these functions. Out of bounds */ +/* arguments to the iteration functions may result in client functions */ +/* invoked on garbage data. In most cases, client functions should be */ +/* programmed defensively enough that this does not result in memory */ +/* smashes. */ + +typedef void (* oom_fn)(void); + +oom_fn CORD_oom_fn = (oom_fn) 0; + +# define OUT_OF_MEMORY { if (CORD_oom_fn != (oom_fn) 0) (*CORD_oom_fn)(); \ + ABORT("Out of memory\n"); } +# define ABORT(msg) { fprintf(stderr, "%s\n", msg); abort(); } + +typedef unsigned long word; + +typedef union { + struct Concatenation { + char null; + char header; + char depth; /* concatenation nesting depth. */ + unsigned char left_len; + /* Length of left child if it is sufficiently */ + /* short; 0 otherwise. */ +# define MAX_LEFT_LEN 255 + word len; + CORD left; /* length(left) > 0 */ + CORD right; /* length(right) > 0 */ + } concatenation; + struct Function { + char null; + char header; + char depth; /* always 0 */ + char left_len; /* always 0 */ + word len; + CORD_fn fn; + void * client_data; + } function; + struct Generic { + char null; + char header; + char depth; + char left_len; + word len; + } generic; + char string[1]; +} CordRep; + +# define CONCAT_HDR 1 + +# define FN_HDR 4 +# define SUBSTR_HDR 6 + /* Substring nodes are a special case of function nodes. */ + /* The client_data field is known to point to a substr_args */ + /* structure, and the function is either CORD_apply_access_fn */ + /* or CORD_index_access_fn. */ + +/* The following may be applied only to function and concatenation nodes: */ +#define IS_CONCATENATION(s) (((CordRep *)s)->generic.header == CONCAT_HDR) + +#define IS_FUNCTION(s) ((((CordRep *)s)->generic.header & FN_HDR) != 0) + +#define IS_SUBSTR(s) (((CordRep *)s)->generic.header == SUBSTR_HDR) + +#define LEN(s) (((CordRep *)s) -> generic.len) +#define DEPTH(s) (((CordRep *)s) -> generic.depth) +#define GEN_LEN(s) (CORD_IS_STRING(s) ? strlen(s) : LEN(s)) + +#define LEFT_LEN(c) ((c) -> left_len != 0? \ + (c) -> left_len \ + : (CORD_IS_STRING((c) -> left) ? \ + (c) -> len - GEN_LEN((c) -> right) \ + : LEN((c) -> left))) + +#define SHORT_LIMIT (sizeof(CordRep) - 1) + /* Cords shorter than this are C strings */ + + +/* Dump the internal representation of x to stdout, with initial */ +/* indentation level n. */ +void CORD_dump_inner(CORD x, unsigned n) +{ + register size_t i; + + for (i = 0; i < (size_t)n; i++) { + fputs(" ", stdout); + } + if (x == 0) { + fputs("NIL\n", stdout); + } else if (CORD_IS_STRING(x)) { + for (i = 0; i <= SHORT_LIMIT; i++) { + if (x[i] == '\0') break; + putchar(x[i]); + } + if (x[i] != '\0') fputs("...", stdout); + putchar('\n'); + } else if (IS_CONCATENATION(x)) { + register struct Concatenation * conc = + &(((CordRep *)x) -> concatenation); + printf("Concatenation: %p (len: %d, depth: %d)\n", + x, (int)(conc -> len), (int)(conc -> depth)); + CORD_dump_inner(conc -> left, n+1); + CORD_dump_inner(conc -> right, n+1); + } else /* function */{ + register struct Function * func = + &(((CordRep *)x) -> function); + if (IS_SUBSTR(x)) printf("(Substring) "); + printf("Function: %p (len: %d): ", x, (int)(func -> len)); + for (i = 0; i < 20 && i < func -> len; i++) { + putchar((*(func -> fn))(i, func -> client_data)); + } + if (i < func -> len) fputs("...", stdout); + putchar('\n'); + } +} + +/* Dump the internal representation of x to stdout */ +void CORD_dump(CORD x) +{ + CORD_dump_inner(x, 0); + fflush(stdout); +} + +CORD CORD_cat_char_star(CORD x, const char * y, size_t leny) +{ + register size_t result_len; + register size_t lenx; + register int depth; + + if (x == CORD_EMPTY) return(y); + if (leny == 0) return(x); + if (CORD_IS_STRING(x)) { + lenx = strlen(x); + result_len = lenx + leny; + if (result_len <= SHORT_LIMIT) { + register char * result = GC_MALLOC_ATOMIC(result_len+1); + + if (result == 0) OUT_OF_MEMORY; + memcpy(result, x, lenx); + memcpy(result + lenx, y, leny); + result[result_len] = '\0'; + return((CORD) result); + } else { + depth = 1; + } + } else { + register CORD right; + register CORD left; + register char * new_right; + register size_t right_len; + + lenx = LEN(x); + + if (leny <= SHORT_LIMIT/2 + && IS_CONCATENATION(x) + && CORD_IS_STRING(right = ((CordRep *)x) -> concatenation.right)) { + /* Merge y into right part of x. */ + if (!CORD_IS_STRING(left = ((CordRep *)x) -> concatenation.left)) { + right_len = lenx - LEN(left); + } else if (((CordRep *)x) -> concatenation.left_len != 0) { + right_len = lenx - ((CordRep *)x) -> concatenation.left_len; + } else { + right_len = strlen(right); + } + result_len = right_len + leny; /* length of new_right */ + if (result_len <= SHORT_LIMIT) { + new_right = GC_MALLOC_ATOMIC(result_len + 1); + memcpy(new_right, right, right_len); + memcpy(new_right + right_len, y, leny); + new_right[result_len] = '\0'; + y = new_right; + leny = result_len; + x = left; + lenx -= right_len; + /* Now fall through to concatenate the two pieces: */ + } + if (CORD_IS_STRING(x)) { + depth = 1; + } else { + depth = DEPTH(x) + 1; + } + } else { + depth = DEPTH(x) + 1; + } + result_len = lenx + leny; + } + { + /* The general case; lenx, result_len is known: */ + register struct Concatenation * result; + + result = GC_NEW(struct Concatenation); + if (result == 0) OUT_OF_MEMORY; + result->header = CONCAT_HDR; + result->depth = depth; + if (lenx <= MAX_LEFT_LEN) result->left_len = lenx; + result->len = result_len; + result->left = x; + result->right = y; + if (depth >= MAX_DEPTH) { + return(CORD_balance((CORD)result)); + } else { + return((CORD) result); + } + } +} + + +CORD CORD_cat(CORD x, CORD y) +{ + register size_t result_len; + register int depth; + register size_t lenx; + + if (x == CORD_EMPTY) return(y); + if (y == CORD_EMPTY) return(x); + if (CORD_IS_STRING(y)) { + return(CORD_cat_char_star(x, y, strlen(y))); + } else if (CORD_IS_STRING(x)) { + lenx = strlen(x); + depth = DEPTH(y) + 1; + } else { + register int depthy = DEPTH(y); + + lenx = LEN(x); + depth = DEPTH(x) + 1; + if (depthy >= depth) depth = depthy + 1; + } + result_len = lenx + LEN(y); + { + register struct Concatenation * result; + + result = GC_NEW(struct Concatenation); + if (result == 0) OUT_OF_MEMORY; + result->header = CONCAT_HDR; + result->depth = depth; + if (lenx <= MAX_LEFT_LEN) result->left_len = lenx; + result->len = result_len; + result->left = x; + result->right = y; + if (depth >= MAX_DEPTH) { + return(CORD_balance((CORD)result)); + } else { + return((CORD) result); + } + } +} + + + +CORD CORD_from_fn(CORD_fn fn, void * client_data, size_t len) +{ + if (len <= 0) return(0); + if (len <= SHORT_LIMIT) { + register char * result; + register size_t i; + char buf[SHORT_LIMIT+1]; + register char c; + + for (i = 0; i < len; i++) { + c = (*fn)(i, client_data); + if (c == '\0') goto gen_case; + buf[i] = c; + } + buf[i] = '\0'; + result = GC_MALLOC_ATOMIC(len+1); + if (result == 0) OUT_OF_MEMORY; + strcpy(result, buf); + result[len] = '\0'; + return((CORD) result); + } + gen_case: + { + register struct Function * result; + + result = GC_NEW(struct Function); + if (result == 0) OUT_OF_MEMORY; + result->header = FN_HDR; + /* depth is already 0 */ + result->len = len; + result->fn = fn; + result->client_data = client_data; + return((CORD) result); + } +} + +size_t CORD_len(CORD x) +{ + if (x == 0) { + return(0); + } else { + return(GEN_LEN(x)); + } +} + +struct substr_args { + CordRep * sa_cord; + size_t sa_index; +}; + +char CORD_index_access_fn(size_t i, void * client_data) +{ + register struct substr_args *descr = (struct substr_args *)client_data; + + return(((char *)(descr->sa_cord))[i + descr->sa_index]); +} + +char CORD_apply_access_fn(size_t i, void * client_data) +{ + register struct substr_args *descr = (struct substr_args *)client_data; + register struct Function * fn_cord = &(descr->sa_cord->function); + + return((*(fn_cord->fn))(i + descr->sa_index, fn_cord->client_data)); +} + +/* A version of CORD_substr that simply returns a function node, thus */ +/* postponing its work. The fourth argument is a function that may */ +/* be used for efficient access to the ith character. */ +/* Assumes i >= 0 and i + n < length(x). */ +CORD CORD_substr_closure(CORD x, size_t i, size_t n, CORD_fn f) +{ + register struct substr_args * sa = GC_NEW(struct substr_args); + CORD result; + + if (sa == 0) OUT_OF_MEMORY; + sa->sa_cord = (CordRep *)x; + sa->sa_index = i; + result = CORD_from_fn(f, (void *)sa, n); + ((CordRep *)result) -> function.header = SUBSTR_HDR; + return (result); +} + +# define SUBSTR_LIMIT (10 * SHORT_LIMIT) + /* Substrings of function nodes and flat strings shorter than */ + /* this are flat strings. Othewise we use a functional */ + /* representation, which is significantly slower to access. */ + +/* A version of CORD_substr that assumes i >= 0, n > 0, and i + n < length(x).*/ +CORD CORD_substr_checked(CORD x, size_t i, size_t n) +{ + if (CORD_IS_STRING(x)) { + if (n > SUBSTR_LIMIT) { + return(CORD_substr_closure(x, i, n, CORD_index_access_fn)); + } else { + register char * result = GC_MALLOC_ATOMIC(n+1); + + if (result == 0) OUT_OF_MEMORY; + strncpy(result, x+i, n); + result[n] = '\0'; + return(result); + } + } else if (IS_CONCATENATION(x)) { + register struct Concatenation * conc + = &(((CordRep *)x) -> concatenation); + register size_t left_len; + register size_t right_len; + + left_len = LEFT_LEN(conc); + right_len = conc -> len - left_len; + if (i >= left_len) { + if (n == right_len) return(conc -> right); + return(CORD_substr_checked(conc -> right, i - left_len, n)); + } else if (i+n <= left_len) { + if (n == left_len) return(conc -> left); + return(CORD_substr_checked(conc -> left, i, n)); + } else { + /* Need at least one character from each side. */ + register CORD left_part; + register CORD right_part; + register size_t left_part_len = left_len - i; + + if (i == 0) { + left_part = conc -> left; + } else { + left_part = CORD_substr_checked(conc -> left, i, left_part_len); + } + if (i + n == right_len + left_len) { + right_part = conc -> right; + } else { + right_part = CORD_substr_checked(conc -> right, 0, + n - left_part_len); + } + return(CORD_cat(left_part, right_part)); + } + } else /* function */ { + if (n > SUBSTR_LIMIT) { + if (IS_SUBSTR(x)) { + /* Avoid nesting substring nodes. */ + register struct Function * f = &(((CordRep *)x) -> function); + register struct substr_args *descr = + (struct substr_args *)(f -> client_data); + + return(CORD_substr_closure((CORD)descr->sa_cord, + i + descr->sa_index, + n, f -> fn)); + } else { + return(CORD_substr_closure(x, i, n, CORD_apply_access_fn)); + } + } else { + char * result; + register struct Function * f = &(((CordRep *)x) -> function); + char buf[SUBSTR_LIMIT+1]; + register char * p = buf; + register char c; + register int j; + register int lim = i + n; + + for (j = i; j < lim; j++) { + c = (*(f -> fn))(j, f -> client_data); + if (c == '\0') { + return(CORD_substr_closure(x, i, n, CORD_apply_access_fn)); + } + *p++ = c; + } + *p = '\0'; + result = GC_MALLOC_ATOMIC(n+1); + if (result == 0) OUT_OF_MEMORY; + strcpy(result, buf); + return(result); + } + } +} + +CORD CORD_substr(CORD x, size_t i, size_t n) +{ + register size_t len = CORD_len(x); + + if (i >= len || n <= 0) return(0); + /* n < 0 is impossible in a correct C implementation, but */ + /* quite possible under SunOS 4.X. */ + if (i + n > len) n = len - i; +# ifndef __STDC__ + if (i < 0) ABORT("CORD_substr: second arg. negative"); + /* Possible only if both client and C implementation are buggy. */ + /* But empirically this happens frequently. */ +# endif + return(CORD_substr_checked(x, i, n)); +} + +/* See cord.h for definition. We assume i is in range. */ +int CORD_iter5(CORD x, size_t i, CORD_iter_fn f1, + CORD_batched_iter_fn f2, void * client_data) +{ + if (x == 0) return(0); + if (CORD_IS_STRING(x)) { + register const char *p = x+i; + + if (*p == '\0') ABORT("2nd arg to CORD_iter5 too big"); + if (f2 != CORD_NO_FN) { + return((*f2)(p, client_data)); + } else { + while (*p) { + if ((*f1)(*p, client_data)) return(1); + p++; + } + return(0); + } + } else if (IS_CONCATENATION(x)) { + register struct Concatenation * conc + = &(((CordRep *)x) -> concatenation); + + + if (i > 0) { + register size_t left_len = LEFT_LEN(conc); + + if (i >= left_len) { + return(CORD_iter5(conc -> right, i - left_len, f1, f2, + client_data)); + } + } + if (CORD_iter5(conc -> left, i, f1, f2, client_data)) { + return(1); + } + return(CORD_iter5(conc -> right, 0, f1, f2, client_data)); + } else /* function */ { + register struct Function * f = &(((CordRep *)x) -> function); + register size_t j; + register size_t lim = f -> len; + + for (j = i; j < lim; j++) { + if ((*f1)((*(f -> fn))(j, f -> client_data), client_data)) { + return(1); + } + } + return(0); + } +} + +#undef CORD_iter +int CORD_iter(CORD x, CORD_iter_fn f1, void * client_data) +{ + return(CORD_iter5(x, 0, f1, CORD_NO_FN, client_data)); +} + +int CORD_riter4(CORD x, size_t i, CORD_iter_fn f1, void * client_data) +{ + if (x == 0) return(0); + if (CORD_IS_STRING(x)) { + register const char *p = x + i; + register char c; + + for(;;) { + c = *p; + if (c == '\0') ABORT("2nd arg to CORD_riter4 too big"); + if ((*f1)(c, client_data)) return(1); + if (p == x) break; + p--; + } + return(0); + } else if (IS_CONCATENATION(x)) { + register struct Concatenation * conc + = &(((CordRep *)x) -> concatenation); + register CORD left_part = conc -> left; + register size_t left_len; + + left_len = LEFT_LEN(conc); + if (i >= left_len) { + if (CORD_riter4(conc -> right, i - left_len, f1, client_data)) { + return(1); + } + return(CORD_riter4(left_part, left_len - 1, f1, client_data)); + } else { + return(CORD_riter4(left_part, i, f1, client_data)); + } + } else /* function */ { + register struct Function * f = &(((CordRep *)x) -> function); + register size_t j; + + for (j = i; ; j--) { + if ((*f1)((*(f -> fn))(j, f -> client_data), client_data)) { + return(1); + } + if (j == 0) return(0); + } + } +} + +int CORD_riter(CORD x, CORD_iter_fn f1, void * client_data) +{ + return(CORD_riter4(x, CORD_len(x) - 1, f1, client_data)); +} + +/* + * The following functions are concerned with balancing cords. + * Strategy: + * Scan the cord from left to right, keeping the cord scanned so far + * as a forest of balanced trees of exponentialy decreasing length. + * When a new subtree needs to be added to the forest, we concatenate all + * shorter ones to the new tree in the appropriate order, and then insert + * the result into the forest. + * Crucial invariants: + * 1. The concatenation of the forest (in decreasing order) with the + * unscanned part of the rope is equal to the rope being balanced. + * 2. All trees in the forest are balanced. + * 3. forest[i] has depth at most i. + */ + +typedef struct { + CORD c; + size_t len; /* Actual length of c */ +} ForestElement; + +static size_t min_len [ MAX_DEPTH ]; + +static int min_len_init = 0; + +int CORD_max_len; + +typedef ForestElement Forest [ MAX_DEPTH ]; + /* forest[i].len >= fib(i+1) */ + /* The string is the concatenation */ + /* of the forest in order of DECREASING */ + /* indices. */ + +void CORD_init_min_len() +{ + register int i; + register size_t last, previous, current; + + min_len[0] = previous = 1; + min_len[1] = last = 2; + for (i = 2; i < MAX_DEPTH; i++) { + current = last + previous; + if (current < last) /* overflow */ current = last; + min_len[i] = current; + previous = last; + last = current; + } + CORD_max_len = last - 1; + min_len_init = 1; +} + + +void CORD_init_forest(ForestElement * forest, size_t max_len) +{ + register int i; + + for (i = 0; i < MAX_DEPTH; i++) { + forest[i].c = 0; + if (min_len[i] > max_len) return; + } + ABORT("Cord too long"); +} + +/* Add a leaf to the appropriate level in the forest, cleaning */ +/* out lower levels as necessary. */ +/* Also works if x is a balanced tree of concatenations; however */ +/* in this case an extra concatenation node may be inserted above x; */ +/* This node should not be counted in the statement of the invariants. */ +void CORD_add_forest(ForestElement * forest, CORD x, size_t len) +{ + register int i = 0; + register CORD sum = CORD_EMPTY; + register size_t sum_len = 0; + + while (len > min_len[i + 1]) { + if (forest[i].c != 0) { + sum = CORD_cat(forest[i].c, sum); + sum_len += forest[i].len; + forest[i].c = 0; + } + i++; + } + /* Sum has depth at most 1 greter than what would be required */ + /* for balance. */ + sum = CORD_cat(sum, x); + sum_len += len; + /* If x was a leaf, then sum is now balanced. To see this */ + /* consider the two cases in which forest[i-1] either is or is */ + /* not empty. */ + while (sum_len >= min_len[i]) { + if (forest[i].c != 0) { + sum = CORD_cat(forest[i].c, sum); + sum_len += forest[i].len; + /* This is again balanced, since sum was balanced, and has */ + /* allowable depth that differs from i by at most 1. */ + forest[i].c = 0; + } + i++; + } + i--; + forest[i].c = sum; + forest[i].len = sum_len; +} + +CORD CORD_concat_forest(ForestElement * forest, size_t expected_len) +{ + register int i = 0; + CORD sum = 0; + size_t sum_len = 0; + + while (sum_len != expected_len) { + if (forest[i].c != 0) { + sum = CORD_cat(forest[i].c, sum); + sum_len += forest[i].len; + } + i++; + } + return(sum); +} + +/* Insert the frontier of x into forest. Balanced subtrees are */ +/* treated as leaves. This potentially adds one to the depth */ +/* of the final tree. */ +void CORD_balance_insert(CORD x, size_t len, ForestElement * forest) +{ + register int depth; + + if (CORD_IS_STRING(x)) { + CORD_add_forest(forest, x, len); + } else if (IS_CONCATENATION(x) + && ((depth = DEPTH(x)) >= MAX_DEPTH + || len < min_len[depth])) { + register struct Concatenation * conc + = &(((CordRep *)x) -> concatenation); + size_t left_len = LEFT_LEN(conc); + + CORD_balance_insert(conc -> left, left_len, forest); + CORD_balance_insert(conc -> right, len - left_len, forest); + } else /* function or balanced */ { + CORD_add_forest(forest, x, len); + } +} + + +CORD CORD_balance(CORD x) +{ + Forest forest; + register size_t len; + + if (x == 0) return(0); + if (CORD_IS_STRING(x)) return(x); + if (!min_len_init) CORD_init_min_len(); + len = LEN(x); + CORD_init_forest(forest, len); + CORD_balance_insert(x, len, forest); + return(CORD_concat_forest(forest, len)); +} + + +/* Position primitives */ + +/* Private routines to deal with the hard cases only: */ + +/* P contains a prefix of the path to cur_pos. Extend it to a full */ +/* path and set up leaf info. */ +/* Return 0 if past the end of cord, 1 o.w. */ +void CORD__extend_path(register CORD_pos p) +{ + register struct CORD_pe * current_pe = &(p[0].path[p[0].path_len]); + register CORD top = current_pe -> pe_cord; + register size_t pos = p[0].cur_pos; + register size_t top_pos = current_pe -> pe_start_pos; + register size_t top_len = GEN_LEN(top); + + /* Fill in the rest of the path. */ + while(!CORD_IS_STRING(top) && IS_CONCATENATION(top)) { + register struct Concatenation * conc = + &(((CordRep *)top) -> concatenation); + register size_t left_len; + + left_len = LEFT_LEN(conc); + current_pe++; + if (pos >= top_pos + left_len) { + current_pe -> pe_cord = top = conc -> right; + current_pe -> pe_start_pos = top_pos = top_pos + left_len; + top_len -= left_len; + } else { + current_pe -> pe_cord = top = conc -> left; + current_pe -> pe_start_pos = top_pos; + top_len = left_len; + } + p[0].path_len++; + } + /* Fill in leaf description for fast access. */ + if (CORD_IS_STRING(top)) { + p[0].cur_leaf = top; + p[0].cur_start = top_pos; + p[0].cur_end = top_pos + top_len; + } else { + p[0].cur_end = 0; + } + if (pos >= top_pos + top_len) p[0].path_len = CORD_POS_INVALID; +} + +char CORD__pos_fetch(register CORD_pos p) +{ + /* Leaf is a function node */ + struct CORD_pe * pe = &((p)[0].path[(p)[0].path_len]); + CORD leaf = pe -> pe_cord; + register struct Function * f = &(((CordRep *)leaf) -> function); + + if (!IS_FUNCTION(leaf)) ABORT("CORD_pos_fetch: bad leaf"); + return ((*(f -> fn))(p[0].cur_pos - pe -> pe_start_pos, f -> client_data)); +} + +void CORD__next(register CORD_pos p) +{ + register size_t cur_pos = p[0].cur_pos + 1; + register struct CORD_pe * current_pe = &((p)[0].path[(p)[0].path_len]); + register CORD leaf = current_pe -> pe_cord; + + /* Leaf is not a string or we're at end of leaf */ + p[0].cur_pos = cur_pos; + if (!CORD_IS_STRING(leaf)) { + /* Function leaf */ + register struct Function * f = &(((CordRep *)leaf) -> function); + register size_t start_pos = current_pe -> pe_start_pos; + register size_t end_pos = start_pos + f -> len; + + if (cur_pos < end_pos) { + /* Fill cache and return. */ + register size_t i; + register size_t limit = cur_pos + FUNCTION_BUF_SZ; + register CORD_fn fn = f -> fn; + register void * client_data = f -> client_data; + + if (limit > end_pos) { + limit = end_pos; + } + for (i = cur_pos; i < limit; i++) { + p[0].function_buf[i - cur_pos] = + (*fn)(i - start_pos, client_data); + } + p[0].cur_start = cur_pos; + p[0].cur_leaf = p[0].function_buf; + p[0].cur_end = limit; + return; + } + } + /* End of leaf */ + /* Pop the stack until we find two concatenation nodes with the */ + /* same start position: this implies we were in left part. */ + { + while (p[0].path_len > 0 + && current_pe[0].pe_start_pos != current_pe[-1].pe_start_pos) { + p[0].path_len--; + current_pe--; + } + if (p[0].path_len == 0) { + p[0].path_len = CORD_POS_INVALID; + return; + } + } + p[0].path_len--; + CORD__extend_path(p); +} + +void CORD__prev(register CORD_pos p) +{ + register struct CORD_pe * pe = &(p[0].path[p[0].path_len]); + + if (p[0].cur_pos == 0) { + p[0].path_len = CORD_POS_INVALID; + return; + } + p[0].cur_pos--; + if (p[0].cur_pos >= pe -> pe_start_pos) return; + + /* Beginning of leaf */ + + /* Pop the stack until we find two concatenation nodes with the */ + /* different start position: this implies we were in right part. */ + { + register struct CORD_pe * current_pe = &((p)[0].path[(p)[0].path_len]); + + while (p[0].path_len > 0 + && current_pe[0].pe_start_pos == current_pe[-1].pe_start_pos) { + p[0].path_len--; + current_pe--; + } + } + p[0].path_len--; + CORD__extend_path(p); +} + +#undef CORD_pos_fetch +#undef CORD_next +#undef CORD_prev +#undef CORD_pos_to_index +#undef CORD_pos_to_cord +#undef CORD_pos_valid + +char CORD_pos_fetch(register CORD_pos p) +{ + if (p[0].cur_start <= p[0].cur_pos && p[0].cur_pos < p[0].cur_end) { + return(p[0].cur_leaf[p[0].cur_pos - p[0].cur_start]); + } else { + return(CORD__pos_fetch(p)); + } +} + +void CORD_next(CORD_pos p) +{ + if (p[0].cur_pos < p[0].cur_end - 1) { + p[0].cur_pos++; + } else { + CORD__next(p); + } +} + +void CORD_prev(CORD_pos p) +{ + if (p[0].cur_end != 0 && p[0].cur_pos > p[0].cur_start) { + p[0].cur_pos--; + } else { + CORD__prev(p); + } +} + +size_t CORD_pos_to_index(CORD_pos p) +{ + return(p[0].cur_pos); +} + +CORD CORD_pos_to_cord(CORD_pos p) +{ + return(p[0].path[0].pe_cord); +} + +int CORD_pos_valid(CORD_pos p) +{ + return(p[0].path_len != CORD_POS_INVALID); +} + +void CORD_set_pos(CORD_pos p, CORD x, size_t i) +{ + if (x == CORD_EMPTY) { + p[0].path_len = CORD_POS_INVALID; + return; + } + p[0].path[0].pe_cord = x; + p[0].path[0].pe_start_pos = 0; + p[0].path_len = 0; + p[0].cur_pos = i; + CORD__extend_path(p); +} Added: llvm-gcc-4.2/trunk/boehm-gc/cord/cordprnt.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/cord/cordprnt.c?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/cord/cordprnt.c (added) +++ llvm-gcc-4.2/trunk/boehm-gc/cord/cordprnt.c Thu Nov 8 16:56:19 2007 @@ -0,0 +1,396 @@ +/* + * Copyright (c) 1993-1994 by Xerox Corporation. All rights reserved. + * + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * + * Permission is hereby granted to use or copy this program + * for any purpose, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is granted, + * provided the above notices are retained, and a notice that the code was + * modified is included with the above copyright notice. + */ +/* An sprintf implementation that understands cords. This is probably */ +/* not terribly portable. It assumes an ANSI stdarg.h. It further */ +/* assumes that I can make copies of va_list variables, and read */ +/* arguments repeatedly by applyting va_arg to the copies. This */ +/* could be avoided at some performance cost. */ +/* We also assume that unsigned and signed integers of various kinds */ +/* have the same sizes, and can be cast back and forth. */ +/* We assume that void * and char * have the same size. */ +/* All this cruft is needed because we want to rely on the underlying */ +/* sprintf implementation whenever possible. */ +/* Boehm, September 21, 1995 6:00 pm PDT */ + +#include "cord.h" +#include "ec.h" +#include +#include +#include +#include "gc.h" + +#define CONV_SPEC_LEN 50 /* Maximum length of a single */ + /* conversion specification. */ +#define CONV_RESULT_LEN 50 /* Maximum length of any */ + /* conversion with default */ + /* width and prec. */ + + +static int ec_len(CORD_ec x) +{ + return(CORD_len(x[0].ec_cord) + (x[0].ec_bufptr - x[0].ec_buf)); +} + +/* Possible nonumeric precision values. */ +# define NONE -1 +# define VARIABLE -2 +/* Copy the conversion specification from CORD_pos into the buffer buf */ +/* Return negative on error. */ +/* Source initially points one past the leading %. */ +/* It is left pointing at the conversion type. */ +/* Assign field width and precision to *width and *prec. */ +/* If width or prec is *, VARIABLE is assigned. */ +/* Set *left to 1 if left adjustment flag is present. */ +/* Set *long_arg to 1 if long flag ('l' or 'L') is present, or to */ +/* -1 if 'h' is present. */ +static int extract_conv_spec(CORD_pos source, char *buf, + int * width, int *prec, int *left, int * long_arg) +{ + register int result = 0; + register int current_number = 0; + register int saw_period = 0; + register int saw_number = 0; + register int chars_so_far = 0; + register char current; + + *width = NONE; + buf[chars_so_far++] = '%'; + while(CORD_pos_valid(source)) { + if (chars_so_far >= CONV_SPEC_LEN) return(-1); + current = CORD_pos_fetch(source); + buf[chars_so_far++] = current; + switch(current) { + case '*': + saw_number = 1; + current_number = VARIABLE; + break; + case '0': + if (!saw_number) { + /* Zero fill flag; ignore */ + break; + } /* otherwise fall through: */ + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + saw_number = 1; + current_number *= 10; + current_number += current - '0'; + break; + case '.': + saw_period = 1; + if(saw_number) { + *width = current_number; + saw_number = 0; + } + current_number = 0; + break; + case 'l': + case 'L': + *long_arg = 1; + current_number = 0; + break; + case 'h': + *long_arg = -1; + current_number = 0; + break; + case ' ': + case '+': + case '#': + current_number = 0; + break; + case '-': + *left = 1; + current_number = 0; + break; + case 'd': + case 'i': + case 'o': + case 'u': + case 'x': + case 'X': + case 'f': + case 'e': + case 'E': + case 'g': + case 'G': + case 'c': + case 'C': + case 's': + case 'S': + case 'p': + case 'n': + case 'r': + goto done; + default: + return(-1); + } + CORD_next(source); + } + return(-1); + done: + if (saw_number) { + if (saw_period) { + *prec = current_number; + } else { + *prec = NONE; + *width = current_number; + } + } else { + *prec = NONE; + } + buf[chars_so_far] = '\0'; + return(result); +} + +int CORD_vsprintf(CORD * out, CORD format, va_list args) +{ + CORD_ec result; + register int count; + register char current; + CORD_pos pos; + char conv_spec[CONV_SPEC_LEN + 1]; + + CORD_ec_init(result); + for (CORD_set_pos(pos, format, 0); CORD_pos_valid(pos); CORD_next(pos)) { + current = CORD_pos_fetch(pos); + if (current == '%') { + CORD_next(pos); + if (!CORD_pos_valid(pos)) return(-1); + current = CORD_pos_fetch(pos); + if (current == '%') { + CORD_ec_append(result, current); + } else { + int width, prec; + int left_adj = 0; + int long_arg = 0; + CORD arg; + size_t len; + + if (extract_conv_spec(pos, conv_spec, + &width, &prec, + &left_adj, &long_arg) < 0) { + return(-1); + } + current = CORD_pos_fetch(pos); + switch(current) { + case 'n': + /* Assign length to next arg */ + if (long_arg == 0) { + int * pos_ptr; + pos_ptr = va_arg(args, int *); + *pos_ptr = ec_len(result); + } else if (long_arg > 0) { + long * pos_ptr; + pos_ptr = va_arg(args, long *); + *pos_ptr = ec_len(result); + } else { + short * pos_ptr; + pos_ptr = va_arg(args, short *); + *pos_ptr = ec_len(result); + } + goto done; + case 'r': + /* Append cord and any padding */ + if (width == VARIABLE) width = va_arg(args, int); + if (prec == VARIABLE) prec = va_arg(args, int); + arg = va_arg(args, CORD); + len = CORD_len(arg); + if (prec != NONE && len > prec) { + if (prec < 0) return(-1); + arg = CORD_substr(arg, 0, prec); + len = prec; + } + if (width != NONE && len < width) { + char * blanks = GC_MALLOC_ATOMIC(width-len+1); + + memset(blanks, ' ', width-len); + blanks[width-len] = '\0'; + if (left_adj) { + arg = CORD_cat(arg, blanks); + } else { + arg = CORD_cat(blanks, arg); + } + } + CORD_ec_append_cord(result, arg); + goto done; + case 'c': + if (width == NONE && prec == NONE) { + register char c; + + c = (char)va_arg(args, int); + CORD_ec_append(result, c); + goto done; + } + break; + case 's': + if (width == NONE && prec == NONE) { + char * str = va_arg(args, char *); + register char c; + + while ((c = *str++)) { + CORD_ec_append(result, c); + } + goto done; + } + break; + default: + break; + } + /* Use standard sprintf to perform conversion */ + { + register char * buf; + va_list vsprintf_args; + int max_size = 0; + int res; +# ifdef __va_copy + __va_copy(vsprintf_args, args); +# else +# if defined(__GNUC__) && !defined(__DJGPP__) /* and probably in other cases */ + va_copy(vsprintf_args, args); +# else + vsprintf_args = args; +# endif +# endif + if (width == VARIABLE) width = va_arg(args, int); + if (prec == VARIABLE) prec = va_arg(args, int); + if (width != NONE) max_size = width; + if (prec != NONE && prec > max_size) max_size = prec; + max_size += CONV_RESULT_LEN; + if (max_size >= CORD_BUFSZ) { + buf = GC_MALLOC_ATOMIC(max_size + 1); + } else { + if (CORD_BUFSZ - (result[0].ec_bufptr-result[0].ec_buf) + < max_size) { + CORD_ec_flush_buf(result); + } + buf = result[0].ec_bufptr; + } + switch(current) { + case 'd': + case 'i': + case 'o': + case 'u': + case 'x': + case 'X': + case 'c': + if (long_arg <= 0) { + (void) va_arg(args, int); + } else if (long_arg > 0) { + (void) va_arg(args, long); + } + break; + case 's': + case 'p': + (void) va_arg(args, char *); + break; + case 'f': + case 'e': + case 'E': + case 'g': + case 'G': + (void) va_arg(args, double); + break; + default: + return(-1); + } + res = vsprintf(buf, conv_spec, vsprintf_args); + len = (size_t)res; + if ((char *)(GC_word)res == buf) { + /* old style vsprintf */ + len = strlen(buf); + } else if (res < 0) { + return(-1); + } + if (buf != result[0].ec_bufptr) { + register char c; + + while ((c = *buf++)) { + CORD_ec_append(result, c); + } + } else { + result[0].ec_bufptr = buf + len; + } + } + done:; + } + } else { + CORD_ec_append(result, current); + } + } + count = ec_len(result); + *out = CORD_balance(CORD_ec_to_cord(result)); + return(count); +} + +int CORD_sprintf(CORD * out, CORD format, ...) +{ + va_list args; + int result; + + va_start(args, format); + result = CORD_vsprintf(out, format, args); + va_end(args); + return(result); +} + +int CORD_fprintf(FILE * f, CORD format, ...) +{ + va_list args; + int result; + CORD out; + + va_start(args, format); + result = CORD_vsprintf(&out, format, args); + va_end(args); + if (result > 0) CORD_put(out, f); + return(result); +} + +int CORD_vfprintf(FILE * f, CORD format, va_list args) +{ + int result; + CORD out; + + result = CORD_vsprintf(&out, format, args); + if (result > 0) CORD_put(out, f); + return(result); +} + +int CORD_printf(CORD format, ...) +{ + va_list args; + int result; + CORD out; + + va_start(args, format); + result = CORD_vsprintf(&out, format, args); + va_end(args); + if (result > 0) CORD_put(out, stdout); + return(result); +} + +int CORD_vprintf(CORD format, va_list args) +{ + int result; + CORD out; + + result = CORD_vsprintf(&out, format, args); + if (result > 0) CORD_put(out, stdout); + return(result); +} Added: llvm-gcc-4.2/trunk/boehm-gc/cord/cordtest.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/cord/cordtest.c?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/cord/cordtest.c (added) +++ llvm-gcc-4.2/trunk/boehm-gc/cord/cordtest.c Thu Nov 8 16:56:19 2007 @@ -0,0 +1,235 @@ +/* + * Copyright (c) 1993-1994 by Xerox Corporation. All rights reserved. + * + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * + * Permission is hereby granted to use or copy this program + * for any purpose, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is granted, + * provided the above notices are retained, and a notice that the code was + * modified is included with the above copyright notice. + */ +/* Boehm, August 24, 1994 11:58 am PDT */ +# include "gc.h" /* For GC_INIT() only */ +# include "cord.h" +# include +# include +# include +/* This is a very incomplete test of the cord package. It knows about */ +/* a few internals of the package (e.g. when C strings are returned) */ +/* that real clients shouldn't rely on. */ + +# define ABORT(string) \ +{ int x = 0; fprintf(stderr, "FAILED: %s\n", string); x = 1 / x; abort(); } + +int count; + +int test_fn(char c, void * client_data) +{ + if (client_data != (void *)13) ABORT("bad client data"); + if (count < 64*1024+1) { + if ((count & 1) == 0) { + if (c != 'b') ABORT("bad char"); + } else { + if (c != 'a') ABORT("bad char"); + } + count++; + return(0); + } else { + if (c != 'c') ABORT("bad char"); + count++; + return(1); + } +} + +char id_cord_fn(size_t i, void * client_data) +{ + return((char)i); +} + +void test_basics() +{ + CORD x = CORD_from_char_star("ab"); + register int i; + char c; + CORD y; + CORD_pos p; + + x = CORD_cat(x,x); + if (!CORD_IS_STRING(x)) ABORT("short cord should usually be a string"); + if (strcmp(x, "abab") != 0) ABORT("bad CORD_cat result"); + + for (i = 1; i < 16; i++) { + x = CORD_cat(x,x); + } + x = CORD_cat(x,"c"); + if (CORD_len(x) != 128*1024+1) ABORT("bad length"); + + count = 0; + if (CORD_iter5(x, 64*1024-1, test_fn, CORD_NO_FN, (void *)13) == 0) { + ABORT("CORD_iter5 failed"); + } + if (count != 64*1024 + 2) ABORT("CORD_iter5 failed"); + + count = 0; + CORD_set_pos(p, x, 64*1024-1); + while(CORD_pos_valid(p)) { + (void) test_fn(CORD_pos_fetch(p), (void *)13); + CORD_next(p); + } + if (count != 64*1024 + 2) ABORT("Position based iteration failed"); + + y = CORD_substr(x, 1023, 5); + if (!CORD_IS_STRING(y)) ABORT("short cord should usually be a string"); + if (strcmp(y, "babab") != 0) ABORT("bad CORD_substr result"); + + y = CORD_substr(x, 1024, 8); + if (!CORD_IS_STRING(y)) ABORT("short cord should usually be a string"); + if (strcmp(y, "abababab") != 0) ABORT("bad CORD_substr result"); + + y = CORD_substr(x, 128*1024-1, 8); + if (!CORD_IS_STRING(y)) ABORT("short cord should usually be a string"); + if (strcmp(y, "bc") != 0) ABORT("bad CORD_substr result"); + + x = CORD_balance(x); + if (CORD_len(x) != 128*1024+1) ABORT("bad length"); + + count = 0; + if (CORD_iter5(x, 64*1024-1, test_fn, CORD_NO_FN, (void *)13) == 0) { + ABORT("CORD_iter5 failed"); + } + if (count != 64*1024 + 2) ABORT("CORD_iter5 failed"); + + y = CORD_substr(x, 1023, 5); + if (!CORD_IS_STRING(y)) ABORT("short cord should usually be a string"); + if (strcmp(y, "babab") != 0) ABORT("bad CORD_substr result"); + y = CORD_from_fn(id_cord_fn, 0, 13); + i = 0; + CORD_set_pos(p, y, i); + while(CORD_pos_valid(p)) { + c = CORD_pos_fetch(p); + if(c != i) ABORT("Traversal of function node failed"); + CORD_next(p); i++; + } + if (i != 13) ABORT("Bad apparent length for function node"); +} + +void test_extras() +{ +# if defined(__OS2__) || defined(__DJGPP__) +# define FNAME1 "tmp1" +# define FNAME2 "tmp2" +# elif defined(AMIGA) +# define FNAME1 "T:tmp1" +# define FNAME2 "T:tmp2" +# else +# define FNAME1 "/tmp/cord_test" +# define FNAME2 "/tmp/cord_test2" +# endif + register int i; + CORD y = "abcdefghijklmnopqrstuvwxyz0123456789"; + CORD x = "{}"; + CORD w, z; + FILE *f; + FILE *f1a, *f1b, *f2; + + w = CORD_cat(CORD_cat(y,y),y); + z = CORD_catn(3,y,y,y); + if (CORD_cmp(w,z) != 0) ABORT("CORD_catn comparison wrong"); + for (i = 1; i < 100; i++) { + x = CORD_cat(x, y); + } + z = CORD_balance(x); + if (CORD_cmp(x,z) != 0) ABORT("balanced string comparison wrong"); + if (CORD_cmp(x,CORD_cat(z, CORD_nul(13))) >= 0) ABORT("comparison 2"); + if (CORD_cmp(CORD_cat(x, CORD_nul(13)), z) <= 0) ABORT("comparison 3"); + if (CORD_cmp(x,CORD_cat(z, "13")) >= 0) ABORT("comparison 4"); + if ((f = fopen(FNAME1, "w")) == 0) ABORT("open failed"); + if (CORD_put(z,f) == EOF) ABORT("CORD_put failed"); + if (fclose(f) == EOF) ABORT("fclose failed"); + w = CORD_from_file(f1a = fopen(FNAME1, "rb")); + if (CORD_len(w) != CORD_len(z)) ABORT("file length wrong"); + if (CORD_cmp(w,z) != 0) ABORT("file comparison wrong"); + if (CORD_cmp(CORD_substr(w, 50*36+2, 36), y) != 0) + ABORT("file substr wrong"); + z = CORD_from_file_lazy(f1b = fopen(FNAME1, "rb")); + if (CORD_cmp(w,z) != 0) ABORT("File conversions differ"); + if (CORD_chr(w, 0, '9') != 37) ABORT("CORD_chr failed 1"); + if (CORD_chr(w, 3, 'a') != 38) ABORT("CORD_chr failed 2"); + if (CORD_rchr(w, CORD_len(w) - 1, '}') != 1) ABORT("CORD_rchr failed"); + x = y; + for (i = 1; i < 14; i++) { + x = CORD_cat(x,x); + } + if ((f = fopen(FNAME2, "w")) == 0) ABORT("2nd open failed"); +# ifdef __DJGPP__ + /* FIXME: DJGPP workaround. Why does this help? */ + if (fflush(f) != 0) ABORT("fflush failed"); +# endif + if (CORD_put(x,f) == EOF) ABORT("CORD_put failed"); + if (fclose(f) == EOF) ABORT("fclose failed"); + w = CORD_from_file(f2 = fopen(FNAME2, "rb")); + if (CORD_len(w) != CORD_len(x)) ABORT("file length wrong"); + if (CORD_cmp(w,x) != 0) ABORT("file comparison wrong"); + if (CORD_cmp(CORD_substr(w, 1000*36, 36), y) != 0) + ABORT("file substr wrong"); + if (strcmp(CORD_to_char_star(CORD_substr(w, 1000*36, 36)), y) != 0) + ABORT("char * file substr wrong"); + if (strcmp(CORD_substr(w, 1000*36, 2), "ab") != 0) + ABORT("short file substr wrong"); + if (CORD_str(x,1,"9a") != 35) ABORT("CORD_str failed 1"); + if (CORD_str(x,0,"9abcdefghijk") != 35) ABORT("CORD_str failed 2"); + if (CORD_str(x,0,"9abcdefghijx") != CORD_NOT_FOUND) + ABORT("CORD_str failed 3"); + if (CORD_str(x,0,"9>") != CORD_NOT_FOUND) ABORT("CORD_str failed 4"); + if (remove(FNAME1) != 0) { + /* On some systems, e.g. OS2, this may fail if f1 is still open. */ + if ((fclose(f1a) == EOF) & (fclose(f1b) == EOF)) + ABORT("fclose(f1) failed"); + if (remove(FNAME1) != 0) ABORT("remove 1 failed"); + } + if (remove(FNAME2) != 0) { + if (fclose(f2) == EOF) ABORT("fclose(f2) failed"); + if (remove(FNAME2) != 0) ABORT("remove 2 failed"); + } +} + +void test_printf() +{ + CORD result; + char result2[200]; + long l; + short s; + CORD x; + + if (CORD_sprintf(&result, "%7.2f%ln", 3.14159F, &l) != 7) + ABORT("CORD_sprintf failed 1"); + if (CORD_cmp(result, " 3.14") != 0)ABORT("CORD_sprintf goofed 1"); + if (l != 7) ABORT("CORD_sprintf goofed 2"); + if (CORD_sprintf(&result, "%-7.2s%hn%c%s", "abcd", &s, 'x', "yz") != 10) + ABORT("CORD_sprintf failed 2"); + if (CORD_cmp(result, "ab xyz") != 0)ABORT("CORD_sprintf goofed 3"); + if (s != 7) ABORT("CORD_sprintf goofed 4"); + x = "abcdefghij"; + x = CORD_cat(x,x); + x = CORD_cat(x,x); + x = CORD_cat(x,x); + if (CORD_sprintf(&result, "->%-120.78r!\n", x) != 124) + ABORT("CORD_sprintf failed 3"); + (void) sprintf(result2, "->%-120.78s!\n", CORD_to_char_star(x)); + if (CORD_cmp(result, result2) != 0)ABORT("CORD_sprintf goofed 5"); +} + +int main() +{ +# ifdef THINK_C + printf("cordtest:\n"); +# endif + GC_INIT(); + test_basics(); + test_extras(); + test_printf(); + CORD_fprintf(stderr, "SUCCEEDED\n"); + return(0); +} Added: llvm-gcc-4.2/trunk/boehm-gc/cord/cordxtra.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/cord/cordxtra.c?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/cord/cordxtra.c (added) +++ llvm-gcc-4.2/trunk/boehm-gc/cord/cordxtra.c Thu Nov 8 16:56:19 2007 @@ -0,0 +1,621 @@ +/* + * Copyright (c) 1993-1994 by Xerox Corporation. All rights reserved. + * + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * + * Permission is hereby granted to use or copy this program + * for any purpose, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is granted, + * provided the above notices are retained, and a notice that the code was + * modified is included with the above copyright notice. + * + * Author: Hans-J. Boehm (boehm at parc.xerox.com) + */ +/* + * These are functions on cords that do not need to understand their + * implementation. They serve also serve as example client code for + * cord_basics. + */ +/* Boehm, December 8, 1995 1:53 pm PST */ +# include +# include +# include +# include +# include "cord.h" +# include "ec.h" +# define I_HIDE_POINTERS /* So we get access to allocation lock. */ + /* We use this for lazy file reading, */ + /* so that we remain independent */ + /* of the threads primitives. */ +# include "gc.h" + +/* For now we assume that pointer reads and writes are atomic, */ +/* i.e. another thread always sees the state before or after */ +/* a write. This might be false on a Motorola M68K with */ +/* pointers that are not 32-bit aligned. But there probably */ +/* aren't too many threads packages running on those. */ +# define ATOMIC_WRITE(x,y) (x) = (y) +# define ATOMIC_READ(x) (*(x)) + +/* The standard says these are in stdio.h, but they aren't always: */ +# ifndef SEEK_SET +# define SEEK_SET 0 +# endif +# ifndef SEEK_END +# define SEEK_END 2 +# endif + +# define BUFSZ 2048 /* Size of stack allocated buffers when */ + /* we want large buffers. */ + +typedef void (* oom_fn)(void); + +# define OUT_OF_MEMORY { if (CORD_oom_fn != (oom_fn) 0) (*CORD_oom_fn)(); \ + ABORT("Out of memory\n"); } +# define ABORT(msg) { fprintf(stderr, "%s\n", msg); abort(); } + +CORD CORD_cat_char(CORD x, char c) +{ + register char * string; + + if (c == '\0') return(CORD_cat(x, CORD_nul(1))); + string = GC_MALLOC_ATOMIC(2); + if (string == 0) OUT_OF_MEMORY; + string[0] = c; + string[1] = '\0'; + return(CORD_cat_char_star(x, string, 1)); +} + +CORD CORD_catn(int nargs, ...) +{ + register CORD result = CORD_EMPTY; + va_list args; + register int i; + + va_start(args, nargs); + for (i = 0; i < nargs; i++) { + register CORD next = va_arg(args, CORD); + result = CORD_cat(result, next); + } + va_end(args); + return(result); +} + +typedef struct { + size_t len; + size_t count; + char * buf; +} CORD_fill_data; + +int CORD_fill_proc(char c, void * client_data) +{ + register CORD_fill_data * d = (CORD_fill_data *)client_data; + register size_t count = d -> count; + + (d -> buf)[count] = c; + d -> count = ++count; + if (count >= d -> len) { + return(1); + } else { + return(0); + } +} + +int CORD_batched_fill_proc(const char * s, void * client_data) +{ + register CORD_fill_data * d = (CORD_fill_data *)client_data; + register size_t count = d -> count; + register size_t max = d -> len; + register char * buf = d -> buf; + register const char * t = s; + + while((buf[count] = *t++) != '\0') { + count++; + if (count >= max) { + d -> count = count; + return(1); + } + } + d -> count = count; + return(0); +} + +/* Fill buf with len characters starting at i. */ +/* Assumes len characters are available. */ +void CORD_fill_buf(CORD x, size_t i, size_t len, char * buf) +{ + CORD_fill_data fd; + + fd.len = len; + fd.buf = buf; + fd.count = 0; + (void)CORD_iter5(x, i, CORD_fill_proc, CORD_batched_fill_proc, &fd); +} + +int CORD_cmp(CORD x, CORD y) +{ + CORD_pos xpos; + CORD_pos ypos; + register size_t avail, yavail; + + if (y == CORD_EMPTY) return(x != CORD_EMPTY); + if (x == CORD_EMPTY) return(-1); + if (CORD_IS_STRING(y) && CORD_IS_STRING(x)) return(strcmp(x,y)); + CORD_set_pos(xpos, x, 0); + CORD_set_pos(ypos, y, 0); + for(;;) { + if (!CORD_pos_valid(xpos)) { + if (CORD_pos_valid(ypos)) { + return(-1); + } else { + return(0); + } + } + if (!CORD_pos_valid(ypos)) { + return(1); + } + if ((avail = CORD_pos_chars_left(xpos)) <= 0 + || (yavail = CORD_pos_chars_left(ypos)) <= 0) { + register char xcurrent = CORD_pos_fetch(xpos); + register char ycurrent = CORD_pos_fetch(ypos); + if (xcurrent != ycurrent) return(xcurrent - ycurrent); + CORD_next(xpos); + CORD_next(ypos); + } else { + /* process as many characters as we can */ + register int result; + + if (avail > yavail) avail = yavail; + result = strncmp(CORD_pos_cur_char_addr(xpos), + CORD_pos_cur_char_addr(ypos), avail); + if (result != 0) return(result); + CORD_pos_advance(xpos, avail); + CORD_pos_advance(ypos, avail); + } + } +} + +int CORD_ncmp(CORD x, size_t x_start, CORD y, size_t y_start, size_t len) +{ + CORD_pos xpos; + CORD_pos ypos; + register size_t count; + register long avail, yavail; + + CORD_set_pos(xpos, x, x_start); + CORD_set_pos(ypos, y, y_start); + for(count = 0; count < len;) { + if (!CORD_pos_valid(xpos)) { + if (CORD_pos_valid(ypos)) { + return(-1); + } else { + return(0); + } + } + if (!CORD_pos_valid(ypos)) { + return(1); + } + if ((avail = CORD_pos_chars_left(xpos)) <= 0 + || (yavail = CORD_pos_chars_left(ypos)) <= 0) { + register char xcurrent = CORD_pos_fetch(xpos); + register char ycurrent = CORD_pos_fetch(ypos); + if (xcurrent != ycurrent) return(xcurrent - ycurrent); + CORD_next(xpos); + CORD_next(ypos); + count++; + } else { + /* process as many characters as we can */ + register int result; + + if (avail > yavail) avail = yavail; + count += avail; + if (count > len) avail -= (count - len); + result = strncmp(CORD_pos_cur_char_addr(xpos), + CORD_pos_cur_char_addr(ypos), (size_t)avail); + if (result != 0) return(result); + CORD_pos_advance(xpos, (size_t)avail); + CORD_pos_advance(ypos, (size_t)avail); + } + } + return(0); +} + +char * CORD_to_char_star(CORD x) +{ + register size_t len = CORD_len(x); + char * result = GC_MALLOC_ATOMIC(len + 1); + + if (result == 0) OUT_OF_MEMORY; + CORD_fill_buf(x, 0, len, result); + result[len] = '\0'; + return(result); +} + +CORD CORD_from_char_star(const char *s) +{ + char * result; + size_t len = strlen(s); + + if (0 == len) return(CORD_EMPTY); + result = GC_MALLOC_ATOMIC(len + 1); + if (result == 0) OUT_OF_MEMORY; + memcpy(result, s, len+1); + return(result); +} + +const char * CORD_to_const_char_star(CORD x) +{ + if (x == 0) return(""); + if (CORD_IS_STRING(x)) return((const char *)x); + return(CORD_to_char_star(x)); +} + +char CORD_fetch(CORD x, size_t i) +{ + CORD_pos xpos; + + CORD_set_pos(xpos, x, i); + if (!CORD_pos_valid(xpos)) ABORT("bad index?"); + return(CORD_pos_fetch(xpos)); +} + + +int CORD_put_proc(char c, void * client_data) +{ + register FILE * f = (FILE *)client_data; + + return(putc(c, f) == EOF); +} + +int CORD_batched_put_proc(const char * s, void * client_data) +{ + register FILE * f = (FILE *)client_data; + + return(fputs(s, f) == EOF); +} + + +int CORD_put(CORD x, FILE * f) +{ + if (CORD_iter5(x, 0, CORD_put_proc, CORD_batched_put_proc, f)) { + return(EOF); + } else { + return(1); + } +} + +typedef struct { + size_t pos; /* Current position in the cord */ + char target; /* Character we're looking for */ +} chr_data; + +int CORD_chr_proc(char c, void * client_data) +{ + register chr_data * d = (chr_data *)client_data; + + if (c == d -> target) return(1); + (d -> pos) ++; + return(0); +} + +int CORD_rchr_proc(char c, void * client_data) +{ + register chr_data * d = (chr_data *)client_data; + + if (c == d -> target) return(1); + (d -> pos) --; + return(0); +} + +int CORD_batched_chr_proc(const char *s, void * client_data) +{ + register chr_data * d = (chr_data *)client_data; + register char * occ = strchr(s, d -> target); + + if (occ == 0) { + d -> pos += strlen(s); + return(0); + } else { + d -> pos += occ - s; + return(1); + } +} + +size_t CORD_chr(CORD x, size_t i, int c) +{ + chr_data d; + + d.pos = i; + d.target = c; + if (CORD_iter5(x, i, CORD_chr_proc, CORD_batched_chr_proc, &d)) { + return(d.pos); + } else { + return(CORD_NOT_FOUND); + } +} + +size_t CORD_rchr(CORD x, size_t i, int c) +{ + chr_data d; + + d.pos = i; + d.target = c; + if (CORD_riter4(x, i, CORD_rchr_proc, &d)) { + return(d.pos); + } else { + return(CORD_NOT_FOUND); + } +} + +/* Find the first occurrence of s in x at position start or later. */ +/* This uses an asymptotically poor algorithm, which should typically */ +/* perform acceptably. We compare the first few characters directly, */ +/* and call CORD_ncmp whenever there is a partial match. */ +/* This has the advantage that we allocate very little, or not at all. */ +/* It's very fast if there are few close misses. */ +size_t CORD_str(CORD x, size_t start, CORD s) +{ + CORD_pos xpos; + size_t xlen = CORD_len(x); + size_t slen; + register size_t start_len; + const char * s_start; + unsigned long s_buf = 0; /* The first few characters of s */ + unsigned long x_buf = 0; /* Start of candidate substring. */ + /* Initialized only to make compilers */ + /* happy. */ + unsigned long mask = 0; + register size_t i; + register size_t match_pos; + + if (s == CORD_EMPTY) return(start); + if (CORD_IS_STRING(s)) { + s_start = s; + slen = strlen(s); + } else { + s_start = CORD_to_char_star(CORD_substr(s, 0, sizeof(unsigned long))); + slen = CORD_len(s); + } + if (xlen < start || xlen - start < slen) return(CORD_NOT_FOUND); + start_len = slen; + if (start_len > sizeof(unsigned long)) start_len = sizeof(unsigned long); + CORD_set_pos(xpos, x, start); + for (i = 0; i < start_len; i++) { + mask <<= 8; + mask |= 0xff; + s_buf <<= 8; + s_buf |= (unsigned char)s_start[i]; + x_buf <<= 8; + x_buf |= (unsigned char)CORD_pos_fetch(xpos); + CORD_next(xpos); + } + for (match_pos = start; ; match_pos++) { + if ((x_buf & mask) == s_buf) { + if (slen == start_len || + CORD_ncmp(x, match_pos + start_len, + s, start_len, slen - start_len) == 0) { + return(match_pos); + } + } + if ( match_pos == xlen - slen ) { + return(CORD_NOT_FOUND); + } + x_buf <<= 8; + x_buf |= (unsigned char)CORD_pos_fetch(xpos); + CORD_next(xpos); + } +} + +void CORD_ec_flush_buf(CORD_ec x) +{ + register size_t len = x[0].ec_bufptr - x[0].ec_buf; + char * s; + + if (len == 0) return; + s = GC_MALLOC_ATOMIC(len+1); + memcpy(s, x[0].ec_buf, len); + s[len] = '\0'; + x[0].ec_cord = CORD_cat_char_star(x[0].ec_cord, s, len); + x[0].ec_bufptr = x[0].ec_buf; +} + +void CORD_ec_append_cord(CORD_ec x, CORD s) +{ + CORD_ec_flush_buf(x); + x[0].ec_cord = CORD_cat(x[0].ec_cord, s); +} + +/*ARGSUSED*/ +char CORD_nul_func(size_t i, void * client_data) +{ + return((char)(unsigned long)client_data); +} + + +CORD CORD_chars(char c, size_t i) +{ + return(CORD_from_fn(CORD_nul_func, (void *)(unsigned long)c, i)); +} + +CORD CORD_from_file_eager(FILE * f) +{ + register int c; + CORD_ec ecord; + + CORD_ec_init(ecord); + for(;;) { + c = getc(f); + if (c == 0) { + /* Append the right number of NULs */ + /* Note that any string of NULs is rpresented in 4 words, */ + /* independent of its length. */ + register size_t count = 1; + + CORD_ec_flush_buf(ecord); + while ((c = getc(f)) == 0) count++; + ecord[0].ec_cord = CORD_cat(ecord[0].ec_cord, CORD_nul(count)); + } + if (c == EOF) break; + CORD_ec_append(ecord, c); + } + (void) fclose(f); + return(CORD_balance(CORD_ec_to_cord(ecord))); +} + +/* The state maintained for a lazily read file consists primarily */ +/* of a large direct-mapped cache of previously read values. */ +/* We could rely more on stdio buffering. That would have 2 */ +/* disadvantages: */ +/* 1) Empirically, not all fseek implementations preserve the */ +/* buffer whenever they could. */ +/* 2) It would fail if 2 different sections of a long cord */ +/* were being read alternately. */ +/* We do use the stdio buffer for read ahead. */ +/* To guarantee thread safety in the presence of atomic pointer */ +/* writes, cache lines are always replaced, and never modified in */ +/* place. */ + +# define LOG_CACHE_SZ 14 +# define CACHE_SZ (1 << LOG_CACHE_SZ) +# define LOG_LINE_SZ 9 +# define LINE_SZ (1 << LOG_LINE_SZ) + +typedef struct { + size_t tag; + char data[LINE_SZ]; + /* data[i%LINE_SZ] = ith char in file if tag = i/LINE_SZ */ +} cache_line; + +typedef struct { + FILE * lf_file; + size_t lf_current; /* Current file pointer value */ + cache_line * volatile lf_cache[CACHE_SZ/LINE_SZ]; +} lf_state; + +# define MOD_CACHE_SZ(n) ((n) & (CACHE_SZ - 1)) +# define DIV_CACHE_SZ(n) ((n) >> LOG_CACHE_SZ) +# define MOD_LINE_SZ(n) ((n) & (LINE_SZ - 1)) +# define DIV_LINE_SZ(n) ((n) >> LOG_LINE_SZ) +# define LINE_START(n) ((n) & ~(LINE_SZ - 1)) + +typedef struct { + lf_state * state; + size_t file_pos; /* Position of needed character. */ + cache_line * new_cache; +} refill_data; + +/* Executed with allocation lock. */ +static char refill_cache(client_data) +refill_data * client_data; +{ + register lf_state * state = client_data -> state; + register size_t file_pos = client_data -> file_pos; + FILE *f = state -> lf_file; + size_t line_start = LINE_START(file_pos); + size_t line_no = DIV_LINE_SZ(MOD_CACHE_SZ(file_pos)); + cache_line * new_cache = client_data -> new_cache; + + if (line_start != state -> lf_current + && fseek(f, line_start, SEEK_SET) != 0) { + ABORT("fseek failed"); + } + if (fread(new_cache -> data, sizeof(char), LINE_SZ, f) + <= file_pos - line_start) { + ABORT("fread failed"); + } + new_cache -> tag = DIV_LINE_SZ(file_pos); + /* Store barrier goes here. */ + ATOMIC_WRITE(state -> lf_cache[line_no], new_cache); + state -> lf_current = line_start + LINE_SZ; + return(new_cache->data[MOD_LINE_SZ(file_pos)]); +} + +char CORD_lf_func(size_t i, void * client_data) +{ + register lf_state * state = (lf_state *)client_data; + register cache_line * volatile * cl_addr = + &(state -> lf_cache[DIV_LINE_SZ(MOD_CACHE_SZ(i))]); + register cache_line * cl = (cache_line *)ATOMIC_READ(cl_addr); + + if (cl == 0 || cl -> tag != DIV_LINE_SZ(i)) { + /* Cache miss */ + refill_data rd; + + rd.state = state; + rd.file_pos = i; + rd.new_cache = GC_NEW_ATOMIC(cache_line); + if (rd.new_cache == 0) OUT_OF_MEMORY; + return((char)(GC_word) + GC_call_with_alloc_lock((GC_fn_type) refill_cache, &rd)); + } + return(cl -> data[MOD_LINE_SZ(i)]); +} + +/*ARGSUSED*/ +void CORD_lf_close_proc(void * obj, void * client_data) +{ + if (fclose(((lf_state *)obj) -> lf_file) != 0) { + ABORT("CORD_lf_close_proc: fclose failed"); + } +} + +CORD CORD_from_file_lazy_inner(FILE * f, size_t len) +{ + register lf_state * state = GC_NEW(lf_state); + register int i; + + if (state == 0) OUT_OF_MEMORY; + if (len != 0) { + /* Dummy read to force buffer allocation. */ + /* This greatly increases the probability */ + /* of avoiding deadlock if buffer allocation */ + /* is redirected to GC_malloc and the */ + /* world is multithreaded. */ + char buf[1]; + + (void) fread(buf, 1, 1, f); + rewind(f); + } + state -> lf_file = f; + for (i = 0; i < CACHE_SZ/LINE_SZ; i++) { + state -> lf_cache[i] = 0; + } + state -> lf_current = 0; + GC_REGISTER_FINALIZER(state, CORD_lf_close_proc, 0, 0, 0); + return(CORD_from_fn(CORD_lf_func, state, len)); +} + +CORD CORD_from_file_lazy(FILE * f) +{ + register long len; + + if (fseek(f, 0l, SEEK_END) != 0) { + ABORT("Bad fd argument - fseek failed"); + } + if ((len = ftell(f)) < 0) { + ABORT("Bad fd argument - ftell failed"); + } + rewind(f); + return(CORD_from_file_lazy_inner(f, (size_t)len)); +} + +# define LAZY_THRESHOLD (128*1024 + 1) + +CORD CORD_from_file(FILE * f) +{ + register long len; + + if (fseek(f, 0l, SEEK_END) != 0) { + ABORT("Bad fd argument - fseek failed"); + } + if ((len = ftell(f)) < 0) { + ABORT("Bad fd argument - ftell failed"); + } + rewind(f); + if (len < LAZY_THRESHOLD) { + return(CORD_from_file_eager(f)); + } else { + return(CORD_from_file_lazy_inner(f, (size_t)len)); + } +} Added: llvm-gcc-4.2/trunk/boehm-gc/cord/de.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/boehm-gc/cord/de.c?rev=43913&view=auto ============================================================================== --- llvm-gcc-4.2/trunk/boehm-gc/cord/de.c (added) +++ llvm-gcc-4.2/trunk/boehm-gc/cord/de.c Thu Nov 8 16:56:19 2007 @@ -0,0 +1,603 @@ +/* + * Copyright (c) 1993-1994 by Xerox Corporation. All rights reserved. + * + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * + * Permission is hereby granted to use or copy this program + * for any purpose, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is granted, + * provided the above notices are retained, and a notice that the code was + * modified is included with the above copyright notice. + * + * Author: Hans-J. Boehm (boehm at parc.xerox.com) + */ +/* + * A really simple-minded text editor based on cords. + * Things it does right: + * No size bounds. + * Inbounded undo. + * Shouldn't crash no matter what file you invoke it on (e.g. /vmunix) + * (Make sure /vmunix is not writable before you try this.) + * Scrolls horizontally. + * Things it does wrong: + * It doesn't handle tabs reasonably (use "expand" first). + * The command set is MUCH too small. + * The redisplay algorithm doesn't let curses do the scrolling. + * The rule for moving the window over the file is suboptimal. + */ +/* Boehm, February 6, 1995 12:27 pm PST */ + +/* Boehm, May 19, 1994 2:20 pm PDT */ +#include +#include "gc.h" +#include "cord.h" + +#ifdef THINK_C +#define MACINTOSH +#include +#endif + +#if defined(__BORLANDC__) && !defined(WIN32) + /* If this is DOS or win16, we'll fail anyway. */ + /* Might as well assume win32. */ +# define WIN32 +#endif + +#if defined(WIN32) +# include +# include "de_win.h" +#elif defined(MACINTOSH) +# include +/* curses emulation. */ +# define initscr() +# define endwin() +# define nonl() +# define noecho() csetmode(C_NOECHO, stdout) +# define cbreak() csetmode(C_CBREAK, stdout) +# define refresh() +# define addch(c) putchar(c) +# define standout() cinverse(1, stdout) +# define standend() cinverse(0, stdout) +# define move(line,col) cgotoxy(col + 1, line + 1, stdout) +# define clrtoeol() ccleol(stdout) +# define de_error(s) { fprintf(stderr, s); getchar(); } +# define LINES 25 +# define COLS 80 +#else +# include +# define de_error(s) { fprintf(stderr, s); sleep(2); } +#endif +#include "de_cmds.h" + +/* List of line number to position mappings, in descending order. */ +/* There may be holes. */ +typedef struct LineMapRep { + int line; + size_t pos; + struct LineMapRep * previous; +} * line_map; + +/* List of file versions, one per edit operation */ +typedef struct HistoryRep { + CORD file_contents; + struct HistoryRep * previous; + line_map map; /* Invalid for first record "now" */ +} * history; + +history now = 0; +CORD current; /* == now -> file_contents. */ +size_t current_len; /* Current file length. */ +line_map current_map = 0; /* Current line no. to pos. map */ +size_t current_map_size = 0; /* Number of current_map entries. */ + /* Not always accurate, but reset */ + /* by prune_map. */ +# define MAX_MAP_SIZE 3000 + +/* Current display position */ +int dis_line = 0; +int dis_col = 0; + +# define ALL -1 +# define NONE - 2 +int need_redisplay = 0; /* Line that needs to be redisplayed. */ + + +/* Current cursor position. Always within file. */ +int line = 0; +int col = 0; +size_t file_pos = 0; /* Character position corresponding to cursor. */ + +/* Invalidate line map for lines > i */ +void invalidate_map(int i) +{ + while(current_map -> line > i) { + current_map = current_map -> previous; + current_map_size--; + } +} + +/* Reduce the number of map entries to save space for huge files. */ +/* This also affects maps in histories. */ +void prune_map() +{ + line_map map = current_map; + int start_line = map -> line; + + current_map_size = 0; + for(; map != 0; map = map -> previous) { + current_map_size++; + if (map -> line < start_line - LINES && map -> previous != 0) { + map -> previous = map -> previous -> previous; + } + } +} +/* Add mapping entry */ +void add_map(int line, size_t pos) +{ + line_map new_map = GC_NEW(struct LineMapRep); + + if (current_map_size >= MAX_MAP_SIZE) prune_map(); + new_map -> line = line; + new_map -> pos = pos; + new_map -> previous = current_map; + current_map = new_map; + current_map_size++; +} + + + +/* Return position of column *c of ith line in */ +/* current file. Adjust *c to be within the line.*/ +/* A 0 pointer is taken as 0 column. */ +/* Returns CORD_NOT_FOUND if i is too big. */ +/* Assumes i > dis_line. */ +size_t line_pos(int i, int *c) +{ + int j; + size_t cur; + size_t next; + line_map map = current_map; + + while (map -> line > i) map = map -> previous; + if (map -> line < i - 2) /* rebuild */ invalidate_map(i); + for (j = map -> line, cur = map -> pos; j < i;) { + cur = CORD_chr(current, cur, '\n'); + if (cur == current_len-1) return(CORD_NOT_FOUND); + cur++; + if (++j > current_map -> line) add_map(j, cur); + } + if (c != 0) { + next = CORD_chr(current, cur, '\n'); + if (next == CORD_NOT_FOUND) next = current_len - 1; + if (next < cur + *c) { + *c = next - cur; + } + cur += *c; + } + return(cur); +} + +void add_hist(CORD s) +{ + history new_file = GC_NEW(struct HistoryRep); + + new_file -> file_contents = current = s; + current_len = CORD_len(s); + new_file -> previous = now; + if (now != 0) now -> map = current_map; + now = new_file; +} + +void del_hist(void) +{ + now = now -> previous; + current = now -> file_contents; + current_map = now -> map; + current_len = CORD_len(current); +} + +/* Current screen_contents; a dynamically allocated array of CORDs */ +CORD * screen = 0; +int screen_size = 0; + +# ifndef WIN32 +/* Replace a line in the curses stdscr. All control characters are */ +/* displayed as upper case characters in standout mode. This isn't */ +/* terribly appropriate for tabs. */ +void replace_line(int i, CORD s) +{ + register int c; + CORD_pos p; + size_t len = CORD_len(s); + + if (screen == 0 || LINES > screen_size) { + screen_size = LINES; + screen = (CORD *)GC_MALLOC(screen_size * sizeof(CORD)); + } +# if !defined(MACINTOSH) + /* A gross workaround for an apparent curses bug: */ + if (i == LINES-1 && len == COLS) { + s = CORD_substr(s, 0, CORD_len(s) - 1); + } +# endif + if (CORD_cmp(screen[i], s) != 0) { + move(i, 0); clrtoeol(); move(i,0); + + CORD_FOR (p, s) { + c = CORD_pos_fetch(p) & 0x7f; + if (iscntrl(c)) { + standout(); addch(c + 0x40); standend(); + } else { + addch(c); + } + } + screen[i] = s; + } +} +#else +# define replace_line(i,s) invalidate_line(i) +#endif + +/* Return up to COLS characters of the line of s starting at pos, */ +/* returning only characters after the given column. */ +CORD retrieve_line(CORD s, size_t pos, unsigned column) +{ + CORD candidate = CORD_substr(s, pos, column + COLS); + /* avoids scanning very long lines */ + int eol = CORD_chr(candidate, 0, '\n'); + int len; + + if (eol == CORD_NOT_FOUND) eol = CORD_len(candidate); + len = (int)eol - (int)column; + if (len < 0) len = 0; + return(CORD_substr(s, pos + column, len)); +} + +# ifdef WIN32 +# define refresh(); + + CORD retrieve_screen_line(int i) + { + register size_t pos; + + invalidate_map(dis_line + LINES); /* Prune search */ + pos = line_pos(dis_line + i, 0); + if (pos == CORD_NOT_FOUND) return(CORD_EMPTY); + return(retrieve_line(current, pos, dis_col)); + } +# endif + +/* Display the visible section of the current file */ +void redisplay(void) +{ + register int i; + + invalidate_map(dis_line + LINES); /* Prune search */ + for (i = 0; i < LINES; i++) { + if (need_redisplay == ALL || need_redisplay == i) { + register size_t pos = line_pos(dis_line + i, 0); + + if (pos == CORD_NOT_FOUND) break; + replace_line(i, retrieve_line(current, pos, dis_col)); + if (need_redisplay == i) goto done; + } + } + for (; i < LINES; i++) replace_line(i, CORD_EMPTY); +done: + refresh(); + need_redisplay = NONE; +} + +int dis_granularity; + +/* Update dis_line, dis_col, and dis_pos to make cursor visible. */ +/* Assumes line, col, dis_line, dis_pos are in bounds. */ +void normalize_display() +{ + int old_line = dis_line; + int old_col = dis_col; + + dis_granularity = 1; + if (LINES > 15 && COLS > 15) dis_granularity = 2; + while (dis_line > line) dis_line -= dis_granularity; + while (dis_col > col) dis_col -= dis_granularity; + while (line >= dis_line + LINES) dis_line += dis_granularity; + while (col >= dis_col + COLS) dis_col += dis_granularity; + if (old_line != dis_line || old_col != dis_col) { + need_redisplay = ALL; + } +} + +# if defined(WIN32) +# elif defined(MACINTOSH) +# define move_cursor(x,y) cgotoxy(x + 1, y + 1, stdout) +# else +# define move_cursor(x,y) move(y,x) +# endif + +/* Adjust display so that cursor is visible; move cursor into position */ +/* Update screen if necessary. */ +void fix_cursor(void) +{ + normalize_display(); + if (need_redisplay != NONE) redisplay(); + move_cursor(col - dis_col, line - dis_line); + refresh(); +# ifndef WIN32 + fflush(stdout); +# endif +} + +/* Make sure line, col, and dis_pos are somewhere inside file. */ +/* Recompute file_pos. Assumes dis_pos is accurate or past eof */ +void fix_pos() +{ + int my_col = col; + + if ((size_t)line > current_len) line = current_len; + file_pos = line_pos(line, &my_col); + if (file_pos == CORD_NOT_FOUND) { + for (line = current_map -> line, file_pos = current_map -> pos; + file_pos < current_len; + line++, file_pos = CORD_chr(current, file_pos, '\n') + 1); + line--; + file_pos = line_pos(line, &col); + } else { + col = my_col; + } +} + +#if defined(WIN32) +# define beep() Beep(1000 /* Hz */, 300 /* msecs */) +#elif defined(MACINTOSH) +# define beep() SysBeep(1) +#else +/* + * beep() is part of some curses packages and not others. + * We try to match the type of the builtin one, if any. + */ +#ifdef __STDC__ + int beep(void) +#else + int beep() +#endif +{ + putc('\007', stderr); + return(0); +} +#endif + +# define NO_PREFIX -1 +# define BARE_PREFIX -2 +int repeat_count = NO_PREFIX; /* Current command prefix. */ + +int locate_mode = 0; /* Currently between 2 ^Ls */ +CORD locate_string = CORD_EMPTY; /* Current search string. */ + +char * arg_file_name; + +#ifdef WIN32 +/* Change the current position to whatever is currently displayed at */ +/* the given SCREEN coordinates. */ +void set_position(int c, int l) +{ + line = l + dis_line; + col = c + dis_col; + fix_pos(); + move_cursor(col - dis_col, line - dis_line); +} +#endif /* WIN32 */ + +/* Perform the command associated with character c. C may be an */ +/* integer > 256 denoting a windows command, one of the above control */ +/* characters, or another ASCII character to be used as either a */ +/* character to be inserted, a repeat count, or a search string, */ +/* depending on the current state. */ +void do_command(int c) +{ + int i; + int need_fix_pos; + FILE * out; + + if ( c == '\r') c = '\n'; + if (locate_mode) { + size_t new_pos; + + if (c == LOCATE) { + locate_mode = 0; + locate_string = CORD_EMPTY; + return; + } + locate_string = CORD_cat_char(locate_string, (char)c); + new_pos = CORD_str(current, file_pos - CORD_len(locate_string) + 1, + locate_string); + if (new_pos != CORD_NOT_FOUND) { + need_redisplay = ALL; + new_pos += CORD_len(locate_string); + for (;;) { + file_pos = line_pos(line + 1, 0); + if (file_pos > new_pos) break; + line++; + } + col = new_pos - line_pos(line, 0); + file_pos = new_pos; + fix_cursor(); + } else { + locate_string = CORD_substr(locate_string, 0, + CORD_len(locate_string) - 1); + beep(); + } + return; + } + if (c == REPEAT) { + repeat_count = BARE_PREFIX; return; + } else if (c < 0x100 && isdigit(c)){ + if (repeat_count == BARE_PREFIX) { + repeat_count = c - '0'; return; + } else if (repeat_count != NO_PREFIX) { + repeat_count = 10 * repeat_count + c - '0'; return; + } + } + if (repeat_count == NO_PREFIX) repeat_count = 1; + if (repeat_count == BARE_PREFIX && (c == UP || c == DOWN)) { + repeat_count = LINES - dis_granularity; + } + if (repeat_count == BARE_PREFIX) repeat_count = 8; + need_fix_pos = 0; + for (i = 0; i < repeat_count; i++) { + switch(c) { + case LOCATE: + locate_mode = 1; + break; + case TOP: + line = col = file_pos = 0; + break; + case UP: + if (line != 0) { + line--; + need_fix_pos = 1; + } + break; + case DOWN: + line++; + need_fix_pos = 1; + break; + case LEFT: + if (col != 0) { + col--; file_pos--; + } + break; + case RIGHT: + if (CORD_fetch(current, file_pos) == '\n') break; + col++; file_pos++; + break; + case UNDO: + del_hist(); + need_redisplay = ALL; need_fix_pos = 1; + break; + case BS: + if (col == 0) { + beep(); + break; +