#6158: GHC Causes opt to crash under LLVM 3.1 due to non const memcpy offset
--------------------------------+-------------------------------------------
Reporter: Axman6 | Owner: dterei
Type: bug | Status: new
Priority: normal | Component: Compiler (LLVM)
Version: 7.4.1 | Keywords: llvm memcpy
Os: MacOS X | Architecture: x86_64 (amd64)
Failure: Compile-time crash | Testcase:
Blockedby: | Blocking:
Related: |
--------------------------------+-------------------------------------------
Under LLVM 3.1, opt is crashing when compiling code produced by GHC which
makes calls to memcpy. After talking to the guys in #llvm they informed me
that memcpy needs its alignment argument to be a const value, not from a
value in a register. An example of the crash log:
alignment argument of memory intrinsics must be a constant int
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %lnfVC, i8* %lnfVE, i64 %lnfVF,
i32 %lnfVG, i1 false)
alignment argument of memory intrinsics must be a constant int
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %lnfWc, i8* %lnfWe, i64 %lnfWf,
i32 %lnfWg, i1 false)
alignment argument of memory intrinsics must be a constant int
call void @llvm.memmove.p0i8.p0i8.i64(i8* %lnfWk, i8* %lnfWm, i64
%lnfWn, i32 %lnfWo, i1 false)
alignment argument of memory intrinsics must be a constant int
call void @llvm.memmove.p0i8.p0i8.i64(i8* %lnfWJ, i8* %lnfWL, i64
%lnfWM, i32 %lnfWN, i1 false)
Broken module found, compilation aborted!
0 opt 0x000000010cec4be7
llvm::sys::ThreadLocal<llvm::PrettyStackTraceEntry const>::~ThreadLocal()
+ 6113
1 opt 0x000000010cec4eee
llvm::sys::ThreadLocal<llvm::PrettyStackTraceEntry const>::~ThreadLocal()
+ 6888
2 libsystem_c.dylib 0x00007fff8dabacfa _sigtramp + 26
3 libsystem_c.dylib 000000000000000000 _sigtramp + 18446603338139325216
4 opt 0x000000010cec4dfc
llvm::sys::ThreadLocal<llvm::PrettyStackTraceEntry const>::~ThreadLocal()
+ 6646
5 opt 0x000000010ce9865a llvm::StringMap<llvm::Value*,
llvm::MallocAllocator>::clear() + 8942
6 opt 0x000000010ce975cd llvm::StringMap<llvm::Value*,
llvm::MallocAllocator>::clear() + 4705
7 opt 0x000000010ce8b50b
llvm::PassRegistrationListener::passEnumerate(llvm::PassInfo const*) +
12531
8 opt 0x000000010ce8b704
llvm::PassRegistrationListener::passEnumerate(llvm::PassInfo const*) +
13036
9 opt 0x000000010ce8b848
llvm::PassRegistrationListener::passEnumerate(llvm::PassInfo const*) +
13360
10 opt 0x000000010ce8bb28
llvm::PassRegistrationListener::passEnumerate(llvm::PassInfo const*) +
14096
11 opt 0x000000010ce8bf27
llvm::PassRegistrationListener::passEnumerate(llvm::PassInfo const*) +
15119
12 opt 0x000000010cc7a708 llvm::DenseMap<llvm::BasicBlock*,
unsigned int, llvm::DenseMapInfo<llvm::BasicBlock*>,
llvm::DenseMapInfo<unsigned int> >::init(unsigned int) + 4866
13 opt 0x000000010cc76364
Stack dump:
0. Program arguments: opt mmulttest.ll -o
/var/folders/0n/bjp22m948xlgtl006s6kwyj00000gv/T/ghc87286_0/ghc87286_0.bc
-O3 -std-compile-opts -time-passes -loop-unroll
1. Running pass 'Function Pass Manager' on module 'mmulttest.ll'.
2. Running pass 'Module Verifier' on function '@seo9_info'
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/6158>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs