Lines Matching +full:1 +full:f
52 static bool setDoesNotAccessMemory(Function &F) { in setDoesNotAccessMemory() argument
53 if (F.doesNotAccessMemory()) in setDoesNotAccessMemory()
55 F.setDoesNotAccessMemory(); in setDoesNotAccessMemory()
60 static bool setOnlyAccessesInaccessibleMemory(Function &F) { in setOnlyAccessesInaccessibleMemory() argument
61 if (F.onlyAccessesInaccessibleMemory()) in setOnlyAccessesInaccessibleMemory()
63 F.setOnlyAccessesInaccessibleMemory(); in setOnlyAccessesInaccessibleMemory()
68 static bool setOnlyReadsMemory(Function &F) { in setOnlyReadsMemory() argument
69 if (F.onlyReadsMemory()) in setOnlyReadsMemory()
71 F.setOnlyReadsMemory(); in setOnlyReadsMemory()
76 static bool setOnlyWritesMemory(Function &F) { in setOnlyWritesMemory() argument
77 if (F.onlyWritesMemory()) // writeonly or readnone in setOnlyWritesMemory()
80 F.setOnlyWritesMemory(); in setOnlyWritesMemory()
84 static bool setOnlyAccessesArgMemory(Function &F) { in setOnlyAccessesArgMemory() argument
85 if (F.onlyAccessesArgMemory()) in setOnlyAccessesArgMemory()
87 F.setOnlyAccessesArgMemory(); in setOnlyAccessesArgMemory()
92 static bool setOnlyAccessesInaccessibleMemOrArgMem(Function &F) { in setOnlyAccessesInaccessibleMemOrArgMem() argument
93 if (F.onlyAccessesInaccessibleMemOrArgMem()) in setOnlyAccessesInaccessibleMemOrArgMem()
95 F.setOnlyAccessesInaccessibleMemOrArgMem(); in setOnlyAccessesInaccessibleMemOrArgMem()
100 static bool setDoesNotThrow(Function &F) { in setDoesNotThrow() argument
101 if (F.doesNotThrow()) in setDoesNotThrow()
103 F.setDoesNotThrow(); in setDoesNotThrow()
108 static bool setRetDoesNotAlias(Function &F) { in setRetDoesNotAlias() argument
109 if (F.hasRetAttribute(Attribute::NoAlias)) in setRetDoesNotAlias()
111 F.addRetAttr(Attribute::NoAlias); in setRetDoesNotAlias()
116 static bool setDoesNotCapture(Function &F, unsigned ArgNo) { in setDoesNotCapture() argument
117 if (F.hasParamAttribute(ArgNo, Attribute::NoCapture)) in setDoesNotCapture()
119 F.addParamAttr(ArgNo, Attribute::NoCapture); in setDoesNotCapture()
124 static bool setDoesNotAlias(Function &F, unsigned ArgNo) { in setDoesNotAlias() argument
125 if (F.hasParamAttribute(ArgNo, Attribute::NoAlias)) in setDoesNotAlias()
127 F.addParamAttr(ArgNo, Attribute::NoAlias); in setDoesNotAlias()
132 static bool setOnlyReadsMemory(Function &F, unsigned ArgNo) { in setOnlyReadsMemory() argument
133 if (F.hasParamAttribute(ArgNo, Attribute::ReadOnly)) in setOnlyReadsMemory()
135 F.addParamAttr(ArgNo, Attribute::ReadOnly); in setOnlyReadsMemory()
140 static bool setOnlyWritesMemory(Function &F, unsigned ArgNo) { in setOnlyWritesMemory() argument
141 if (F.hasParamAttribute(ArgNo, Attribute::WriteOnly)) in setOnlyWritesMemory()
143 F.addParamAttr(ArgNo, Attribute::WriteOnly); in setOnlyWritesMemory()
148 static bool setRetNoUndef(Function &F) { in setRetNoUndef() argument
149 if (!F.getReturnType()->isVoidTy() && in setRetNoUndef()
150 !F.hasRetAttribute(Attribute::NoUndef)) { in setRetNoUndef()
151 F.addRetAttr(Attribute::NoUndef); in setRetNoUndef()
158 static bool setArgsNoUndef(Function &F) { in setArgsNoUndef() argument
160 for (unsigned ArgNo = 0; ArgNo < F.arg_size(); ++ArgNo) { in setArgsNoUndef()
161 if (!F.hasParamAttribute(ArgNo, Attribute::NoUndef)) { in setArgsNoUndef()
162 F.addParamAttr(ArgNo, Attribute::NoUndef); in setArgsNoUndef()
170 static bool setArgNoUndef(Function &F, unsigned ArgNo) { in setArgNoUndef() argument
171 if (F.hasParamAttribute(ArgNo, Attribute::NoUndef)) in setArgNoUndef()
173 F.addParamAttr(ArgNo, Attribute::NoUndef); in setArgNoUndef()
178 static bool setRetAndArgsNoUndef(Function &F) { in setRetAndArgsNoUndef() argument
180 UndefAdded |= setRetNoUndef(F); in setRetAndArgsNoUndef()
181 UndefAdded |= setArgsNoUndef(F); in setRetAndArgsNoUndef()
185 static bool setReturnedArg(Function &F, unsigned ArgNo) { in setReturnedArg() argument
186 if (F.hasParamAttribute(ArgNo, Attribute::Returned)) in setReturnedArg()
188 F.addParamAttr(ArgNo, Attribute::Returned); in setReturnedArg()
193 static bool setNonLazyBind(Function &F) { in setNonLazyBind() argument
194 if (F.hasFnAttribute(Attribute::NonLazyBind)) in setNonLazyBind()
196 F.addFnAttr(Attribute::NonLazyBind); in setNonLazyBind()
200 static bool setDoesNotFreeMemory(Function &F) { in setDoesNotFreeMemory() argument
201 if (F.hasFnAttribute(Attribute::NoFree)) in setDoesNotFreeMemory()
203 F.addFnAttr(Attribute::NoFree); in setDoesNotFreeMemory()
207 static bool setWillReturn(Function &F) { in setWillReturn() argument
208 if (F.hasFnAttribute(Attribute::WillReturn)) in setWillReturn()
210 F.addFnAttr(Attribute::WillReturn); in setWillReturn()
215 static bool setAlignedAllocParam(Function &F, unsigned ArgNo) { in setAlignedAllocParam() argument
216 if (F.hasParamAttribute(ArgNo, Attribute::AllocAlign)) in setAlignedAllocParam()
218 F.addParamAttr(ArgNo, Attribute::AllocAlign); in setAlignedAllocParam()
222 static bool setAllocatedPointerParam(Function &F, unsigned ArgNo) { in setAllocatedPointerParam() argument
223 if (F.hasParamAttribute(ArgNo, Attribute::AllocatedPointer)) in setAllocatedPointerParam()
225 F.addParamAttr(ArgNo, Attribute::AllocatedPointer); in setAllocatedPointerParam()
229 static bool setAllocSize(Function &F, unsigned ElemSizeArg, in setAllocSize() argument
231 if (F.hasFnAttribute(Attribute::AllocSize)) in setAllocSize()
233 F.addFnAttr(Attribute::getWithAllocSizeArgs(F.getContext(), ElemSizeArg, in setAllocSize()
238 static bool setAllocFamily(Function &F, StringRef Family) { in setAllocFamily() argument
239 if (F.hasFnAttribute("alloc-family")) in setAllocFamily()
241 F.addFnAttr("alloc-family", Family); in setAllocFamily()
245 static bool setAllocKind(Function &F, AllocFnKind K) { in setAllocKind() argument
246 if (F.hasFnAttribute(Attribute::AllocKind)) in setAllocKind()
248 F.addFnAttr( in setAllocKind()
249 Attribute::get(F.getContext(), Attribute::AllocKind, uint64_t(K))); in setAllocKind()
255 Function *F = M->getFunction(Name); in inferNonMandatoryLibFuncAttrs() local
256 if (!F) in inferNonMandatoryLibFuncAttrs()
258 return inferNonMandatoryLibFuncAttrs(*F, TLI); in inferNonMandatoryLibFuncAttrs()
261 bool llvm::inferNonMandatoryLibFuncAttrs(Function &F, in inferNonMandatoryLibFuncAttrs() argument
264 if (!(TLI.getLibFunc(F, TheLibFunc) && TLI.has(TheLibFunc))) in inferNonMandatoryLibFuncAttrs()
269 if (F.getParent() != nullptr && F.getParent()->getRtLibUseGOT()) in inferNonMandatoryLibFuncAttrs()
270 Changed |= setNonLazyBind(F); in inferNonMandatoryLibFuncAttrs()
276 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
277 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
278 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
279 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
280 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
284 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
285 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
286 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
287 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
296 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
297 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
298 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
299 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
303 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
304 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
305 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
306 Changed |= setReturnedArg(F, 0); in inferNonMandatoryLibFuncAttrs()
307 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
308 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
309 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
310 Changed |= setDoesNotAlias(F, 1); in inferNonMandatoryLibFuncAttrs()
314 Changed |= setReturnedArg(F, 0); in inferNonMandatoryLibFuncAttrs()
318 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
319 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
320 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
321 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
322 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
323 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
324 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
325 Changed |= setDoesNotAlias(F, 1); in inferNonMandatoryLibFuncAttrs()
328 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
329 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
330 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
331 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
332 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
334 case LibFunc_strcmp: // 0,1 in inferNonMandatoryLibFuncAttrs()
335 case LibFunc_strspn: // 0,1 in inferNonMandatoryLibFuncAttrs()
336 case LibFunc_strncmp: // 0,1 in inferNonMandatoryLibFuncAttrs()
337 case LibFunc_strcspn: // 0,1 in inferNonMandatoryLibFuncAttrs()
338 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
339 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
340 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
341 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
342 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
343 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
346 case LibFunc_strcasecmp: // 0,1 in inferNonMandatoryLibFuncAttrs()
350 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
351 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
352 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
353 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
354 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
358 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
359 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
360 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
361 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
362 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
366 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
367 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
368 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
369 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
372 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
373 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
374 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
375 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
379 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
380 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
381 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
384 Changed |= setArgNoUndef(F, 1); in inferNonMandatoryLibFuncAttrs()
387 Changed |= setAllocFamily(F, "malloc"); in inferNonMandatoryLibFuncAttrs()
388 Changed |= setOnlyAccessesInaccessibleMemOrArgMem(F); in inferNonMandatoryLibFuncAttrs()
389 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
390 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
391 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
392 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
393 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
397 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
398 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
399 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
400 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
401 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
404 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
405 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
406 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
407 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
408 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
409 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
412 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
413 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
414 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
415 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
416 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
417 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
418 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
421 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
422 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
423 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
424 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
425 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
426 Changed |= setDoesNotCapture(F, 2); in inferNonMandatoryLibFuncAttrs()
427 Changed |= setOnlyReadsMemory(F, 2); in inferNonMandatoryLibFuncAttrs()
430 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
431 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
432 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
433 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
434 Changed |= setDoesNotCapture(F, 2); in inferNonMandatoryLibFuncAttrs()
435 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
439 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
440 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
441 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
444 Changed |= setAlignedAllocParam(F, 0); in inferNonMandatoryLibFuncAttrs()
445 Changed |= setAllocSize(F, 1, std::nullopt); in inferNonMandatoryLibFuncAttrs()
446 …Changed |= setAllocKind(F, AllocFnKind::Alloc | AllocFnKind::Uninitialized | AllocFnKind::Aligned); in inferNonMandatoryLibFuncAttrs()
451 Changed |= setAllocFamily(F, TheLibFunc == LibFunc_vec_malloc ? "vec_malloc" in inferNonMandatoryLibFuncAttrs()
453 Changed |= setAllocKind(F, AllocFnKind::Alloc | AllocFnKind::Uninitialized); in inferNonMandatoryLibFuncAttrs()
454 Changed |= setAllocSize(F, 0, std::nullopt); in inferNonMandatoryLibFuncAttrs()
455 Changed |= setOnlyAccessesInaccessibleMemory(F); in inferNonMandatoryLibFuncAttrs()
456 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
457 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
458 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
459 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
462 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
463 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
464 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
465 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
466 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
467 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
471 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
472 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
473 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
474 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
479 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
480 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
481 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
482 Changed |= setOnlyWritesMemory(F); in inferNonMandatoryLibFuncAttrs()
483 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
486 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
487 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
488 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
489 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
490 Changed |= setReturnedArg(F, 0); in inferNonMandatoryLibFuncAttrs()
491 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
492 Changed |= setDoesNotAlias(F, 1); in inferNonMandatoryLibFuncAttrs()
493 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
494 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
497 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
498 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
499 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
500 Changed |= setReturnedArg(F, 0); in inferNonMandatoryLibFuncAttrs()
501 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
502 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
503 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
507 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
510 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
511 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
512 Changed |= setDoesNotAlias(F, 0); in inferNonMandatoryLibFuncAttrs()
513 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
514 Changed |= setDoesNotAlias(F, 1); in inferNonMandatoryLibFuncAttrs()
515 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
516 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
519 Changed |= setAllocFamily(F, "malloc"); in inferNonMandatoryLibFuncAttrs()
520 Changed |= setAllocKind(F, AllocFnKind::Alloc | AllocFnKind::Aligned | in inferNonMandatoryLibFuncAttrs()
522 Changed |= setAllocSize(F, 1, std::nullopt); in inferNonMandatoryLibFuncAttrs()
523 Changed |= setAlignedAllocParam(F, 0); in inferNonMandatoryLibFuncAttrs()
524 Changed |= setOnlyAccessesInaccessibleMemory(F); in inferNonMandatoryLibFuncAttrs()
525 Changed |= setRetNoUndef(F); in inferNonMandatoryLibFuncAttrs()
526 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
527 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
528 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
531 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
532 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
533 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
534 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
537 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
538 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
539 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
540 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
546 F, TheLibFunc == LibFunc_vec_realloc ? "vec_malloc" : "malloc"); in inferNonMandatoryLibFuncAttrs()
547 Changed |= setAllocKind(F, AllocFnKind::Realloc); in inferNonMandatoryLibFuncAttrs()
548 Changed |= setAllocatedPointerParam(F, 0); in inferNonMandatoryLibFuncAttrs()
549 Changed |= setAllocSize(F, 1, std::nullopt); in inferNonMandatoryLibFuncAttrs()
550 Changed |= setOnlyAccessesInaccessibleMemOrArgMem(F); in inferNonMandatoryLibFuncAttrs()
551 Changed |= setRetNoUndef(F); in inferNonMandatoryLibFuncAttrs()
552 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
553 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
554 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
555 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
556 Changed |= setArgNoUndef(F, 1); in inferNonMandatoryLibFuncAttrs()
560 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
561 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
564 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
565 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
566 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
571 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
572 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
573 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
574 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
577 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
578 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
579 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
580 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
581 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
582 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
585 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
586 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
587 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
588 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
589 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
593 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
594 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
595 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
598 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
599 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
600 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
601 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
602 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
603 Changed |= setOnlyWritesMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
604 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
607 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
608 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
609 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
610 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
611 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
612 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
615 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
616 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
617 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
618 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
619 Changed |= setOnlyWritesMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
623 Changed |= setAllocFamily(F, TheLibFunc == LibFunc_vec_calloc ? "vec_malloc" in inferNonMandatoryLibFuncAttrs()
625 Changed |= setAllocKind(F, AllocFnKind::Alloc | AllocFnKind::Zeroed); in inferNonMandatoryLibFuncAttrs()
626 Changed |= setAllocSize(F, 0, 1); in inferNonMandatoryLibFuncAttrs()
627 Changed |= setOnlyAccessesInaccessibleMemory(F); in inferNonMandatoryLibFuncAttrs()
628 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
629 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
630 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
631 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
635 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
636 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
637 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
638 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
643 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
644 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
645 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
651 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
652 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
653 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
654 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
657 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
658 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
659 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
660 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
663 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
664 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
665 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
666 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
667 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
668 Changed |= setOnlyReadsMemory(F, 0); in inferNonMandatoryLibFuncAttrs()
669 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
672 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
673 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
674 Changed |= setRetDoesNotAlias(F); in inferNonMandatoryLibFuncAttrs()
675 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
676 Changed |= setOnlyReadsMemory(F, 1); in inferNonMandatoryLibFuncAttrs()
679 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
680 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
681 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
685 Changed |= setAllocFamily(F, TheLibFunc == LibFunc_vec_free ? "vec_malloc" in inferNonMandatoryLibFuncAttrs()
687 Changed |= setAllocKind(F, AllocFnKind::Free); in inferNonMandatoryLibFuncAttrs()
688 Changed |= setAllocatedPointerParam(F, 0); in inferNonMandatoryLibFuncAttrs()
689 Changed |= setOnlyAccessesInaccessibleMemOrArgMem(F); in inferNonMandatoryLibFuncAttrs()
690 Changed |= setArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
691 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
692 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
693 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
708 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
709 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
710 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
713 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
714 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
715 Changed |= setDoesNotCapture(F, 0); in inferNonMandatoryLibFuncAttrs()
716 Changed |= setOnlyReadsMemory(F); in inferNonMandatoryLibFuncAttrs()
721 Changed |= setRetAndArgsNoUndef(F); in inferNonMandatoryLibFuncAttrs()
722 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
723 Changed |= setDoesNotCapture(F, 1); in inferNonMandatoryLibFuncAttrs()
728 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
729 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
730 Changed |= setOnlyAccessesArgMemory(F); in inferNonMandatoryLibFuncAttrs()
731 Changed |= setOnlyWritesMemory(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()
758 // FIXME: readonly #1? 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()
1104 Changed |= setDoesNotCapture(F, 2); in inferNonMandatoryLibFuncAttrs()
1234 Changed |= setDoesNotThrow(F); in inferNonMandatoryLibFuncAttrs()
1235 Changed |= setDoesNotFreeMemory(F); in inferNonMandatoryLibFuncAttrs()
1236 Changed |= setOnlyWritesMemory(F); in inferNonMandatoryLibFuncAttrs()
1237 Changed |= setWillReturn(F); in inferNonMandatoryLibFuncAttrs()
1246 if (!isLibFreeFunction(&F, TheLibFunc) && !isReallocLikeFn(&F)) in inferNonMandatoryLibFuncAttrs()
1247 Changed |= setDoesNotFreeMemory(F); in inferNonMandatoryLibFuncAttrs()
1251 static void setArgExtAttr(Function &F, unsigned ArgNo, in setArgExtAttr() argument
1254 if (ExtAttr != Attribute::None && !F.hasParamAttribute(ArgNo, ExtAttr)) in setArgExtAttr()
1255 F.addParamAttr(ArgNo, ExtAttr); in setArgExtAttr()
1258 static void setRetExtAttr(Function &F, in setRetExtAttr() argument
1261 if (ExtAttr != Attribute::None && !F.hasRetAttribute(ExtAttr)) in setRetExtAttr()
1262 F.addRetAttr(ExtAttr); in setRetExtAttr()
1266 void llvm::markRegisterParameterAttributes(Function *F) { in markRegisterParameterAttributes() argument
1267 if (!F->arg_size() || F->isVarArg()) in markRegisterParameterAttributes()
1270 const CallingConv::ID CC = F->getCallingConv(); in markRegisterParameterAttributes()
1274 const Module *M = F->getParent(); in markRegisterParameterAttributes()
1281 for (Argument &A : F->args()) { in markRegisterParameterAttributes()
1291 const unsigned NumRegs = TS > 4 ? 2 : 1; in markRegisterParameterAttributes()
1296 F->addParamAttr(A.getArgNo(), Attribute::InReg); in markRegisterParameterAttributes()
1315 // zero extensions as needed. F is retreived with cast<> because we demand in getOrInsertLibFunc()
1317 Function *F = cast<Function>(C.getCallee()); in getOrInsertLibFunc() local
1318 assert(F->getFunctionType() == T && "Function type does not match."); in getOrInsertLibFunc()
1322 setArgExtAttr(*F, 0, TLI); in getOrInsertLibFunc()
1330 setArgExtAttr(*F, 1, TLI); in getOrInsertLibFunc()
1333 setArgExtAttr(*F, 2, TLI); in getOrInsertLibFunc()
1340 setRetExtAttr(*F, TLI); in getOrInsertLibFunc()
1368 markRegisterParameterAttributes(F); in getOrInsertLibFunc()
1387 if (auto *F = dyn_cast<Function>(GV)) in isLibFuncEmittable() local
1388 return TLI->isValidProtoForLibFunc(*F->getFunctionType(), TheLibFunc, *M); in isLibFuncEmittable()
1462 if (const Function *F = in emitLibCall() local
1464 CI->setCallingConv(F->getCallingConv()); in emitLibCall()
1546 if (const Function *F = in emitMemCpyChk() local
1548 CI->setCallingConv(F->getCallingConv()); in emitMemCpyChk()
1698 NameBuffer += 'f'; in appendTypeSuffix()
1722 if (const Function *F = in emitUnaryFloatFnCallHelper() local
1724 CI->setCallingConv(F->getCallingConv()); in emitUnaryFloatFnCallHelper()
1772 if (const Function *F = in emitBinaryFloatFnCallHelper() local
1774 CI->setCallingConv(F->getCallingConv()); in emitBinaryFloatFnCallHelper()
1823 if (const Function *F = in emitPutChar() local
1825 CI->setCallingConv(F->getCallingConv()); in emitPutChar()
1841 if (const Function *F = in emitPutS() local
1843 CI->setCallingConv(F->getCallingConv()); in emitPutS()
1855 FunctionCallee F = getOrInsertLibFunc(M, *TLI, LibFunc_fputc, IntTy, in emitFPutC() local
1859 CallInst *CI = B.CreateCall(F, {Char, File}, FPutcName); in emitFPutC()
1862 dyn_cast<Function>(F.getCallee()->stripPointerCasts())) in emitFPutC()
1875 FunctionCallee F = getOrInsertLibFunc(M, *TLI, LibFunc_fputs, IntTy, in emitFPutS() local
1879 CallInst *CI = B.CreateCall(F, {Str, File}, FPutsName); in emitFPutS()
1882 dyn_cast<Function>(F.getCallee()->stripPointerCasts())) in emitFPutS()
1895 FunctionCallee F = getOrInsertLibFunc(M, *TLI, LibFunc_fwrite, in emitFWrite() local
1902 B.CreateCall(F, {Ptr, Size, in emitFWrite()
1903 ConstantInt::get(SizeTTy, 1), File}); in emitFWrite()
1906 dyn_cast<Function>(F.getCallee()->stripPointerCasts())) in emitFWrite()
1924 if (const Function *F = in emitMalloc() local
1926 CI->setCallingConv(F->getCallingConv()); in emitMalloc()
1944 if (const auto *F = in emitCalloc() local
1946 CI->setCallingConv(F->getCallingConv()); in emitCalloc()
1964 if (const Function *F = in emitHotColdNew() local
1966 CI->setCallingConv(F->getCallingConv()); in emitHotColdNew()
1985 if (const Function *F = in emitHotColdNewNoThrow() local
1987 CI->setCallingConv(F->getCallingConv()); in emitHotColdNewNoThrow()
2005 if (const Function *F = in emitHotColdNewAligned() local
2007 CI->setCallingConv(F->getCallingConv()); in emitHotColdNewAligned()
2028 if (const Function *F = in emitHotColdNewAlignedNoThrow() local
2030 CI->setCallingConv(F->getCallingConv()); in emitHotColdNewAlignedNoThrow()