Index: llvm/tools/llvm-c-test/attributes.c =================================================================== --- llvm/tools/llvm-c-test/attributes.c +++ llvm/tools/llvm-c-test/attributes.c @@ -29,11 +29,13 @@ for (Idx = LLVMAttributeFunctionIndex, ParamCount = LLVMCountParams(F); Idx <= ParamCount; ++Idx) { int AttrCount = LLVMGetAttributeCountAtIndex(F, Idx); - LLVMAttributeRef *Attrs = - (LLVMAttributeRef *)malloc(AttrCount * sizeof(LLVMAttributeRef)); - assert(Attrs); - LLVMGetAttributesAtIndex(F, Idx, Attrs); - free(Attrs); + if (AttrCount) { + LLVMAttributeRef *Attrs = + (LLVMAttributeRef *)malloc(AttrCount * sizeof(LLVMAttributeRef)); + assert(Attrs); + LLVMGetAttributesAtIndex(F, Idx, Attrs); + free(Attrs); + } } F = LLVMGetNextFunction(F); } @@ -61,11 +63,13 @@ ParamCount = LLVMCountParams(F); Idx <= ParamCount; ++Idx) { int AttrCount = LLVMGetCallSiteAttributeCount(I, Idx); - LLVMAttributeRef *Attrs = (LLVMAttributeRef *)malloc( - AttrCount * sizeof(LLVMAttributeRef)); - assert(Attrs); - LLVMGetCallSiteAttributes(I, Idx, Attrs); - free(Attrs); + if (AttrCount) { + LLVMAttributeRef *Attrs = (LLVMAttributeRef *)malloc( + AttrCount * sizeof(LLVMAttributeRef)); + assert(Attrs); + LLVMGetCallSiteAttributes(I, Idx, Attrs); + free(Attrs); + } } } }