Lines Matching refs:F

61 static bool setDoesNotAccessMemory(Function &F) {  in setDoesNotAccessMemory()  argument
62 if (F.doesNotAccessMemory()) in setDoesNotAccessMemory()
64 F.setDoesNotAccessMemory(); in setDoesNotAccessMemory()
69 static bool setIsCold(Function &F) { in setIsCold() argument
70 if (F.hasFnAttribute(Attribute::Cold)) in setIsCold()
72 F.addFnAttr(Attribute::Cold); in setIsCold()
77 static bool setNoReturn(Function &F) { in setNoReturn() argument
78 if (F.hasFnAttribute(Attribute::NoReturn)) in setNoReturn()
80 F.addFnAttr(Attribute::NoReturn); in setNoReturn()
85 static bool setMemoryEffects(Function &F, MemoryEffects ME) { in setMemoryEffects() argument
86 MemoryEffects OrigME = F.getMemoryEffects(); in setMemoryEffects()
90 F.setMemoryEffects(NewME); in setMemoryEffects()
94 static bool setOnlyAccessesInaccessibleMemory(Function &F) { in setOnlyAccessesInaccessibleMemory() argument
95 if (!setMemoryEffects(F, MemoryEffects::inaccessibleMemOnly())) in setOnlyAccessesInaccessibleMemory()
101 static bool setOnlyReadsMemory(Function &F) { in setOnlyReadsMemory() argument
102 if (!setMemoryEffects(F, MemoryEffects::readOnly())) in setOnlyReadsMemory()
108 static bool setOnlyWritesMemory(Function &F) { in setOnlyWritesMemory() argument
109 if (!setMemoryEffects(F, MemoryEffects::writeOnly())) in setOnlyWritesMemory()
115 static bool setOnlyAccessesArgMemory(Function &F) { in setOnlyAccessesArgMemory() argument
116 if (!setMemoryEffects(F, MemoryEffects::argMemOnly())) in setOnlyAccessesArgMemory()
122 static bool setOnlyAccessesInaccessibleMemOrArgMem(Function &F) { in setOnlyAccessesInaccessibleMemOrArgMem() argument
123 if (!setMemoryEffects(F, MemoryEffects::inaccessibleOrArgMemOnly())) in setOnlyAccessesInaccessibleMemOrArgMem()
129 static bool setOnlyWritesErrnoMemory(Function &F) { in setOnlyWritesErrnoMemory() argument
130 if (!setMemoryEffects(F, MemoryEffects::errnoMemOnly(ModRefInfo::Mod))) in setOnlyWritesErrnoMemory()
136 static bool setOnlyWritesArgMemOrErrnoMem(Function &F) { in setOnlyWritesArgMemOrErrnoMem() argument
137 if (!setMemoryEffects(F, MemoryEffects::argumentOrErrnoMemOnly( in setOnlyWritesArgMemOrErrnoMem()
144 static bool setDoesNotThrow(Function &F) { in setDoesNotThrow() argument
145 if (F.doesNotThrow()) in setDoesNotThrow()
147 F.setDoesNotThrow(); in setDoesNotThrow()
152 static bool setDoesNotCallback(Function &F) { in setDoesNotCallback() argument
153 if (F.hasFnAttribute(Attribute::NoCallback)) in setDoesNotCallback()
155 F.addFnAttr(Attribute::NoCallback); in setDoesNotCallback()
160 static bool setRetDoesNotAlias(Function &F) { in setRetDoesNotAlias() argument
161 if (F.hasRetAttribute(Attribute::NoAlias)) in setRetDoesNotAlias()
163 F.addRetAttr(Attribute::NoAlias); in setRetDoesNotAlias()
168 static bool setDoesNotCapture(Function &F, unsigned ArgNo) { in setDoesNotCapture() argument
169 if (F.hasParamAttribute(ArgNo, Attribute::Captures)) in setDoesNotCapture()
171 F.addParamAttr(ArgNo, Attribute::getWithCaptureInfo(F.getContext(), in setDoesNotCapture()
177 static bool setDoesNotAlias(Function &F, unsigned ArgNo) { in setDoesNotAlias() argument
178 if (F.hasParamAttribute(ArgNo, Attribute::NoAlias)) in setDoesNotAlias()
180 F.addParamAttr(ArgNo, Attribute::NoAlias); in setDoesNotAlias()
185 static bool setOnlyReadsMemory(Function &F, unsigned ArgNo) { in setOnlyReadsMemory() argument
186 if (F.hasParamAttribute(ArgNo, Attribute::ReadOnly)) in setOnlyReadsMemory()
188 F.addParamAttr(ArgNo, Attribute::ReadOnly); in setOnlyReadsMemory()
193 static bool setOnlyWritesMemory(Function &F, unsigned ArgNo) { in setOnlyWritesMemory() argument
194 if (F.hasParamAttribute(ArgNo, Attribute::WriteOnly)) in setOnlyWritesMemory()
196 F.addParamAttr(ArgNo, Attribute::WriteOnly); in setOnlyWritesMemory()
201 static bool setRetNoUndef(Function &F) { in setRetNoUndef() argument
202 if (!F.getReturnType()->isVoidTy() && in setRetNoUndef()
203 !F.hasRetAttribute(Attribute::NoUndef)) { in setRetNoUndef()
204 F.addRetAttr(Attribute::NoUndef); in setRetNoUndef()
211 static bool setArgsNoUndef(Function &F) { in setArgsNoUndef() argument
213 for (unsigned ArgNo = 0; ArgNo < F.arg_size(); ++ArgNo) { in setArgsNoUndef()
214 if (!F.hasParamAttribute(ArgNo, Attribute::NoUndef)) { in setArgsNoUndef()
215 F.addParamAttr(ArgNo, Attribute::NoUndef); in setArgsNoUndef()
223 static bool setArgNoUndef(Function &F, unsigned ArgNo) { in setArgNoUndef() argument
224 if (F.hasParamAttribute(ArgNo, Attribute::NoUndef)) in setArgNoUndef()
226 F.addParamAttr(ArgNo, Attribute::NoUndef); in setArgNoUndef()
231 static bool setRetAndArgsNoUndef(Function &F) { in setRetAndArgsNoUndef() argument
233 UndefAdded |= setRetNoUndef(F); in setRetAndArgsNoUndef()
234 UndefAdded |= setArgsNoUndef(F); in setRetAndArgsNoUndef()
238 static bool setReturnedArg(Function &F, unsigned ArgNo) { in setReturnedArg() argument
239 if (F.hasParamAttribute(ArgNo, Attribute::Returned)) in setReturnedArg()
241 F.addParamAttr(ArgNo, Attribute::Returned); in setReturnedArg()
246 static bool setNonLazyBind(Function &F) { in setNonLazyBind() argument
247 if (F.hasFnAttribute(Attribute::NonLazyBind)) in setNonLazyBind()
249 F.addFnAttr(Attribute::NonLazyBind); in setNonLazyBind()
253 static bool setDoesNotFreeMemory(Function &F) { in setDoesNotFreeMemory() argument
254 if (F.hasFnAttribute(Attribute::NoFree)) in setDoesNotFreeMemory()
256 F.addFnAttr(Attribute::NoFree); in setDoesNotFreeMemory()
260 static bool setWillReturn(Function &F) { in setWillReturn() argument
261 if (F.hasFnAttribute(Attribute::WillReturn)) in setWillReturn()
263 F.addFnAttr(Attribute::WillReturn); in setWillReturn()
268 static bool setAlignedAllocParam(Function &F, unsigned ArgNo) { in setAlignedAllocParam() argument
269 if (F.hasParamAttribute(ArgNo, Attribute::AllocAlign)) in setAlignedAllocParam()
271 F.addParamAttr(ArgNo, Attribute::AllocAlign); in setAlignedAllocParam()
275 static bool setAllocatedPointerParam(Function &F, unsigned ArgNo) { in setAllocatedPointerParam() argument
276 if (F.hasParamAttribute(ArgNo, Attribute::AllocatedPointer)) in setAllocatedPointerParam()
278 F.addParamAttr(ArgNo, Attribute::AllocatedPointer); in setAllocatedPointerParam()
282 static bool setAllocSize(Function &F, unsigned ElemSizeArg, in setAllocSize() argument
284 if (F.hasFnAttribute(Attribute::AllocSize)) in setAllocSize()
286 F.addFnAttr(Attribute::getWithAllocSizeArgs(F.getContext(), ElemSizeArg, in setAllocSize()
291 static bool setAllocFamily(Function &F, StringRef Family) { in setAllocFamily() argument
292 if (F.hasFnAttribute("alloc-family")) in setAllocFamily()
294 F.addFnAttr("alloc-family", Family); in setAllocFamily()
298 static bool setAllocKind(Function &F, AllocFnKind K) { in setAllocKind() argument
299 if (F.hasFnAttribute(Attribute::AllocKind)) in setAllocKind()
301 F.addFnAttr( in setAllocKind()
302 Attribute::get(F.getContext(), Attribute::AllocKind, uint64_t(K))); in setAllocKind()
308 Function *F = M->getFunction(Name); in inferNonMandatoryLibFuncAttrs() local
309 if (!F) in inferNonMandatoryLibFuncAttrs()
311 return inferNonMandatoryLibFuncAttrs(*F, TLI); in inferNonMandatoryLibFuncAttrs()
314 bool llvm::inferNonMandatoryLibFuncAttrs(Function &F, in inferNonMandatoryLibFuncAttrs() argument
317 if (!(TLI.getLibFunc(F, TheLibFunc) && TLI.has(TheLibFunc))) in inferNonMandatoryLibFuncAttrs()
322 if (F.getParent() != nullptr && F.getParent()->getRtLibUseGOT()) in inferNonMandatoryLibFuncAttrs()
323 Changed |= setNonLazyBind(F); in inferNonMandatoryLibFuncAttrs()
332 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
333 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
334 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
335 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
336 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
337 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
341 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
342 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
343 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
344 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
345 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
354 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
355 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
356 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
357 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
358 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
362 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
363 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
364 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
365 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
366 Changed |= setReturnedArg(F, 0); in inferNonMandatoryLibFuncAttrs()
367 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
368 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
369 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
370 Changed |= setDoesNotAlias(F, 1); in inferNonMandatoryLibFuncAttrs()
374 Changed |= setReturnedArg(F, 0); in inferNonMandatoryLibFuncAttrs()
378 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
379 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
380 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
381 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
382 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
383 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
384 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
385 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
386 Changed |= setDoesNotAlias(F, 1); in inferNonMandatoryLibFuncAttrs()
389 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
390 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
391 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
392 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
393 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
394 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
400 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
401 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
402 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
403 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
404 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
405 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
406 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
413 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
414 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
415 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
416 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
417 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
418 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
422 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
423 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
424 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
425 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
426 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
427 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
431 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
432 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
433 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
434 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
435 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
438 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
439 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
440 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
441 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
445 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
446 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
447 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
450 Changed |= setArgNoUndef(F, 1); in inferNonMandatoryLibFuncAttrs()
453 Changed |= setAllocFamily(F, "malloc"); in inferNonMandatoryLibFuncAttrs()
454 Changed |= setOnlyAccessesInaccessibleMemOrArgMem(F); in inferNonMandatoryLibFuncAttrs()
455 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
456 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
457 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
458 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
459 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
463 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
464 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
465 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
466 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
467 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
470 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
471 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
472 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
473 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
474 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
475 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
478 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
479 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
480 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
481 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
482 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
483 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
484 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
487 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
488 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
489 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
490 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
491 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
492 Changed |= setDoesNotCapture(F, 2); in inferNonMandatoryLibFuncAttrs()
493 Changed |= setOnlyReadsMemory(F, 2); in inferNonMandatoryLibFuncAttrs()
496 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
497 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
498 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
499 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
500 Changed |= setDoesNotCapture(F, 2); in inferNonMandatoryLibFuncAttrs()
501 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
505 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
506 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
507 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
510 Changed |= setAlignedAllocParam(F, 0); in inferNonMandatoryLibFuncAttrs()
511 Changed |= setAllocSize(F, 1, std::nullopt); in inferNonMandatoryLibFuncAttrs()
512 …Changed |= setAllocKind(F, AllocFnKind::Alloc | AllocFnKind::Uninitialized | AllocFnKind::Aligned); in inferNonMandatoryLibFuncAttrs()
517 Changed |= setAllocSize(F, 0, std::nullopt); in inferNonMandatoryLibFuncAttrs()
520 Changed |= setAllocFamily(F, TheLibFunc == LibFunc_vec_malloc ? "vec_malloc" in inferNonMandatoryLibFuncAttrs()
522 Changed |= setAllocKind(F, AllocFnKind::Alloc | AllocFnKind::Uninitialized); in inferNonMandatoryLibFuncAttrs()
523 Changed |= setOnlyAccessesInaccessibleMemory(F); in inferNonMandatoryLibFuncAttrs()
524 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
525 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
526 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
527 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
530 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
531 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
532 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
533 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
534 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
535 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
536 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
540 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
541 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
542 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
543 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
544 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
549 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
550 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
551 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
552 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
553 Changed |= setOnlyWritesMemory(F); in inferNonMandatoryLibFuncAttrs()
554 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
557 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
558 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
559 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
560 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
561 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
562 Changed |= setReturnedArg(F, 0); in inferNonMandatoryLibFuncAttrs()
563 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
564 Changed |= setDoesNotAlias(F, 1); in inferNonMandatoryLibFuncAttrs()
565 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
566 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
569 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
570 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
571 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
572 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
573 Changed |= setReturnedArg(F, 0); in inferNonMandatoryLibFuncAttrs()
574 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
575 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
576 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
580 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
583 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
584 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
585 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
586 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
587 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
588 Changed |= setDoesNotAlias(F, 1); in inferNonMandatoryLibFuncAttrs()
589 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
590 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
593 Changed |= setAllocFamily(F, "malloc"); in inferNonMandatoryLibFuncAttrs()
594 Changed |= setAllocKind(F, AllocFnKind::Alloc | AllocFnKind::Aligned | in inferNonMandatoryLibFuncAttrs()
596 Changed |= setAllocSize(F, 1, std::nullopt); in inferNonMandatoryLibFuncAttrs()
597 Changed |= setAlignedAllocParam(F, 0); in inferNonMandatoryLibFuncAttrs()
598 Changed |= setOnlyAccessesInaccessibleMemory(F); in inferNonMandatoryLibFuncAttrs()
599 Changed |= setRetNoUndef(F); in inferNonMandatoryLibFuncAttrs()
600 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
601 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
602 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
605 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
606 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
607 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
608 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
611 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
612 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
613 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
614 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
620 F, TheLibFunc == LibFunc_vec_realloc ? "vec_malloc" : "malloc"); in inferNonMandatoryLibFuncAttrs()
621 Changed |= setAllocKind(F, AllocFnKind::Realloc); in inferNonMandatoryLibFuncAttrs()
622 Changed |= setAllocatedPointerParam(F, 0); in inferNonMandatoryLibFuncAttrs()
623 Changed |= setAllocSize(F, 1, std::nullopt); in inferNonMandatoryLibFuncAttrs()
624 Changed |= setOnlyAccessesInaccessibleMemOrArgMem(F); in inferNonMandatoryLibFuncAttrs()
625 Changed |= setRetNoUndef(F); in inferNonMandatoryLibFuncAttrs()
626 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
627 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
628 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
629 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
630 Changed |= setArgNoUndef(F, 1); in inferNonMandatoryLibFuncAttrs()
633 Changed |= setAllocFamily(F, "malloc"); in inferNonMandatoryLibFuncAttrs()
634 Changed |= setAllocKind(F, AllocFnKind::Realloc); in inferNonMandatoryLibFuncAttrs()
635 Changed |= setAllocatedPointerParam(F, 0); in inferNonMandatoryLibFuncAttrs()
636 Changed |= setAllocSize(F, 1, 2); in inferNonMandatoryLibFuncAttrs()
637 Changed |= setOnlyAccessesInaccessibleMemOrArgMem(F); in inferNonMandatoryLibFuncAttrs()
638 Changed |= setRetNoUndef(F); in inferNonMandatoryLibFuncAttrs()
639 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
640 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
641 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
642 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
643 Changed |= setArgNoUndef(F, 1); in inferNonMandatoryLibFuncAttrs()
644 Changed |= setArgNoUndef(F, 2); in inferNonMandatoryLibFuncAttrs()
648 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
649 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
652 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
653 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
654 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
659 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
660 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
661 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
662 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
665 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
666 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
667 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
668 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
669 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
670 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
673 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
674 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
675 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
676 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
677 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
681 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
682 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
683 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
686 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
687 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
688 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
689 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
690 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
691 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
692 Changed |= setOnlyWritesMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
693 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
696 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
697 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
698 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
699 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
700 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
701 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
702 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
705 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
706 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
707 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
708 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
709 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
710 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
714 Changed |= setAllocFamily(F, TheLibFunc == LibFunc_vec_calloc ? "vec_malloc" in inferNonMandatoryLibFuncAttrs()
716 Changed |= setAllocKind(F, AllocFnKind::Alloc | AllocFnKind::Zeroed); in inferNonMandatoryLibFuncAttrs()
717 Changed |= setAllocSize(F, 0, 1); in inferNonMandatoryLibFuncAttrs()
718 Changed |= setOnlyAccessesInaccessibleMemory(F); in inferNonMandatoryLibFuncAttrs()
719 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
720 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
721 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
722 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
726 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
727 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
728 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
729 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
734 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
735 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
736 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
742 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
743 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
744 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
745 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
746 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
749 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
750 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
751 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
752 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
755 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
756 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
757 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
758 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
759 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
760 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
761 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
764 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
765 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
766 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
767 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
768 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
771 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
772 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
773 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
777 Changed |= setAllocFamily(F, TheLibFunc == LibFunc_vec_free ? "vec_malloc" in inferNonMandatoryLibFuncAttrs()
779 Changed |= setAllocKind(F, AllocFnKind::Free); in inferNonMandatoryLibFuncAttrs()
780 Changed |= setAllocatedPointerParam(F, 0); in inferNonMandatoryLibFuncAttrs()
781 Changed |= setOnlyAccessesInaccessibleMemOrArgMem(F); in inferNonMandatoryLibFuncAttrs()
782 Changed |= setArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
783 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
784 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
785 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
800 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
801 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
802 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
805 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
806 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
807 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
808 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
813 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
814 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
815 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
820 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
821 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
822 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
823 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
824 Changed |= setOnlyWritesMemory(F); in inferNonMandatoryLibFuncAttrs()
825 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
828 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
829 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
830 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
834 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
835 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
836 Changed |= setDoesNotCapture(F, 2); in inferNonMandatoryLibFuncAttrs()
837 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
841 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
842 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
843 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
844 Changed |= setDoesNotCapture(F, 3); in inferNonMandatoryLibFuncAttrs()
845 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
849 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
850 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
851 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
852 Changed |= setDoesNotCapture(F, 3); in inferNonMandatoryLibFuncAttrs()
853 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
857 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
858 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
859 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
860 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
861 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
865 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
866 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
867 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
868 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
869 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
872 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
873 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
874 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
875 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
878 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
879 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
880 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
883 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
884 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
885 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
888 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
889 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
890 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
893 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
894 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
895 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
896 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
901 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
902 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
905 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
906 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
907 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
910 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
911 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
912 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
913 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
916 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
917 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
918 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
921 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
922 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
923 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
926 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
927 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
928 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
929 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
932 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
933 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
934 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
935 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
939 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
940 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
941 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
942 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
943 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
944 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
948 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
949 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
950 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
955 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
956 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
957 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
958 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
962 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
963 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
967 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
968 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
969 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
973 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
974 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
977 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
978 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
979 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
980 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
981 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
982 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
983 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
986 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
987 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
988 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
991 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
992 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
993 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
994 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
997 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
998 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
999 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1000 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1001 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1002 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
1005 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1006 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1007 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1008 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1009 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
1012 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1013 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1014 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1015 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1019 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1020 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1021 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1022 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1023 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
1026 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1027 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1028 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1029 Changed |= setDoesNotCapture(F, 2); in inferNonMandatoryLibFuncAttrs()
1030 Changed |= setOnlyReadsMemory(F, 2); in inferNonMandatoryLibFuncAttrs()
1034 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1035 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1036 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1039 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1040 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1041 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
1042 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1043 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1046 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1047 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1048 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
1051 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1052 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1053 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1059 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1060 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
1061 Changed |= setDoesNotAccessMemory(F); in inferNonMandatoryLibFuncAttrs()
1064 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1065 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1066 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1067 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1068 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1071 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1072 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1073 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1074 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1079 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1080 Changed |= setDoesNotCapture(F, 3); in inferNonMandatoryLibFuncAttrs()
1083 Changed |= setArgNoUndef(F, 1); in inferNonMandatoryLibFuncAttrs()
1086 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1087 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
1088 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
1089 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1090 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1093 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1094 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
1095 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1096 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
1099 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1100 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1101 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1104 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1105 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1106 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1109 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1110 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1111 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1112 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1117 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1118 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1119 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1120 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1121 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1124 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1125 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1126 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1127 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1128 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1129 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
1132 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1133 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1134 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
1135 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1136 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1137 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1138 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
1142 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1143 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1144 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1147 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1148 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1149 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
1153 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1154 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1155 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1159 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1160 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1161 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1167 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1168 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1169 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1170 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1175 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1176 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1177 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
1180 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
1183 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
1184 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1185 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1186 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
1189 Changed |= setIsCold(F); in inferNonMandatoryLibFuncAttrs()
1190 Changed |= setNoReturn(F); in inferNonMandatoryLibFuncAttrs()
1191 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1195 Changed |= setIsCold(F); in inferNonMandatoryLibFuncAttrs()
1196 Changed |= setNoReturn(F); in inferNonMandatoryLibFuncAttrs()
1199 Changed |= setIsCold(F); in inferNonMandatoryLibFuncAttrs()
1200 Changed |= setNoReturn(F); in inferNonMandatoryLibFuncAttrs()
1205 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1206 Changed |= setDoesNotAccessMemory(F); in inferNonMandatoryLibFuncAttrs()
1207 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1322 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1323 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
1324 Changed |= setDoesNotFreeMemory(F); in inferNonMandatoryLibFuncAttrs()
1325 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
1326 Changed |= setOnlyWritesErrnoMemory(F); in inferNonMandatoryLibFuncAttrs()
1362 Changed |= setDoesNotAccessMemory(F); in inferNonMandatoryLibFuncAttrs()
1366 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1367 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
1368 Changed |= setDoesNotFreeMemory(F); in inferNonMandatoryLibFuncAttrs()
1369 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
1374 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1375 Changed |= setOnlyWritesMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
1380 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1381 Changed |= setDoesNotCallback(F); in inferNonMandatoryLibFuncAttrs()
1382 Changed |= setDoesNotFreeMemory(F); in inferNonMandatoryLibFuncAttrs()
1383 Changed |= setOnlyWritesMemory(F, 2); in inferNonMandatoryLibFuncAttrs()
1384 Changed |= setDoesNotCapture(F, 2); in inferNonMandatoryLibFuncAttrs()
1385 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
1386 Changed |= setOnlyWritesArgMemOrErrnoMem(F); in inferNonMandatoryLibFuncAttrs()
1395 if (!isLibFreeFunction(&F, TheLibFunc) && !isReallocLikeFn(&F)) in inferNonMandatoryLibFuncAttrs()
1396 Changed |= setDoesNotFreeMemory(F); in inferNonMandatoryLibFuncAttrs()
1400 static void setArgExtAttr(Function &F, unsigned ArgNo, in setArgExtAttr() argument
1403 if (ExtAttr != Attribute::None && !F.hasParamAttribute(ArgNo, ExtAttr)) in setArgExtAttr()
1404 F.addParamAttr(ArgNo, ExtAttr); in setArgExtAttr()
1407 static void setRetExtAttr(Function &F, in setRetExtAttr() argument
1410 if (ExtAttr != Attribute::None && !F.hasRetAttribute(ExtAttr)) in setRetExtAttr()
1411 F.addRetAttr(ExtAttr); in setRetExtAttr()
1415 void llvm::markRegisterParameterAttributes(Function *F) { in markRegisterParameterAttributes() argument
1416 if (!F->arg_size() || F->isVarArg()) in markRegisterParameterAttributes()
1419 const CallingConv::ID CC = F->getCallingConv(); in markRegisterParameterAttributes()
1423 const Module *M = F->getParent(); in markRegisterParameterAttributes()
1430 for (Argument &A : F->args()) { in markRegisterParameterAttributes()
1445 F->addParamAttr(A.getArgNo(), Attribute::InReg); in markRegisterParameterAttributes()
1466 Function *F = cast<Function>(C.getCallee()); in getOrInsertLibFunc() local
1467 assert(F->getFunctionType() == T && "Function type does not match."); in getOrInsertLibFunc()
1471 setArgExtAttr(*F, 0, TLI); in getOrInsertLibFunc()
1479 setArgExtAttr(*F, 1, TLI); in getOrInsertLibFunc()
1482 setArgExtAttr(*F, 2, TLI); in getOrInsertLibFunc()
1489 setRetExtAttr(*F, TLI); in getOrInsertLibFunc()
1517 markRegisterParameterAttributes(F); in getOrInsertLibFunc()
1536 if (auto *F = dyn_cast<Function>(GV)) in isLibFuncEmittable() local
1537 return TLI->isValidProtoForLibFunc(*F->getFunctionType(), TheLibFunc, *M); in isLibFuncEmittable()
1611 if (const Function *F = in emitLibCall() local
1613 CI->setCallingConv(F->getCallingConv()); in emitLibCall()
1704 if (const Function *F = in emitMemCpyChk() local
1706 CI->setCallingConv(F->getCallingConv()); in emitMemCpyChk()
1880 if (const Function *F = in emitUnaryFloatFnCallHelper() local
1882 CI->setCallingConv(F->getCallingConv()); in emitUnaryFloatFnCallHelper()
1930 if (const Function *F = in emitBinaryFloatFnCallHelper() local
1932 CI->setCallingConv(F->getCallingConv()); in emitBinaryFloatFnCallHelper()
1981 if (const Function *F = in emitPutChar() local
1983 CI->setCallingConv(F->getCallingConv()); in emitPutChar()
1999 if (const Function *F = in emitPutS() local
2001 CI->setCallingConv(F->getCallingConv()); in emitPutS()
2013 FunctionCallee F = getOrInsertLibFunc(M, *TLI, LibFunc_fputc, IntTy, in emitFPutC() local
2017 CallInst *CI = B.CreateCall(F, {Char, File}, FPutcName); in emitFPutC()
2020 dyn_cast<Function>(F.getCallee()->stripPointerCasts())) in emitFPutC()
2033 FunctionCallee F = getOrInsertLibFunc(M, *TLI, LibFunc_fputs, IntTy, in emitFPutS() local
2037 CallInst *CI = B.CreateCall(F, {Str, File}, FPutsName); in emitFPutS()
2040 dyn_cast<Function>(F.getCallee()->stripPointerCasts())) in emitFPutS()
2053 FunctionCallee F = in emitFWrite() local
2060 B.CreateCall(F, {Ptr, Size, in emitFWrite()
2064 dyn_cast<Function>(F.getCallee()->stripPointerCasts())) in emitFWrite()
2082 if (const Function *F = in emitMalloc() local
2084 CI->setCallingConv(F->getCallingConv()); in emitMalloc()
2102 if (const auto *F = in emitCalloc() local
2104 CI->setCallingConv(F->getCallingConv()); in emitCalloc()
2127 if (const Function *F = dyn_cast<Function>(Func.getCallee())) in emitHotColdSizeReturningNew() local
2128 CI->setCallingConv(F->getCallingConv()); in emitHotColdSizeReturningNew()
2153 if (const Function *F = dyn_cast<Function>(Func.getCallee())) in emitHotColdSizeReturningNewAligned() local
2154 CI->setCallingConv(F->getCallingConv()); in emitHotColdSizeReturningNewAligned()
2172 if (const Function *F = in emitHotColdNew() local
2174 CI->setCallingConv(F->getCallingConv()); in emitHotColdNew()
2192 if (const Function *F = in emitHotColdNewNoThrow() local
2194 CI->setCallingConv(F->getCallingConv()); in emitHotColdNewNoThrow()
2212 if (const Function *F = in emitHotColdNewAligned() local
2214 CI->setCallingConv(F->getCallingConv()); in emitHotColdNewAligned()
2235 if (const Function *F = in emitHotColdNewAlignedNoThrow() local
2237 CI->setCallingConv(F->getCallingConv()); in emitHotColdNewAlignedNoThrow()