On Thu, 2007-01-11 at 12:38 -0800, Jeff Cohen wrote: > OK, so I figured I need to update LLVM. Now that doesn't build: > > llvm[2]: Compiling Lexer.cpp for Debug build > Lexer.cpp: In function 'int llvmAsmlex()': > Lexer.cpp:1244: error: label 'find_rule' used but not defined > gmake[2]: *** [/usr/home/jeffc/llvm/obj/lib/AsmParser/Debug/Lexer.o] Error 1 > > I think I'll just go away for a few weeks and wait for the dust to > settle....
I just got this email now .. no wonder I was confused. > > Jeff Cohen wrote: > > The patch doesn't work: > > > > g++40 -c -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -pedantic > > -Wno-long-long -Wno-variadic-macros -fno-common -DHAVE_CONFIG_H > > -Wno-unused -DTARGET_NAME=\"amd64-unknown-freebsd6.1\" -DENABLE_LLVM > > -D__STDC_LIMIT_MACROS -I. -I. -I../../gcc -I../../gcc/. > > -I../../gcc/../include -I../../gcc/../libcpp/include > > -I/usr/home/jeffc/llvm/include -I/home/jeffc/llvm/obj/include > > ../../gcc/llvm-debug.cpp -o llvm-debug.o > > ../../gcc/llvm-types.cpp: In member function 'const llvm::Type* > > TypeConverter::ConvertType(tree_node*)': > > ../../gcc/llvm-types.cpp:291: error: 'Int1Ty' is not a member of > > 'llvm::Type' > > ../../gcc/llvm-types.cpp: In member function > > 'void<unnamed>::FunctionTypeConversion::HandleScalarArgument(const > > llvm::Type*, tree_node*)': > > ../../gcc/llvm-types.cpp:520: error: 'Int1Ty' is not a member of > > 'llvm::Type' > > gmake[1]: *** [llvm-types.o] Error 1 > > gmake[1]: *** Waiting for unfinished jobs.... > > ../../gcc/llvm-convert.cpp: In member function 'llvm::Value* > > TreeToLLVM::CastToType(unsigned int, llvm::Value*, const llvm::Type*)': > > ../../gcc/llvm-convert.cpp:716: error: 'Int1Ty' is not a member of > > 'llvm::Type' > > ../../gcc/llvm-convert.cpp:716: error: 'Int1Ty' is not a member of > > 'llvm::Type' > > ../../gcc/llvm-convert.cpp: In member function 'llvm::Value* > > TreeToLLVM::EmitCOND_EXPR(tree_node*)': > > ../../gcc/llvm-convert.cpp:1390: error: 'Int1Ty' is not a member of > > 'llvm::Type' > > ../../gcc/llvm-convert.cpp: In member function 'llvm::Value* > > TreeToLLVM::EmitTRUTH_NOT_EXPR(tree_node*)': > > ../../gcc/llvm-convert.cpp:2379: error: 'Int1Ty' is not a member of > > 'llvm::Type' > > ../../gcc/llvm-convert.cpp: In member function 'LValue > > TreeToLLVM::EmitLV_COMPONENT_REF(tree_node*)': > > ../../gcc/llvm-convert.cpp:4041: error: 'Int1Ty' is not a member of > > 'llvm::Type' > > > > > > Reid Spencer wrote: > >> All, > >> > >> Please apply this patch to llvm-gcc r247. It adjusts llvm-gcc for recent > >> changes in LLVM related to the BoolTy. > >> > >> BoolTy->Int1Ty > >> ConstantBool->ConstantInt > >> ConstantIntegral->ConstantInt > >> > >> Reid > >> > >> ------------------------------------------------------------------------ > >> > >> Index: gcc/llvm-backend.cpp > >> =================================================================== > >> --- gcc/llvm-backend.cpp (revision 247) > >> +++ gcc/llvm-backend.cpp (working copy) > >> @@ -569,7 +569,7 @@ > >> // If this has already been processed, don't emit duplicate error > >> messages. > >> if (DECL_LLVM_SET_P(decl)) { > >> // Error state encoded into DECL_LLVM. > >> - return cast<ConstantBool>(DECL_LLVM(decl))->getValue(); > >> + return cast<ConstantInt>(DECL_LLVM(decl))->getBoolValue(); > >> } > >> > >> /* Detect errors in declaring global registers. */ > >> @@ -593,10 +593,10 @@ > >> if (TREE_THIS_VOLATILE(decl)) > >> warning("volatile register variables don%'t work as you might > >> wish"); > >> > >> - SET_DECL_LLVM(decl, ConstantBool::getFalse()); > >> + SET_DECL_LLVM(decl, ConstantInt::getFalse()); > >> return false; // Everything ok. > >> } > >> - SET_DECL_LLVM(decl, ConstantBool::getTrue()); > >> + SET_DECL_LLVM(decl, ConstantInt::getTrue()); > >> return true; > >> } > >> > >> Index: gcc/llvm-convert.cpp > >> =================================================================== > >> --- gcc/llvm-convert.cpp (revision 247) > >> +++ gcc/llvm-convert.cpp (working copy) > >> @@ -713,7 +713,7 @@ > >> // Handle cast (cast bool X to T2) to bool as X, because this occurs > >> all over > >> // the place. > >> if (CastInst *CI = dyn_cast<CastInst>(V)) > >> - if (Ty == Type::BoolTy && CI->getOperand(0)->getType() == > >> Type::BoolTy) > >> + if (Ty == Type::Int1Ty && CI->getOperand(0)->getType() == > >> Type::Int1Ty) > >> return CI->getOperand(0); > >> return CastInst::create(Instruction::CastOps(opcode), V, Ty, > >> V->getName(), > >> CurBB); > >> @@ -1384,10 +1384,10 @@ > >> } > >> > >> Value *TreeToLLVM::EmitCOND_EXPR(tree exp) { > >> - // Emit the conditional expression and trunc/bitcast to BoolTy > >> + // Emit the conditional expression and trunc/bitcast to Int1Ty > >> Value *Cond = Emit(COND_EXPR_COND(exp), 0); > >> // If its not already a bool, insert a comparison against zero to make > >> it so. > >> - if (Cond->getType() != Type::BoolTy) > >> + if (Cond->getType() != Type::Int1Ty) > >> Cond = new ICmpInst(ICmpInst::ICMP_NE, Cond, > >> Constant::getNullValue(Cond->getType()), > >> "toBool", > >> CurBB); > >> @@ -2376,7 +2376,7 @@ > >> > >> Value *TreeToLLVM::EmitTRUTH_NOT_EXPR(tree exp) { > >> Value *V = Emit(TREE_OPERAND(exp, 0), 0); > >> - if (V->getType() != Type::BoolTy) > >> + if (V->getType() != Type::Int1Ty) > >> V = new ICmpInst(ICmpInst::ICMP_NE, V, > >> Constant::getNullValue(V->getType()), "toBool", > >> CurBB); > >> V = BinaryOperator::createNot(V, V->getName()+"not", CurBB); > >> @@ -4038,7 +4038,7 @@ > >> // If the field result is a bool, cast to a ubyte instead. It is not > >> // possible to access all bits of a memory object with a bool (only > >> the low > >> // bit) but it is possible to access them with a byte. > >> - if (FieldTy == Type::BoolTy) > >> + if (FieldTy == Type::Int1Ty) > >> FieldTy = Type::Int8Ty; > >> assert(FieldTy->isInteger() && "Invalid bitfield"); > >> > >> Index: gcc/llvm-types.cpp > >> =================================================================== > >> --- gcc/llvm-types.cpp (revision 247) > >> +++ gcc/llvm-types.cpp (working copy) > >> @@ -288,7 +288,7 @@ > >> case UNION_TYPE: return ConvertUNION(type, orig_type); > >> case BOOLEAN_TYPE: > >> if (TREE_INT_CST_LOW(TYPE_SIZE(type)) <= 8) > >> - return SET_TYPE_LLVM(type, Type::BoolTy); > >> + return SET_TYPE_LLVM(type, Type::Int1Ty); > >> else { // Bools on some platforms take more space than LLVM bool > >> (e.g. PPC). > >> if (const Type *Ty = GET_TYPE_LLVM(type)) > >> return Ty; > >> @@ -517,7 +517,7 @@ > >> if (LLVMTy == Type::FloatTy) > >> LLVMTy = Type::DoubleTy; > >> else if (LLVMTy == Type::Int16Ty || LLVMTy == Type::Int8Ty || > >> - LLVMTy == Type::BoolTy) > >> + LLVMTy == Type::Int1Ty) > >> LLVMTy = Type::Int32Ty; > >> } > >> ArgTypes.push_back(LLVMTy); > >> > >> ------------------------------------------------------------------------ > >> > >> _______________________________________________ > >> llvm-commits mailing list > >> llvm-commits@cs.uiuc.edu > >> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits > >> > > ------------------------------------------------------------------------ > > > > _______________________________________________ > > llvm-commits mailing list > > llvm-commits@cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits > > > > _______________________________________________ > llvm-commits mailing list > llvm-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits