1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 04:22:57 +02:00
llvm-mirror/include/llvm
Ranjeet Singh e9e99b10c8 [ARM] fpscr read/write intrinsics not aware of each other
The intrinsics __builtin_arm_get_fpscr and __builtin_arm_set_fpscr read and
write to the fpscr (Floating-Point Status and Control Register) register.

A bug exists in the __builtin_arm_get_fpscr intrinsic definition in llvm which
treats this intrinsic as a IntroNoMem which means it's not a memory access and
doesn't have any other side-effects. Having this property on this intrinsic
means that various optimizations can be done on this such as common
sub-expression elimination with other reads. This can cause issues if there has
been write to this register, e.g.

void foo(int *p) {
     p[0] = __builtin_arm_get_fpscr();
     __builtin_arm_set_fpscr(1);
     p[1] = __builtin_arm_get_fpscr();
}

in the above example the second read is currently CSE'd into the first read,
this is because llvm isn't aware that the write done by __builtin_arm_set_fpscr
effects the same register that __builtin_arm_get_fpscr reads from, to fix this
problem I've removed the property IntrNoMem so that __builtin_arm_get_fpscr is
treated as a memory access.

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

llvm-svn: 296865
2017-03-03 11:40:07 +00:00
..
ADT [APInt] Optimize APInt creation from uint64_t 2017-03-01 21:06:18 +00:00
Analysis [SLP] Fixes the bug due to absence of in order uses of scalars which needs to be available 2017-03-03 10:02:47 +00:00
AsmParser
Bitcode IR: Function summary extensions for whole-program devirtualization pass. 2017-02-10 22:29:38 +00:00
CodeGen Fix a typo in the comments. Patch by marktwtn from https://github.com/llvm-mirror/llvm/pull/16/files 2017-03-03 09:36:04 +00:00
Config allow migrating away from cmake option for LLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING 2017-02-14 19:06:43 +00:00
DebugInfo [Support] Move Stream library from MSF -> Support. 2017-03-02 20:52:51 +00:00
Demangle
ExecutionEngine [Orc][RPC] Accept both const char* and char* arguments for string serialization. 2017-02-24 20:56:43 +00:00
IR [ARM] fpscr read/write intrinsics not aware of each other 2017-03-03 11:40:07 +00:00
IRReader
LibDriver
LineEditor
Linker IRMover: Merge flags LinkModuleInlineAsm and IsPerformingImport. 2017-02-03 17:01:14 +00:00
LTO LTO: When creating a local cache, create the cache directory if it does not already exist. 2017-03-02 02:02:38 +00:00
MC [MC] Fix MachineLocation constructor broken in r294685 (NFC). 2017-03-01 22:28:23 +00:00
Object Actually add error handling to unpacking the dyld compact bind and 2017-02-28 21:47:07 +00:00
ObjectYAML Add LC_BUILD_VERSION load command 2017-01-23 20:07:55 +00:00
Option Generalize ArgList::AddAllArgs more 2016-09-29 19:47:58 +00:00
Passes Add call branch annotation for ICP promoted direct call in SamplePGO mode. 2017-02-23 22:15:18 +00:00
ProfileData [ProfileData] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-03-03 01:07:34 +00:00
Support Revert "Fix PR 24415 (at least), by making our post-dominator tree behavior sane." 2017-03-02 21:08:37 +00:00
TableGen Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
Target [SDAG] Revert r296476 (and r296486, r296668, r296690). 2017-03-03 10:02:25 +00:00
Transforms Move defClobbersUseOrDef to being a protected member of a class since we don't want anyone else using it 2017-03-02 23:06:46 +00:00
XRay [XRAY] [x86_64] Adding a Flight Data filetype reader to the llvm-xray Trace implementation. 2017-02-17 01:47:16 +00:00
CMakeLists.txt
InitializePasses.h Improve scheduling with branch coalescing 2017-03-01 20:29:34 +00:00
LinkAllIR.h Remove unused #includes of TimeValue.h. NFC. 2016-10-24 14:00:26 +00:00
LinkAllPasses.h [Guards] Introduce loop-predication pass 2017-01-25 16:00:44 +00:00
module.modulemap Fix LLVM module build 2017-02-27 16:56:37 +00:00
module.modulemap.build Fix module map to create a module for the configured header Config/abi-breaking.h 2016-12-01 19:08:38 +00:00
Pass.h Reverted: Track validity of pass results 2017-01-15 10:23:18 +00:00
PassAnalysisSupport.h Reverted: Track validity of pass results 2017-01-15 10:23:18 +00:00
PassInfo.h [llvm] Remove duplicate header from PassInfo.h 2016-11-11 02:01:32 +00:00
PassRegistry.h
PassSupport.h Revamp llvm::once_flag to be closer to std::once_flag 2017-02-05 21:13:06 +00:00