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

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


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
                                                        ^

> 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



More information about the llvm-dev mailing list