[llvm-commits] [llvm-gcc] Changes In Boolean (please commit)

Reid Spencer rspencer at reidspencer.com
Thu Jan 11 13:38:11 PST 2007


On Thu, 2007-01-11 at 13:33 -0800, Jeff Cohen wrote:
> 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.

Ah, yes, you're right. This is a result of stripping the label out in
the Makefile. Your version of FLEX must actually us it or a REJECT was
added recently. In any event, I'll fix the makefile in just a second and
it should work for you again. Thanks for being dilligent on this through
my misunderstanding of the situation.

Reid.

> > 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