1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 11:42:57 +01:00
llvm-mirror/include/llvm/IR
Matthias Braun be57ef6b4f SimplifyLibCalls: Optimize wcslen
Refactor the strlen optimization code to work for both strlen and wcslen.

This especially helps with programs in the wild where people pass
L"string"s to const std::wstring& function parameters and the wstring
constructor gets inlined.

This also fixes a lingerind API problem/bug in getConstantStringInfo()
where zeroinitializers would always give you an empty string (without a
length) back regardless of the actual length of the initializer which
did not work well in the TrimAtNul==false causing the PR mentioned
below.

Note that the fixed getConstantStringInfo() needed fixes to SelectionDAG
memcpy lowering and may lead to some cases for out-of-bounds
zeroinitializer accesses not getting optimized anymore. So some code
with UB may produce out of bound memory reads now instead of just
producing zeros.

The refactoring "accidentally" fixes http://llvm.org/PR32124

Differential Revision: https://reviews.llvm.org/D32839

llvm-svn: 303461
2017-05-19 22:37:09 +00:00
..
Argument.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
AssemblyAnnotationWriter.h
Attributes.h [IR] Allow attributes with global variables 2017-05-11 12:28:08 +00:00
Attributes.td Add speculatable function attribute 2017-04-28 20:25:27 +00:00
AutoUpgrade.h
BasicBlock.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
CallingConv.h [MSP430] Generate EABI-compliant libcalls 2017-05-11 19:56:14 +00:00
CallSite.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-05 22:30:37 +00:00
CFG.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-05 22:30:37 +00:00
CMakeLists.txt
Comdat.h
Constant.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
ConstantFolder.h
ConstantRange.h [ConstantRange][SimplifyCFG] Add a helper method to allow SimplifyCFG to determine if a ConstantRange has more than 8 elements without requiring an allocation if the ConstantRange is 64-bits wide. 2017-05-07 22:22:11 +00:00
Constants.h SimplifyLibCalls: Optimize wcslen 2017-05-19 22:37:09 +00:00
DataLayout.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-05 22:30:37 +00:00
DebugInfo.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-05 22:30:37 +00:00
DebugInfoFlags.def
DebugInfoMetadata.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-15 21:57:41 +00:00
DebugLoc.h Make it illegal for two Functions to point to the same DISubprogram 2017-05-09 19:47:37 +00:00
DerivedTypes.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-10 23:41:30 +00:00
DerivedUser.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
DiagnosticInfo.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-15 21:57:41 +00:00
DiagnosticPrinter.h
DIBuilder.h Remove line and file from DINamespace. 2017-04-28 22:25:46 +00:00
Dominators.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-05 22:30:37 +00:00
Function.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
GetElementPtrTypeIterator.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-10 23:41:30 +00:00
GlobalAlias.h De-virtualize GlobalValue 2017-05-11 21:14:29 +00:00
GlobalIFunc.h De-virtualize GlobalValue 2017-05-11 21:14:29 +00:00
GlobalIndirectSymbol.h [IR] Implement pairs of non-const and const methods using the const version instead of the non-const version. NFCI 2017-03-27 05:47:03 +00:00
GlobalObject.h De-virtualize GlobalValue 2017-05-11 21:14:29 +00:00
GlobalValue.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
GlobalVariable.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
GVMaterializer.h
InlineAsm.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
InstIterator.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-05 22:30:37 +00:00
InstrTypes.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
Instruction.def [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
Instruction.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
Instructions.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
InstVisitor.h
IntrinsicInst.h Make getParamAlignment use argument numbers 2017-04-28 20:34:27 +00:00
Intrinsics.h Support arbitrary address space pointers in masked gather/scatter intrinsics. 2017-05-03 12:28:54 +00:00
Intrinsics.td Introduce experimental generic intrinsics for horizontal vector reductions. 2017-05-09 10:43:25 +00:00
IntrinsicsAArch64.td
IntrinsicsAMDGPU.td AMDGPU: Make intrinsics speculatable 2017-05-02 16:57:44 +00:00
IntrinsicsARM.td [ARM] ACLE Chapter 9 intrinsics 2017-05-04 07:31:28 +00:00
IntrinsicsBPF.td
IntrinsicsHexagon.td
IntrinsicsMips.td
IntrinsicsNVVM.td
IntrinsicsPowerPC.td [PPC] Lower load acquire/seq_cst trailing fence to cmp + bne + isync. 2017-05-16 20:18:06 +00:00
IntrinsicsSystemZ.td
IntrinsicsWebAssembly.td
IntrinsicsX86.td [X86][LWP] Add llvm support for LWP instructions (reapplied). 2017-05-03 15:51:39 +00:00
IntrinsicsXCore.td
IRBuilder.h Introduce experimental generic intrinsics for horizontal vector reductions. 2017-05-09 10:43:25 +00:00
IRPrintingPasses.h
LegacyPassManager.h [LTO] Print time-passes information at conclusion of LTO codegen 2017-05-16 09:43:21 +00:00
LegacyPassManagers.h
LegacyPassNameParser.h
LLVMContext.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
Mangler.h Move llvm::emitLinkerFlagsForGlobalCOFF() to Mangler. 2017-03-31 04:46:50 +00:00
MDBuilder.h
Metadata.def
Metadata.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
Module.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-10 23:41:30 +00:00
ModuleSlotTracker.h
ModuleSummaryIndex.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
ModuleSummaryIndexYAML.h Re-apply r302108, "IR: Use pointers instead of GUIDs to represent edges in the module summary. NFCI." 2017-05-04 18:03:25 +00:00
NoFolder.h
OperandTraits.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
Operator.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
OptBisect.h
PassManager.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
PassManagerInternal.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
PatternMatch.h [InstSimplify] Make m_Not work for xor -1, X 2017-05-18 20:27:32 +00:00
PredIteratorCache.h
ProfileSummary.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
Statepoint.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
SymbolTableListTraits.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
TrackingMDRef.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
Type.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
TypeBuilder.h
TypeFinder.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00
Use.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-10 23:41:30 +00:00
UseListOrder.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-10 23:41:30 +00:00
User.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
Value.def [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
Value.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
ValueHandle.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-10 23:41:30 +00:00
ValueMap.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-10 23:41:30 +00:00
ValueSymbolTable.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-10 23:41:30 +00:00
Verifier.h [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-12 22:25:07 +00:00