- Add a clang pass that identifies potential ROP gadgets and replaces ROP
  friendly instructions with safe alternatives. This initial commit fixes
  3 instruction forms that will lower to include a c3 (return) byte.
  Additional problematic instructions can be fixed incrementally using
  this framework.
- Refactor retguard to make adding additional arches easier.

Index: llvm/lib/Target/X86/CMakeLists.txt
--- llvm/lib/Target/X86/CMakeLists.txt.orig
+++ llvm/lib/Target/X86/CMakeLists.txt
@@ -42,6 +42,7 @@ set(sources
   X86ExpandPseudo.cpp
   X86FastISel.cpp
   X86FixupBWInsts.cpp
+  X86FixupGadgets.cpp
   X86FixupLEAs.cpp
   X86AvoidStoreForwardingBlocks.cpp
   X86FixupSetCC.cpp
@@ -71,6 +72,7 @@ set(sources
   X86PartialReduction.cpp
   X86RegisterBankInfo.cpp
   X86RegisterInfo.cpp
+  X86ReturnProtectorLowering.cpp
   X86SelectionDAGInfo.cpp
   X86ShuffleDecodeConstantPool.cpp
   X86SpeculativeLoadHardening.cpp
