mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-14 07:31:47 +00:00
Work around a GCC bug, producing this code:
unsigned char *llvm_cbe_X; ... llvm_cbe_X = 0; *((void**)&llvm_cbe_X) = __builtin_stack_save(); instead of: llvm_cbe_X = __builtin_stack_save(); See PR1809 for details. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44415 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
51c971701a
commit
4045e6db8c
@ -2573,6 +2573,12 @@ void CWriter::visitCallInst(CallInst &I) {
|
||||
writeOperand(I.getOperand(3));
|
||||
Out << ")";
|
||||
return;
|
||||
case Intrinsic::stacksave:
|
||||
// Emit this as: Val = 0; *((void**)&Val) = __builtin_stack_save()
|
||||
// to work around GCC bugs (see PR1809).
|
||||
Out << "0; *((void**)&" << GetValueName(&I)
|
||||
<< ") = __builtin_stack_save()";
|
||||
return;
|
||||
case Intrinsic::dbg_stoppoint: {
|
||||
// If we use writeOperand directly we get a "u" suffix which is rejected
|
||||
// by gcc.
|
||||
|
Loading…
Reference in New Issue
Block a user