Lines Matching refs:F

51 static bool setDoesNotAccessMemory(Function &F) {  in setDoesNotAccessMemory()  argument
52 if (F.doesNotAccessMemory()) in setDoesNotAccessMemory()
54 F.setDoesNotAccessMemory(); in setDoesNotAccessMemory()
59 static bool setOnlyAccessesInaccessibleMemory(Function &F) { in setOnlyAccessesInaccessibleMemory() argument
60 if (F.onlyAccessesInaccessibleMemory()) in setOnlyAccessesInaccessibleMemory()
62 F.setOnlyAccessesInaccessibleMemory(); in setOnlyAccessesInaccessibleMemory()
67 static bool setOnlyReadsMemory(Function &F) { in setOnlyReadsMemory() argument
68 if (F.onlyReadsMemory()) in setOnlyReadsMemory()
70 F.setOnlyReadsMemory(); in setOnlyReadsMemory()
75 static bool setOnlyWritesMemory(Function &F) { in setOnlyWritesMemory() argument
76 if (F.onlyWritesMemory()) // writeonly or readnone in setOnlyWritesMemory()
79 if (F.hasFnAttribute(Attribute::ReadOnly)) { in setOnlyWritesMemory()
80 F.removeFnAttr(Attribute::ReadOnly); in setOnlyWritesMemory()
81 return setDoesNotAccessMemory(F); in setOnlyWritesMemory()
84 F.setOnlyWritesMemory(); in setOnlyWritesMemory()
88 static bool setOnlyAccessesArgMemory(Function &F) { in setOnlyAccessesArgMemory() argument
89 if (F.onlyAccessesArgMemory()) in setOnlyAccessesArgMemory()
91 F.setOnlyAccessesArgMemory(); in setOnlyAccessesArgMemory()
96 static bool setOnlyAccessesInaccessibleMemOrArgMem(Function &F) { in setOnlyAccessesInaccessibleMemOrArgMem() argument
97 if (F.onlyAccessesInaccessibleMemOrArgMem()) in setOnlyAccessesInaccessibleMemOrArgMem()
99 F.setOnlyAccessesInaccessibleMemOrArgMem(); in setOnlyAccessesInaccessibleMemOrArgMem()
104 static bool setDoesNotThrow(Function &F) { in setDoesNotThrow() argument
105 if (F.doesNotThrow()) in setDoesNotThrow()
107 F.setDoesNotThrow(); in setDoesNotThrow()
112 static bool setRetDoesNotAlias(Function &F) { in setRetDoesNotAlias() argument
113 if (F.hasRetAttribute(Attribute::NoAlias)) in setRetDoesNotAlias()
115 F.addRetAttr(Attribute::NoAlias); in setRetDoesNotAlias()
120 static bool setDoesNotCapture(Function &F, unsigned ArgNo) { in setDoesNotCapture() argument
121 if (F.hasParamAttribute(ArgNo, Attribute::NoCapture)) in setDoesNotCapture()
123 F.addParamAttr(ArgNo, Attribute::NoCapture); in setDoesNotCapture()
128 static bool setDoesNotAlias(Function &F, unsigned ArgNo) { in setDoesNotAlias() argument
129 if (F.hasParamAttribute(ArgNo, Attribute::NoAlias)) in setDoesNotAlias()
131 F.addParamAttr(ArgNo, Attribute::NoAlias); in setDoesNotAlias()
136 static bool setOnlyReadsMemory(Function &F, unsigned ArgNo) { in setOnlyReadsMemory() argument
137 if (F.hasParamAttribute(ArgNo, Attribute::ReadOnly)) in setOnlyReadsMemory()
139 F.addParamAttr(ArgNo, Attribute::ReadOnly); in setOnlyReadsMemory()
144 static bool setOnlyWritesMemory(Function &F, unsigned ArgNo) { in setOnlyWritesMemory() argument
145 if (F.hasParamAttribute(ArgNo, Attribute::WriteOnly)) in setOnlyWritesMemory()
147 F.addParamAttr(ArgNo, Attribute::WriteOnly); in setOnlyWritesMemory()
152 static bool setRetNoUndef(Function &F) { in setRetNoUndef() argument
153 if (!F.getReturnType()->isVoidTy() && in setRetNoUndef()
154 !F.hasRetAttribute(Attribute::NoUndef)) { in setRetNoUndef()
155 F.addRetAttr(Attribute::NoUndef); in setRetNoUndef()
162 static bool setArgsNoUndef(Function &F) { in setArgsNoUndef() argument
164 for (unsigned ArgNo = 0; ArgNo < F.arg_size(); ++ArgNo) { in setArgsNoUndef()
165 if (!F.hasParamAttribute(ArgNo, Attribute::NoUndef)) { in setArgsNoUndef()
166 F.addParamAttr(ArgNo, Attribute::NoUndef); in setArgsNoUndef()
174 static bool setArgNoUndef(Function &F, unsigned ArgNo) { in setArgNoUndef() argument
175 if (F.hasParamAttribute(ArgNo, Attribute::NoUndef)) in setArgNoUndef()
177 F.addParamAttr(ArgNo, Attribute::NoUndef); in setArgNoUndef()
182 static bool setRetAndArgsNoUndef(Function &F) { in setRetAndArgsNoUndef() argument
184 UndefAdded |= setRetNoUndef(F); in setRetAndArgsNoUndef()
185 UndefAdded |= setArgsNoUndef(F); in setRetAndArgsNoUndef()
189 static bool setReturnedArg(Function &F, unsigned ArgNo) { in setReturnedArg() argument
190 if (F.hasParamAttribute(ArgNo, Attribute::Returned)) in setReturnedArg()
192 F.addParamAttr(ArgNo, Attribute::Returned); in setReturnedArg()
197 static bool setNonLazyBind(Function &F) { in setNonLazyBind() argument
198 if (F.hasFnAttribute(Attribute::NonLazyBind)) in setNonLazyBind()
200 F.addFnAttr(Attribute::NonLazyBind); in setNonLazyBind()
204 static bool setDoesNotFreeMemory(Function &F) { in setDoesNotFreeMemory() argument
205 if (F.hasFnAttribute(Attribute::NoFree)) in setDoesNotFreeMemory()
207 F.addFnAttr(Attribute::NoFree); in setDoesNotFreeMemory()
211 static bool setWillReturn(Function &F) { in setWillReturn() argument
212 if (F.hasFnAttribute(Attribute::WillReturn)) in setWillReturn()
214 F.addFnAttr(Attribute::WillReturn); in setWillReturn()
219 static bool setAlignedAllocParam(Function &F, unsigned ArgNo) { in setAlignedAllocParam() argument
220 if (F.hasParamAttribute(ArgNo, Attribute::AllocAlign)) in setAlignedAllocParam()
222 F.addParamAttr(ArgNo, Attribute::AllocAlign); in setAlignedAllocParam()
226 static bool setAllocatedPointerParam(Function &F, unsigned ArgNo) { in setAllocatedPointerParam() argument
227 if (F.hasParamAttribute(ArgNo, Attribute::AllocatedPointer)) in setAllocatedPointerParam()
229 F.addParamAttr(ArgNo, Attribute::AllocatedPointer); in setAllocatedPointerParam()
233 static bool setAllocSize(Function &F, unsigned ElemSizeArg, in setAllocSize() argument
235 if (F.hasFnAttribute(Attribute::AllocSize)) in setAllocSize()
237 F.addFnAttr(Attribute::getWithAllocSizeArgs(F.getContext(), ElemSizeArg, in setAllocSize()
242 static bool setAllocFamily(Function &F, StringRef Family) { in setAllocFamily() argument
243 if (F.hasFnAttribute("alloc-family")) in setAllocFamily()
245 F.addFnAttr("alloc-family", Family); in setAllocFamily()
249 static bool setAllocKind(Function &F, AllocFnKind K) { in setAllocKind() argument
250 if (F.hasFnAttribute(Attribute::AllocKind)) in setAllocKind()
252 F.addFnAttr( in setAllocKind()
253 Attribute::get(F.getContext(), Attribute::AllocKind, uint64_t(K))); in setAllocKind()
259 Function *F = M->getFunction(Name); in inferNonMandatoryLibFuncAttrs() local
260 if (!F) in inferNonMandatoryLibFuncAttrs()
262 return inferNonMandatoryLibFuncAttrs(*F, TLI); in inferNonMandatoryLibFuncAttrs()
265 bool llvm::inferNonMandatoryLibFuncAttrs(Function &F, in inferNonMandatoryLibFuncAttrs() argument
268 if (!(TLI.getLibFunc(F, TheLibFunc) && TLI.has(TheLibFunc))) in inferNonMandatoryLibFuncAttrs()
273 if (F.getParent() != nullptr && F.getParent()->getRtLibUseGOT()) in inferNonMandatoryLibFuncAttrs()
274 Changed |= setNonLazyBind(F); in inferNonMandatoryLibFuncAttrs()
280 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
281 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
282 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
283 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
284 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
288 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
289 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
290 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
291 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
300 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
301 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
302 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
303 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
307 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
308 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
309 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
310 Changed |= setReturnedArg(F, 0); in inferNonMandatoryLibFuncAttrs()
311 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
312 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
313 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
314 Changed |= setDoesNotAlias(F, 1); in inferNonMandatoryLibFuncAttrs()
318 Changed |= setReturnedArg(F, 0); in inferNonMandatoryLibFuncAttrs()
322 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
323 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
324 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
325 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
326 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
327 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
328 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
329 Changed |= setDoesNotAlias(F, 1); in inferNonMandatoryLibFuncAttrs()
332 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
333 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
334 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
335 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
336 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
342 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
343 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
344 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
345 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
346 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
347 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
354 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
355 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
356 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
357 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
358 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
362 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
363 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
364 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
365 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
366 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
370 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
371 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
372 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
373 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
376 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
377 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
378 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
379 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
383 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
384 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
385 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
388 Changed |= setArgNoUndef(F, 1); in inferNonMandatoryLibFuncAttrs()
391 Changed |= setAllocFamily(F, "malloc"); in inferNonMandatoryLibFuncAttrs()
392 Changed |= setOnlyAccessesInaccessibleMemOrArgMem(F); in inferNonMandatoryLibFuncAttrs()
393 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
394 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
395 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
396 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
397 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
401 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
402 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
403 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
404 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
405 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
408 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
409 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
410 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
411 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
412 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
413 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
416 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
417 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
418 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
419 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
420 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
421 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
422 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
425 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
426 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
427 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
428 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
429 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
430 Changed |= setDoesNotCapture(F, 2); in inferNonMandatoryLibFuncAttrs()
431 Changed |= setOnlyReadsMemory(F, 2); in inferNonMandatoryLibFuncAttrs()
434 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
435 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
436 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
437 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
438 Changed |= setDoesNotCapture(F, 2); in inferNonMandatoryLibFuncAttrs()
439 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
443 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
444 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
445 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
448 Changed |= setAlignedAllocParam(F, 0); in inferNonMandatoryLibFuncAttrs()
449 Changed |= setAllocSize(F, 1, None); in inferNonMandatoryLibFuncAttrs()
450 …Changed |= setAllocKind(F, AllocFnKind::Alloc | AllocFnKind::Uninitialized | AllocFnKind::Aligned); in inferNonMandatoryLibFuncAttrs()
455 Changed |= setAllocFamily(F, TheLibFunc == LibFunc_vec_malloc ? "vec_malloc" in inferNonMandatoryLibFuncAttrs()
457 Changed |= setAllocKind(F, AllocFnKind::Alloc | AllocFnKind::Uninitialized); in inferNonMandatoryLibFuncAttrs()
458 Changed |= setAllocSize(F, 0, None); in inferNonMandatoryLibFuncAttrs()
459 Changed |= setOnlyAccessesInaccessibleMemory(F); in inferNonMandatoryLibFuncAttrs()
460 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
461 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
462 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
463 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
466 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
467 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
468 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
469 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
470 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
471 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
475 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
476 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
477 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
478 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
483 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
484 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
485 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
488 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
489 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
490 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
491 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
492 Changed |= setReturnedArg(F, 0); in inferNonMandatoryLibFuncAttrs()
493 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
494 Changed |= setDoesNotAlias(F, 1); in inferNonMandatoryLibFuncAttrs()
495 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
496 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
499 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
500 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
501 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
502 Changed |= setReturnedArg(F, 0); in inferNonMandatoryLibFuncAttrs()
503 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
504 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
505 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
509 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
512 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
513 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
514 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
515 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
516 Changed |= setDoesNotAlias(F, 1); in inferNonMandatoryLibFuncAttrs()
517 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
518 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
521 Changed |= setAllocFamily(F, "malloc"); in inferNonMandatoryLibFuncAttrs()
522 Changed |= setAllocKind(F, AllocFnKind::Alloc | AllocFnKind::Aligned | in inferNonMandatoryLibFuncAttrs()
524 Changed |= setAllocSize(F, 1, None); in inferNonMandatoryLibFuncAttrs()
525 Changed |= setAlignedAllocParam(F, 0); in inferNonMandatoryLibFuncAttrs()
526 Changed |= setOnlyAccessesInaccessibleMemory(F); in inferNonMandatoryLibFuncAttrs()
527 Changed |= setRetNoUndef(F); in inferNonMandatoryLibFuncAttrs()
528 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
529 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
530 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
533 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
534 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
535 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
536 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
539 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
540 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
541 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
542 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
548 F, TheLibFunc == LibFunc_vec_realloc ? "vec_malloc" : "malloc"); in inferNonMandatoryLibFuncAttrs()
549 Changed |= setAllocKind(F, AllocFnKind::Realloc); in inferNonMandatoryLibFuncAttrs()
550 Changed |= setAllocatedPointerParam(F, 0); in inferNonMandatoryLibFuncAttrs()
551 Changed |= setAllocSize(F, 1, None); in inferNonMandatoryLibFuncAttrs()
552 Changed |= setOnlyAccessesInaccessibleMemOrArgMem(F); in inferNonMandatoryLibFuncAttrs()
553 Changed |= setRetNoUndef(F); in inferNonMandatoryLibFuncAttrs()
554 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
555 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
556 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
557 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
558 Changed |= setArgNoUndef(F, 1); in inferNonMandatoryLibFuncAttrs()
562 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
563 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
566 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
567 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
568 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
573 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
574 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
575 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
576 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
579 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
580 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
581 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
582 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
583 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
584 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
587 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
588 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
589 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
590 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
591 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
595 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
596 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
597 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
600 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
601 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
602 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
603 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
604 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
605 Changed |= setOnlyWritesMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
606 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
609 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
610 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
611 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
612 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
613 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
614 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
617 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
618 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
619 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
620 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
621 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
625 Changed |= setAllocFamily(F, TheLibFunc == LibFunc_vec_calloc ? "vec_malloc" in inferNonMandatoryLibFuncAttrs()
627 Changed |= setAllocKind(F, AllocFnKind::Alloc | AllocFnKind::Zeroed); in inferNonMandatoryLibFuncAttrs()
628 Changed |= setAllocSize(F, 0, 1); in inferNonMandatoryLibFuncAttrs()
629 Changed |= setOnlyAccessesInaccessibleMemory(F); in inferNonMandatoryLibFuncAttrs()
630 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
631 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
632 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
633 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
637 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
638 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
639 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
640 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
645 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
646 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
647 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
653 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
654 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
655 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
656 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 |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
668 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
669 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
670 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
671 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
674 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
675 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
676 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
677 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
678 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
681 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
682 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
683 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
687 Changed |= setAllocFamily(F, TheLibFunc == LibFunc_vec_free ? "vec_malloc" in inferNonMandatoryLibFuncAttrs()
689 Changed |= setAllocKind(F, AllocFnKind::Free); in inferNonMandatoryLibFuncAttrs()
690 Changed |= setAllocatedPointerParam(F, 0); in inferNonMandatoryLibFuncAttrs()
691 Changed |= setOnlyAccessesInaccessibleMemOrArgMem(F); in inferNonMandatoryLibFuncAttrs()
692 Changed |= setArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
693 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
694 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
695 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
710 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
711 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
712 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
715 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
716 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
717 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
718 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
723 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
724 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
725 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
730 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
731 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
732 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
735 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
736 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
737 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
741 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
742 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
743 Changed |= setDoesNotCapture(F, 2); in inferNonMandatoryLibFuncAttrs()
747 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
748 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
749 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
750 Changed |= setDoesNotCapture(F, 3); in inferNonMandatoryLibFuncAttrs()
754 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
755 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
756 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
757 Changed |= setDoesNotCapture(F, 3); in inferNonMandatoryLibFuncAttrs()
762 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
763 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
764 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
765 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
766 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
770 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
771 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
772 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
773 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
774 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
777 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
778 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
779 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
780 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
783 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
784 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
785 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
788 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
789 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
790 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
793 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
794 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
795 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
798 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
799 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
800 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
801 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
806 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
807 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
810 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
811 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
812 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
815 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
816 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
817 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
818 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
821 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
822 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
823 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
826 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
827 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
828 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
831 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
832 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
833 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
834 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
837 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
838 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
839 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
840 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
844 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
845 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
846 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
847 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
848 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
849 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
853 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
854 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
855 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
860 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
861 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
862 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
863 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
867 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
868 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
872 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
873 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
874 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
878 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
879 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
882 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
883 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
884 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
885 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
886 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
887 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
888 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
891 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
892 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
893 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
896 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
897 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
898 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
899 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
902 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
903 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
904 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
905 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
906 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
907 Changed |= setOnlyReadsMemory(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 |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
914 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
917 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
918 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
919 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
920 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
924 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
925 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
926 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
927 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
928 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
931 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
932 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
933 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
934 Changed |= setDoesNotCapture(F, 2); in inferNonMandatoryLibFuncAttrs()
935 Changed |= setOnlyReadsMemory(F, 2); in inferNonMandatoryLibFuncAttrs()
939 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
940 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
941 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
944 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
945 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
946 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
947 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
948 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
951 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
952 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
953 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
956 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
957 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
958 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
964 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
965 Changed |= setDoesNotAccessMemory(F); in inferNonMandatoryLibFuncAttrs()
968 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
969 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
970 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
971 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
972 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
975 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
976 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
977 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
978 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
983 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
984 Changed |= setDoesNotCapture(F, 3); in inferNonMandatoryLibFuncAttrs()
987 Changed |= setArgNoUndef(F, 1); in inferNonMandatoryLibFuncAttrs()
990 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
991 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
992 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
993 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
994 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
997 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
998 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
999 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
1002 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1003 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1004 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1007 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1008 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1009 Changed |= setDoesNotCapture(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()
1020 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1021 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1022 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1023 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1024 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1027 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1028 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1029 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1030 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1031 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1032 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
1035 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1036 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1037 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
1038 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1039 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1040 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1041 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
1045 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1046 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1047 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1050 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1051 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1052 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
1056 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1057 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1058 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1062 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1063 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1064 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1070 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1071 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1072 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1073 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1078 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
1079 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
1080 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
1083 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
1086 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
1087 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
1088 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1092 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
1093 Changed |= setDoesNotAccessMemory(F); in inferNonMandatoryLibFuncAttrs()
1094 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1099 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
1223 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1224 Changed |= setDoesNotFreeMemory(F); in inferNonMandatoryLibFuncAttrs()
1225 Changed |= setOnlyWritesMemory(F); in inferNonMandatoryLibFuncAttrs()
1226 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
1235 if (!isLibFreeFunction(&F, TheLibFunc) && !isReallocLikeFn(&F, &TLI)) in inferNonMandatoryLibFuncAttrs()
1236 Changed |= setDoesNotFreeMemory(F); in inferNonMandatoryLibFuncAttrs()
1240 static void setArgExtAttr(Function &F, unsigned ArgNo, in setArgExtAttr() argument
1243 if (ExtAttr != Attribute::None && !F.hasParamAttribute(ArgNo, ExtAttr)) in setArgExtAttr()
1244 F.addParamAttr(ArgNo, ExtAttr); in setArgExtAttr()
1248 static void markRegisterParameterAttributes(Function *F) { in markRegisterParameterAttributes() argument
1249 if (!F->arg_size() || F->isVarArg()) in markRegisterParameterAttributes()
1252 const CallingConv::ID CC = F->getCallingConv(); in markRegisterParameterAttributes()
1256 const Module *M = F->getParent(); in markRegisterParameterAttributes()
1263 for (Argument &A : F->args()) { in markRegisterParameterAttributes()
1278 F->addParamAttr(A.getArgNo(), Attribute::InReg); in markRegisterParameterAttributes()
1299 Function *F = cast<Function>(C.getCallee()); in getOrInsertLibFunc() local
1300 assert(F->getFunctionType() == T && "Function type does not match."); in getOrInsertLibFunc()
1304 setArgExtAttr(*F, 0, TLI); in getOrInsertLibFunc()
1312 setArgExtAttr(*F, 1, TLI); in getOrInsertLibFunc()
1315 setArgExtAttr(*F, 2, TLI); in getOrInsertLibFunc()
1348 markRegisterParameterAttributes(F); in getOrInsertLibFunc()
1367 if (auto *F = dyn_cast<Function>(GV)) in isLibFuncEmittable() local
1368 return TLI->isValidProtoForLibFunc(*F->getFunctionType(), TheLibFunc, *M); in isLibFuncEmittable()
1438 if (const Function *F = in emitLibCall() local
1440 CI->setCallingConv(F->getCallingConv()); in emitLibCall()
1520 if (const Function *F = in emitMemCpyChk() local
1522 CI->setCallingConv(F->getCallingConv()); in emitMemCpyChk()
1673 if (const Function *F = in emitUnaryFloatFnCallHelper() local
1675 CI->setCallingConv(F->getCallingConv()); in emitUnaryFloatFnCallHelper()
1723 if (const Function *F = in emitBinaryFloatFnCallHelper() local
1725 CI->setCallingConv(F->getCallingConv()); in emitBinaryFloatFnCallHelper()
1776 if (const Function *F = in emitPutChar() local
1778 CI->setCallingConv(F->getCallingConv()); in emitPutChar()
1793 if (const Function *F = in emitPutS() local
1795 CI->setCallingConv(F->getCallingConv()); in emitPutS()
1806 FunctionCallee F = getOrInsertLibFunc(M, *TLI, LibFunc_fputc, B.getInt32Ty(), in emitFPutC() local
1812 CallInst *CI = B.CreateCall(F, {Char, File}, FPutcName); in emitFPutC()
1815 dyn_cast<Function>(F.getCallee()->stripPointerCasts())) in emitFPutC()
1827 FunctionCallee F = getOrInsertLibFunc(M, *TLI, LibFunc_fputs, B.getInt32Ty(), in emitFPutS() local
1831 CallInst *CI = B.CreateCall(F, {castToCStr(Str, B), File}, FPutsName); in emitFPutS()
1834 dyn_cast<Function>(F.getCallee()->stripPointerCasts())) in emitFPutS()
1847 FunctionCallee F = getOrInsertLibFunc(M, *TLI, LibFunc_fwrite, in emitFWrite() local
1854 B.CreateCall(F, {castToCStr(Ptr, B), Size, in emitFWrite()
1858 dyn_cast<Function>(F.getCallee()->stripPointerCasts())) in emitFWrite()
1876 if (const Function *F = in emitMalloc() local
1878 CI->setCallingConv(F->getCallingConv()); in emitMalloc()
1897 if (const auto *F = in emitCalloc() local
1899 CI->setCallingConv(F->getCallingConv()); in emitCalloc()