llvm-6502/include/llvm
Matt Arsenault 2b0002b579 Workaround MSVC 32-bit miscompile of getCondCodeAction.
Use 32-bit types for the array instead of 64. This should
generally be better anyway.

In optimized + assert builds, I saw a failure when a
cond code / type combination that is never set was loading
a non-zero value and hitting the != Promote assert.

It turns out when loading the 64-bit value to do the shift,
the assembly loads the 2 32-bit halves from non-consecutive
addresses. The address the second half of the loaded uint64_t
doesn't include the offset of the array in the struct. Instead
of being offset + 4, it's just + 4.

I'm not entirely sure why this wasn't observed before.
setCondCodeAction isn't heavily used by the in-tree targets,
and not with the higher valued vector SimpleValueTypes. Only
PPC is using one of the > 32 valued types, and that is probably
never used by anyone on a 32-bit MSVC compiled host.

I ran into this when upgrading LLVM versions, so I guess the
value loaded from the nonsense address happened to work out
before.

No test since I'm not really sure if / how it can be reproduced
with the current in tree targets, and it's not supposed to change
anything.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193650 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-29 20:59:29 +00:00
..
ADT
Analysis Quick look-up for block in loop. 2013-10-26 03:08:02 +00:00
Assembly
Bitcode
CodeGen Add a helper getSymbol to AsmPrinter. 2013-10-29 17:07:16 +00:00
Config Revert "Revert "Windows: Add support for unicode command lines"" 2013-10-07 01:00:07 +00:00
DebugInfo DWARF parser: Use ArrayRef to represent form sizes and simplify DWARFDIE::extractFast() interface. No functionality change. 2013-10-28 23:41:49 +00:00
ExecutionEngine Optimizing MCJIT module state tracking 2013-10-24 00:19:14 +00:00
IR Clarify that GlobalVariables definitions must have an initializer. 2013-10-29 13:44:11 +00:00
IRReader
LTO
MC Move the STT_FILE symbols out of the normal symbol table processing for 2013-10-29 01:06:17 +00:00
Object Add missing #include's to cctype when using isdigit/alpha/etc. 2013-10-12 00:55:57 +00:00
Option
Support Remove declared but not implemented function. 2013-10-29 18:31:14 +00:00
TableGen Speling fixes. 2013-10-22 15:18:03 +00:00
Target Workaround MSVC 32-bit miscompile of getCondCodeAction. 2013-10-29 20:59:29 +00:00
Transforms Fix "existant" typos 2013-10-29 02:35:28 +00:00
AutoUpgrade.h
CMakeLists.txt
DebugInfo.h Reformat. 2013-10-15 21:22:12 +00:00
DIBuilder.h fix two typos. 2013-10-21 23:55:19 +00:00
GVMaterializer.h
InitializePasses.h Remove the now unused strong phi elimination pass. 2013-10-14 16:39:04 +00:00
InstVisitor.h
LinkAllIR.h
LinkAllPasses.h
Linker.h Add a 'deleteModule' method to the Linker class. 2013-10-16 08:59:57 +00:00
Pass.h
PassAnalysisSupport.h
PassManager.h
PassManagers.h
PassRegistry.h
PassSupport.h