llvm-6502/include/llvm/Target
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
..
CostTable.h Add a overload to CostTable which allows it to infer the size of the table. 2013-08-09 19:33:32 +00:00
Mangler.h Move getSymbol to TargetLoweringObjectFile. 2013-10-29 17:28:26 +00:00
Target.td Add an instruction deprecation feature to TableGen. 2013-09-12 10:28:05 +00:00
TargetCallingConv.h SelectionDAG: Pass along the original argument/element type in ISD::InputArg 2013-10-23 00:44:24 +00:00
TargetCallingConv.td Add an OtherPreserved field to the CalleeSaved TableGen class. 2013-08-23 02:25:47 +00:00
TargetFrameLowering.h [SystemZ] Clean up register scavenging code 2013-07-05 12:55:00 +00:00
TargetInstrInfo.h Fix the ExecutionDepsFix pass to handle AVX instructions. 2013-10-14 22:19:03 +00:00
TargetIntrinsicInfo.h Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. 2012-09-17 06:59:23 +00:00
TargetItinerary.td I'm introducing a new machine model to simultaneously allow simple 2012-07-07 04:00:00 +00:00
TargetJITInfo.h Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
TargetLibraryInfo.h [SystemZ] Use SRST to optimize memchr 2013-08-20 09:38:48 +00:00
TargetLowering.h Workaround MSVC 32-bit miscompile of getCondCodeAction. 2013-10-29 20:59:29 +00:00
TargetLoweringObjectFile.h Move getSymbol to TargetLoweringObjectFile. 2013-10-29 17:28:26 +00:00
TargetMachine.h Directly access objects which may change during compilation. 2013-06-17 20:41:25 +00:00
TargetOpcodes.h Fix grammar / missing words 2013-10-10 18:47:35 +00:00
TargetOptions.h Use function attributes to indicate that we don't want to realign the stack. 2013-08-01 21:42:05 +00:00
TargetRegisterInfo.h PrintVRegOrUnit 2013-08-23 17:48:53 +00:00
TargetSchedule.td Even more spelling fixes for "instruction". 2013-09-28 13:42:22 +00:00
TargetSelectionDAG.td Inplement aarch64 neon instructions in AdvSIMD(shift). About 24 shift instructions: 2013-09-04 09:28:24 +00:00
TargetSelectionDAGInfo.h [SystemZ] Use SRST to optimize memchr 2013-08-20 09:38:48 +00:00
TargetSubtargetInfo.h Added temp flag -misched-bench for staging in default changes. 2013-09-26 05:53:35 +00:00