New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CBE can't handle programs with llvm.memcpy.i64 and llvm.memcpy.i32 #1510
Comments
This patch fixes the problem: I'm not completely happy with it, however. It just forces memcpy and memmove to The real question is .. why does llvm generate both llvm.memcpy.i32 and |
The patch completely breaks 64-bit targets, please revert it. It should use targetdata to figure out the -Chris |
So, how do you unbreak llvm.memcpy.64 on a 32-bit platform? Truncating the value |
No it isn't. Clearly the value has to be dynamically 32-bits or smaller if your pointer is only 32-bits. |
A proper fix for this was made with these patches: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070129/043434.html This endows IntrinsicLowering with TargetData and uses the IntPtrTy to get the |
[lldb] Fix compile error due implicit StringRef -> std::string conversion
Extended Description
The CBE is emitting:
unsigned char *memcpy(unsigned char *, unsigned char *, unsigned int );
unsigned char *memcpy(unsigned char *, unsigned char *, unsigned long long );
which causes the C compiler to barf.
This prevents burg from working with the CBE and also prevents bugpoint from working, which doesn't
allow us to track down why jit/llc also fail.
-Chris
The text was updated successfully, but these errors were encountered: