llvm/lib/Transforms/IPO
JF Bastien b36d1a86f1 NFC: make AtomicOrdering an enum class
Summary:
In the context of http://wg21.link/lwg2445 C++ uses the concept of
'stronger' ordering but doesn't define it properly. This should be fixed
in C++17 barring a small question that's still open.

The code currently plays fast and loose with the AtomicOrdering
enum. Using an enum class is one step towards tightening things. I later
also want to tighten related enums, such as clang's
AtomicOrderingKind (which should be shared with LLVM as a 'C++ ABI'
enum).

This change touches a few lines of code which can be improved later, I'd
like to keep it as NFC for now as it's already quite complex. I have
related changes for clang.

As a follow-up I'll add:
  bool operator<(AtomicOrdering, AtomicOrdering) = delete;
  bool operator>(AtomicOrdering, AtomicOrdering) = delete;
  bool operator<=(AtomicOrdering, AtomicOrdering) = delete;
  bool operator>=(AtomicOrdering, AtomicOrdering) = delete;
This is separate so that clang and LLVM changes don't need to be in sync.

Reviewers: jyknight, reames

Subscribers: jyknight, llvm-commits

Differential Revision: http://reviews.llvm.org/D18775

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265602 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-06 21:19:33 +00:00
..
ArgumentPromotion.cpp [AA] Hoist the logic to reformulate various AA queries in terms of other 2016-03-02 15:56:53 +00:00
BarrierNoopPass.cpp
CMakeLists.txt WholeProgramDevirt: introduce. 2016-02-09 22:50:34 +00:00
ConstantMerge.cpp
CrossDSOCFI.cpp [cfi] Cross-DSO CFI diagnostic mode (LLVM part). 2016-01-25 23:35:03 +00:00
DeadArgumentElimination.cpp Convert int to Twine instead of using utostr since it was already being added to a Twine. NFC 2016-01-31 00:15:35 +00:00
ElimAvailExtern.cpp Disallow aliases to available_externally. 2015-11-26 19:22:59 +00:00
ExtractGV.cpp GlobalValue: use getValueType() instead of getType()->getPointerElementType(). 2016-01-16 20:30:46 +00:00
ForceFunctionAttrs.cpp Fix option desc in FunctionAttrs; NFC 2016-01-06 18:18:16 +00:00
FunctionAttrs.cpp [attrs] Handle convergent CallSites. 2016-03-14 20:18:54 +00:00
FunctionImport.cpp [ThinLTO] Augment FunctionImport dump with value name to GUID map 2016-04-04 18:52:23 +00:00
GlobalDCE.cpp [IFUNC] Use GlobalIndirectSymbol when aliases and ifuncs have something similar 2016-04-05 08:47:51 +00:00
GlobalOpt.cpp NFC: make AtomicOrdering an enum class 2016-04-06 21:19:33 +00:00
InferFunctionAttrs.cpp [NVPTX] Infer __nvvm_reflect as nounwind, readnone 2016-03-31 21:29:57 +00:00
InlineAlways.cpp Refactor threshold computation for inline cost analysis 2016-01-14 23:16:29 +00:00
Inliner.cpp Revert revisions 262636, 262643, 262679, and 262682. 2016-03-08 00:36:35 +00:00
InlineSimple.cpp Make InlineSimple's one-arg constructor explicit. NFC 2016-03-29 16:26:06 +00:00
Internalize.cpp Use a StringSet in Internalize, and allow to create the pass from an existing one (NFC) 2016-02-10 23:24:31 +00:00
IPConstantPropagation.cpp
IPO.cpp [PM] Port the PostOrderFunctionAttrs pass to the new pass manager and 2016-02-18 11:03:11 +00:00
LLVMBuild.txt [PGO] Passmanagerbuilder change that enable IR level PGO instrumentation 2016-01-21 18:28:59 +00:00
LoopExtractor.cpp LoopInfo: Simplify ownership of Loop objects 2016-01-08 19:08:53 +00:00
LowerBitSets.cpp LowerBitSets: Move declarations to separate namespace. 2016-04-01 18:46:50 +00:00
MergeFunctions.cpp NFC: make AtomicOrdering an enum class 2016-04-06 21:19:33 +00:00
PartialInlining.cpp
PassManagerBuilder.cpp [PassManager] Make PassManagerBuilder::addExtension take an std::function, rather than a function pointer. 2016-03-30 20:39:29 +00:00
PruneEH.cpp [PruneEH] Don't try to insert a terminator after another terminator 2016-01-23 06:00:44 +00:00
SampleProfile.cpp Remove llvm::getDISubprogram in favor of Function::getSubprogram 2016-03-11 02:14:16 +00:00
StripDeadPrototypes.cpp [PM] Port StripDeadPrototypes to the new pass manager 2015-10-30 23:28:12 +00:00
StripSymbols.cpp DI: Reverse direction of subprogram -> function edge. 2015-11-05 22:03:56 +00:00
WholeProgramDevirt.cpp Silencing warnings from MSVC 2015 Update 2. All of these changes silence "C4334 '<<': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)". NFC. 2016-03-30 21:30:00 +00:00