if (Op0C && Op0C->getValue().ult(llvm::Value::MaximumAlignment) &&
isKnownNonZero(Call.getOperand(1), DL, 0, &AC, &Call, &DT)) {
uint64_t AlignmentVal = Op0C->getZExtValue();
- if (llvm::isPowerOf2_64(AlignmentVal))
+ if (llvm::isPowerOf2_64(AlignmentVal)) {
+ Call.removeAttribute(AttributeList::ReturnIndex, Attribute::Alignment);
Call.addAttribute(AttributeList::ReturnIndex,
Attribute::getWithAlignment(Call.getContext(),
Align(AlignmentVal)));
+ }
}
} else if (isReallocLikeFn(&Call, TLI) && Op1C) {
Call.addAttribute(AttributeList::ReturnIndex,
declare noalias nonnull i8* @_Znwm(i64) ; throwing version of 'new'
declare noalias i8* @strdup(i8*)
declare noalias i8* @aligned_alloc(i64, i64)
-declare noalias i8* @memalign(i64, i64)
+declare noalias align 16 i8* @memalign(i64, i64)
@.str = private unnamed_addr constant [6 x i8] c"hello\00", align 1