[llvm-dev] Swift to IR, generates wrong IR

Rinaldini Julien via llvm-dev llvm-dev at lists.llvm.org
Mon Oct 5 03:38:40 PDT 2015


Thx a lot, worked with '-emit-bc’

Cheers,

> On 05 Oct 2015, at 12:27, Björn Steinbrink <bsteinbr at gmail.com> wrote:
> 
> Hi,
> 
> 2015-10-05 11:49 GMT+02:00 Rinaldini Julien via llvm-dev
> <llvm-dev at lists.llvm.org>:
>> Sorry, the error is (the previous one was from Apple’s lli):
>> 
>> Documents/strong.codes/code/build/obfuscator-llvm/bin/opt: test.ll:57:203: error: expected comma after getelementptr's type
>> @_METACLASS_DATA__TtC4test13TipCalculator = private constant { i32, i32, i32, i32, i8*, i8*, i8*, i8*, i8*, i8*, i8* } { i32 129, i32 40, i32 40, i32 0, i8* null, i8* getelementptr inbounds ([25 x i8]* @7, i64 0, i64 0), i8* null, i8* null, i8* null, i8* null, i8* null }, section "__DATA, __objc_const", align 8
> 
> The IR format is not stable and it seems like Swift is using an LLVM <
> 3.7, while your opt executable is from LLVM 3.7. The `getelementptr`
> instruction (besides others) now expects the pointer type to be given
> explicitly. I don't know Swift, but if you can get it to emit bitcode
> instead of IR, that should work AFAIK. Looking at the command line,
> you probably need -emit-bc.
> 
> Björn
> 
>>                                                        ^
>> 
>>> On 05 Oct 2015, at 11:25, Rinaldini Julien via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>>> 
>>> Hi,
>>> I have a simple swift code from which I generate IR code with ‘swiftc test.swift -emit-ir -o test.ll'
>>> When I try to run the .ll file or apply optimization with opt, I get errors like this one:
>>> 
>>> lli: test.ll:548:110: error: expected instruction opcode
>>> %9 = cmpxchg i64* bitcast (%swift.type*** @field_type_vector_TipCalculator to i64*), i64 0, i64 %8 seq_cst seq_cst
>>>                                                                                                                                                                            ^
>>> I know swift is not part of the LLVM oss project, but is this problem coming from swift generating wrong IR code or is this a LLVM bug (or maybe I’m just doing something wrong)?
>>> 
>>> Cheers,
>>> 
>>> ps: this is the swift code I try running:
>>> 
>>> class TipCalculator {
>>> 
>>> // 2
>>> let total: Double
>>>   let taxPct: Double
>>>   let subtotal: Double
>>> 
>>>   // 3
>>>   init(total: Double, taxPct: Double) {a
>>>     self.total = total
>>>       self.taxPct = taxPct
>>>       subtotal = total / (taxPct + 1)
>>>   }
>>> 
>>> // 4
>>> func calcTipWithTipPct(tipPct: Double) -> Double {a
>>>   return subtotal * tipPct
>>> }
>>> 
>>> // 5
>>> func printPossibleTips() {
>>>   print("15%: \(calcTipWithTipPct(0.15))")
>>>     print("18%: \(calcTipWithTipPct(0.18))")
>>>     print("20%: \(calcTipWithTipPct(0.20))")
>>> }
>>> 
>>> }
>>> 
>>> // 6
>>> let tipCalc = TipCalculator(total: 33.25, taxPct: 0.06)
>>> tipCalc.printPossibleTips()
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> llvm-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>> 
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev



More information about the llvm-dev mailing list