]> granicus.if.org Git - clang/commitdiff
Prevent a segfault for vaarg expressions on unsupported architectures.
authorSebastian Redl <sebastian.redl@getdesigned.at>
Fri, 9 Jan 2009 21:09:38 +0000 (21:09 +0000)
committerSebastian Redl <sebastian.redl@getdesigned.at>
Fri, 9 Jan 2009 21:09:38 +0000 (21:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62008 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGExprAgg.cpp

index 834d7483bafe1a74f7c508c1915eafb5db8d4d73..7571149b5a7c05f2ad2ca8e791d27e2371e8cae5 100644 (file)
@@ -278,9 +278,11 @@ void AggExprEmitter::VisitVAArgExpr(VAArgExpr *VE) {
   llvm::Value *ArgValue = CGF.EmitLValue(VE->getSubExpr()).getAddress();
   llvm::Value *ArgPtr = CGF.EmitVAArg(ArgValue, VE->getType());
 
-  if (!ArgPtr)
+  if (!ArgPtr) {
     CGF.ErrorUnsupported(VE, "aggregate va_arg expression");
-  
+    return;
+  }
+
   if (DestPtr)
     // FIXME: volatility
     CGF.EmitAggregateCopy(DestPtr, ArgPtr, VE->getType());