[llvm-commits] [llvm-gcc] Changes In Boolean (please commit)
Jeff Cohen
jeffc at jolt-lang.org
Thu Jan 11 13:33:24 PST 2007
Reid Spencer wrote:
> On Thu, 2007-01-11 at 13:19 -0800, Jeff Cohen wrote:
>
>> Not that message..... this one:
>>
>> =================
>> 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
>>
>
> That is supposed to be a warning on all systems with our Makefile
> system. What compiler and operating system are you using?
>
gcc 4.0 / FreeBSD 6.1
> This stems from use of -Wno-unused. Which should produce a warning on
> unused things such as this label. Do you have local Makefile changes
> that upgrade this from a warning to an error?
>
Look at the error more closely. It is not complaining about an unused
label. That is a warning. It is complaining about using an undefined
label. I have no local changes.
> Reid.
>
>
>> I think I'll just go away for a few weeks and wait for the dust to
>> settle....
>>
>> =================
>>
>> Reid Spencer wrote:
>>
>>> Jeff,
>>>
>>> That just can't be .. see below
>>>
>>> On Thu, 2007-01-11 at 12:57 -0800, Jeff Cohen wrote:
>>>
>>>
>>>> See my previous message. I updated, and LLVM no longer builds.
>>>>
>>>> Reid Spencer wrote:
>>>>
>>>>
>>>>> You need to update your LLVM tree. I just committed the BoolTy->Int1Ty
>>>>> change and the patch handles that change as well.
>>>>>
>>>>> Reid.
>>>>>
>>>>> On Thu, 2007-01-11 at 12:24 -0800, 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'
>>>>>>
>>>>>>
>>> Int1Ty is now a member of the Type class. I double checked to make sure
>>> I committed everything. If you're getting this error then you've still
>>> got a Type.h file that is defining BoolTy instead of Int1Ty. For
>>> whatever reason, you're not at TOT for LLVM!
>>>
>>>
>>>
>>>>>> ../../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'
>>>>>>
>>>>>>
>>> Same.
>>>
>>>
>>>
>>>>>> 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'
>>>>>>
>>>>>>
>>> Same.
>>>
>>>
>>>
>>>>>> ../../gcc/llvm-convert.cpp:716: error: 'Int1Ty' is not a member of
>>>>>> 'llvm::Type'
>>>>>>
>>>>>>
>>> Same.
>>>
>>>
>>>
>>>>>> ../../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'
>>>>>>
>>>>>>
>>> Same.
>>>
>>>
>>>
>>>>>> ../../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'
>>>>>>
>>>>>>
>>> Same.
>>>
>>>
>>>
>>>>>> ../../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'
>>>>>>
>>>>>>
>>> Same.
>>>
>>> If these are all the errors you're getting, then its very clear you are
>>> not at HEAD revision for LLVM. Check your revision number for
>>> include/llvm/Type.h. It should be revision 1.98:
>>>
>>> cvs status include/llvm/Type.h
>>> ===================================================================
>>> File: Type.h Status: Up-to-date
>>>
>>> Working revision: 1.98
>>> Repository revision: 1.98 /var/cvs/llvm/llvm/include/llvm/Type.h,v
>>> Sticky Tag: (none)
>>> Sticky Date: (none)
>>> Sticky Options: (none)
>>>
>>>
>>> I know you can retrieve this from CVS because I just did it 2 hours ago
>>> to merge the BoolTy->Int1Ty changes into another working tree.
>>>
>>> Reid.
>>>
>>>
>>>
>>>>>> 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 at cs.uiuc.edu
>>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>>
>>>
>>>
>>>
>>>
>
>
>
>
>
More information about the llvm-commits
mailing list