Author: lattner
Date: Wed Nov 28 15:26:17 2007
New Revision: 44415
URL: http://llvm.org/viewvc/llvm-project?rev=44415&view=rev
Log:
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.
Modified:
llvm/trunk/lib/Target/CBackend/CBackend.cpp
Modified: llvm/trunk/lib/Target/CBackend/CBackend.cpp
URL:
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CBackend/CBackend.cpp?rev=44415&r1=44414&r2=44415&view=diff
==============================================================================
--- llvm/trunk/lib/Target/CBackend/CBackend.cpp (original)
+++ llvm/trunk/lib/Target/CBackend/CBackend.cpp Wed Nov 28 15:26:17 2007
@@ -2573,6 +2573,12 @@
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.
_______________________________________________
llvm-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits