weld-project / weld

High-performance runtime for data analytics applications
https://www.weld.rs
BSD 3-Clause "New" or "Revised" License
2.99k stars 259 forks source link

Module verification failed: Intrinsic has incorrect argument type #468

Closed segeljakt closed 4 years ago

segeljakt commented 5 years ago

When compiling this code:

||
  result(
    for(
      [],
      groupmerger[i32,i32],
      |b:groupmerger[i32,i32],i:i64,e:{i32,i32}| merge(b,e)
    )
  )

I get:

Error: WeldError { message: "Module verification failed: Intrinsic has incorrect argument type!\nvoid (i8*, i8, i64, i32, i1)* @llvm.memset.p0i8.i64\nIntrinsic has incorrect argument type!\nvoid (i8*, i8, i64, i32, i1)* @llvm.memset.p0i8.i64\nIntrinsic has incorrect argument type!\nvoid (i8*, i8*, i64, i32, i1)* @llvm.memcpy.p0i8.p0i8.i64\nIntrinsic has incorrect argument type!\nvoid (i8*, i8*, i64, i32, i1)* @llvm.memcpy.p0i8.p0i8.i64\n", code: CompileError }

Am I doing something wrong here?

sppalkia commented 5 years ago

Make sure you're using LLVM 6.0 (llvm-config --version should print 6.0.x). LLVM changes the arguments/types of intrinsics across versions unfortunately.

On Wed, Aug 21, 2019 at 3:17 PM segeljakt notifications@github.com wrote:

When compiling this code:

|se:vec[{{i64,i64},f64}]| let groups = tovec( result( for( se, groupmerger[{i64,i64},f64], |b:groupmerger[{i64,i64},f64],i:i64,e:{{i64,i64},f64}| merge(b,e) ) ) ); let keyvals = result( for( groups, appender[{{i64,i64},f64}], |gb:appender[{{i64,i64},f64}],gi:i64,ge:{{i64,i64},vec[f64]}| merge(gb,{ge.$0, result( for( (ge.$1), merger[f64,+], |b:merger[f64,+],i:i64,e:f64| merge(b,e+0.1) ) ) } ) ) ); keyvals

I get:

Error: WeldError { message: "Module verification failed: Intrinsic has incorrect argument type!\nvoid (i8, i8, i64, i32, i1) @llvm.memset.p0i8.i64\nIntrinsic has incorrect argument type!\nvoid (i8, i8, i64, i32, i1) @llvm.memset.p0i8.i64\nIntrinsic has incorrect argument type!\nvoid (i8, i8, i64, i32, i1) @llvm.memcpy.p0i8.p0i8.i64\nIntrinsic has incorrect argument type!\nvoid (i8, i8, i64, i32, i1) @llvm.memcpy.p0i8.p0i8.i64\n", code: CompileError }

Am I doing something wrong here?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/weld-project/weld/issues/468?email_source=notifications&email_token=AAKMEY6MWUBUINCPO6FQWN3QFW5GLA5CNFSM4IOO3NY2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HGULA5A, or mute the thread https://github.com/notifications/unsubscribe-auth/AAKMEYYGSLQYO6VPLD5L3GDQFW5GLANCNFSM4IOO3NYQ .

-- Shoumik

segeljakt commented 5 years ago

Ok thanks, I'll try it!

sppalkia commented 4 years ago

Did using LLVM 6.0 work for you?

segeljakt commented 4 years ago

It worked for me, I'll close this now