[llvm-commits] [llvm] r47521 - in /llvm/trunk: lib/Bitcode/Reader/BitcodeReader.cpp lib/Bitcode/Writer/BitcodeWriter.cpp test/Assembler/2008-02-20-MultipleReturnValue.ll

Evan Cheng evan.cheng at apple.com
Sat Feb 23 01:24:41 PST 2008


It failed earlier at llvm-ld:

/Users/echeng/LLVM/llvm/Release/bin/llvm-ld -link-as-library -disable- 
opt Output/align.bc Output/misc.bc Output/sim4.init.bc Output/ 
sim4b1.bc -o Output/SIBsim4.linked.rbc
Assertion failed: (isa<X>(Val) && "cast<Ty>() argument of incompatible  
type!"), function cast, file /Users/echeng/LLVM/llvm/include/llvm/ 
Support/Casting.h, line 199.

Evan

On Feb 23, 2008, at 1:14 AM, Evan Cheng wrote:

> I am not sure if this is related. But I am seeing errors related to  
> bitcode read / write:
>
> /Users/echeng/LLVM/llvm/Release/bin/llc -relocation-model=pic - 
> disable-fp-elim -f Output/clamscan.llvm.bc -o Output/clamscan.llc.s
> /Users/echeng/LLVM/llvm/Release/bin/llc: bitcode didn't read  
> correctly.
> Reason: can't open file 'Output/clamscan.llvm.bc'No such file or  
> directory
> make[4]: [Output/clamscan.llc.s] Error 1 (ignored)
>
> I am running with DISABLE_LTO=1 TARGET_LLCFLAGS="-relocation- 
> model=pic -disable-fp-elim"
>
> Evan
>
> On Feb 22, 2008, at 5:44 PM, Devang Patel wrote:
>
>> Author: dpatel
>> Date: Fri Feb 22 19:44:55 2008
>> New Revision: 47521
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=47521&view=rev
>> Log:
>> Properly read and write bitcodes for multiple return values.
>>
>> Modified:
>>   llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
>>   llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp
>>   llvm/trunk/test/Assembler/2008-02-20-MultipleReturnValue.ll
>>
>> Modified: llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp?rev=47521&r1=47520&r2=47521&view=diff
>>
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> =====================================================================
>> --- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (original)
>> +++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp Fri Feb 22  
>> 19:44:55 2008
>> @@ -1337,17 +1337,30 @@
>>    }
>>
>>    case bitc::FUNC_CODE_INST_RET: // RET: [opty,opval<optional>]
>> -      if (Record.empty()) {
>> -        I = new ReturnInst();
>> -        break;
>> -      } else {
>> -        unsigned OpNum = 0;
>> -        Value *Op;
>> -        if (getValueTypePair(Record, OpNum, NextValueNo, Op) ||
>> -            OpNum != Record.size())
>> -          return Error("Invalid RET record");
>> -        I = new ReturnInst(Op);
>> -        break;
>> +      {
>> +        unsigned Size = Record.size();
>> +        if (Size == 0) {
>> +          I = new ReturnInst();
>> +          break;
>> +        } else if (Size == 1) {
>> +          unsigned OpNum = 0;
>> +          Value *Op;
>> +          if (getValueTypePair(Record, OpNum, NextValueNo, Op) ||
>> +              OpNum != Record.size())
>> +            return Error("Invalid RET record");
>> +          I = new ReturnInst(Op);
>> +          break;
>> +        } else {
>> +          std::vector<Value *> Vs;
>> +          Value *Op;
>> +          unsigned OpNum = 0;
>> +          for (unsigned i = 0; i < Size; ++i) {
>> +            getValueTypePair(Record, OpNum, NextValueNo, Op);
>> +            Vs.push_back(Op);
>> +          }
>> +          I = new ReturnInst(Vs);
>> +          break;
>> +        }
>>      }
>>    case bitc::FUNC_CODE_INST_BR: { // BR: [bb#, bb#, opval] or [bb#]
>>      if (Record.size() != 1 && Record.size() != 3)
>>
>> Modified: llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp?rev=47521&r1=47520&r2=47521&view=diff
>>
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> =====================================================================
>> --- llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp (original)
>> +++ llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp Fri Feb 22  
>> 19:44:55 2008
>> @@ -747,15 +747,23 @@
>>  case Instruction::GetResult:
>>    Code = bitc::FUNC_CODE_INST_GETRESULT;
>>    PushValueAndType(I.getOperand(0), InstID, Vals, VE);
>> -    Vals.push_back(Log2_32(cast<GetResultInst>(I).getIndex())+1);
>> +    Vals.push_back(cast<GetResultInst>(I).getIndex());
>>    break;
>>
>> -  case Instruction::Ret:
>> -    Code = bitc::FUNC_CODE_INST_RET;
>> -    if (!I.getNumOperands())
>> -      AbbrevToUse = FUNCTION_INST_RET_VOID_ABBREV;
>> -    else if (!PushValueAndType(I.getOperand(0), InstID, Vals, VE))
>> -      AbbrevToUse = FUNCTION_INST_RET_VAL_ABBREV;
>> +  case Instruction::Ret:
>> +    {
>> +      Code = bitc::FUNC_CODE_INST_RET;
>> +      unsigned NumOperands = I.getNumOperands();
>> +      if (NumOperands == 0)
>> +        AbbrevToUse = FUNCTION_INST_RET_VOID_ABBREV;
>> +      else if (NumOperands == 1) {
>> +        if (!PushValueAndType(I.getOperand(0), InstID, Vals, VE))
>> +          AbbrevToUse = FUNCTION_INST_RET_VAL_ABBREV;
>> +      } else {
>> +        for (unsigned i = 0, e = NumOperands; i != e; ++i)
>> +          PushValueAndType(I.getOperand(i), InstID, Vals, VE);
>> +      }
>> +    }
>>    break;
>>  case Instruction::Br:
>>    Code = bitc::FUNC_CODE_INST_BR;
>>
>> Modified: llvm/trunk/test/Assembler/2008-02-20-MultipleReturnValue.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/2008-02-20-MultipleReturnValue.ll?rev=47521&r1=47520&r2=47521&view=diff
>>
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> =====================================================================
>> --- llvm/trunk/test/Assembler/2008-02-20-MultipleReturnValue.ll  
>> (original)
>> +++ llvm/trunk/test/Assembler/2008-02-20-MultipleReturnValue.ll Fri  
>> Feb 22 19:44:55 2008
>> @@ -1,4 +1,4 @@
>> -; RUN: llvm-as < %s -disable-output
>> +; RUN: llvm-as < %s | opt -verify | llvm-dis | llvm-as -disable- 
>> output
>>
>> define {i32, i8} @foo(i32 %p) {
>>  ret i32 1, i8 2
>>
>>
>> _______________________________________________
>> 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