Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
de0aeb8
[CMake] Don't use comma as an alternate separator
petrhosek Dec 5, 2017
c67785b
TwoAddressInstructionPass: Trigger -O0 behavior on optnone
MatzeB Dec 5, 2017
c93edad
MachineFrameInfo: Cleanup some parameter naming inconsistencies; NFC
MatzeB Dec 5, 2017
5eb4649
[cmake] Modernize some conditionals. NFC
smeenai Dec 5, 2017
b65db5e
[X86] Rearrange some of the code around AVX512 sign/zero extends. NFCI
topperc Dec 5, 2017
fadb00b
[X86] Use getZeroVector and remove an unnecessary creation of an APIn…
topperc Dec 5, 2017
93de9f6
[X86] Don't use kunpck for vXi1 concat_vectors if the upper bits are …
topperc Dec 5, 2017
eb94f55
[X86] Use vector widening to support zero extend from i1 when the des…
topperc Dec 5, 2017
a50e269
AMDGPU: Fix crash when scheduling DBG_VALUE
arsenm Dec 5, 2017
a757402
AMDGPU: Fix missing subtarget feature initializer
arsenm Dec 5, 2017
95465ed
[X86] Fix a crash if avx512bw and xop are both enabled when the IR co…
topperc Dec 5, 2017
a83daa1
Disable detect_leaks in the ASanified build of LLVM when using Apple …
kubamracek Dec 5, 2017
02ef061
Revert r319691: [globalisel][tablegen] Split atomic load/store into s…
dsandersllvm Dec 5, 2017
07b0498
[X86] Use vector widening to support sign extend from i1 when the des…
topperc Dec 5, 2017
59d4cbb
Test commit, as per the LLVM Developer Policy.
mdtrent Dec 5, 2017
3c0a0d3
[SelectionDAG] Use WidenTargetBoolean in WidenVecRes_MLOAD and WidenV…
topperc Dec 5, 2017
3b3a7b4
[X86] Fix a bug in handling GRXX subclasses in Domain Reassignment pass
Dec 5, 2017
fa8338c
[Support/TarWriter] - Don't allow TarWriter to add the same file more…
Dec 5, 2017
fd8ab36
Re-commit "[cmake] Enable zlib support on windows"
labath Dec 5, 2017
0112bbc
Fix build bot after r319750 "[Support/TarWriter] - Don't allow TarWri…
Dec 5, 2017
48d461f
[Regalloc] Generate and store multiple regalloc hints.
JonPsson Dec 5, 2017
6da7cb5
[SystemZ] set 'guessInstructionProperties = 0' and set flags as needed.
JonPsson Dec 5, 2017
5acb1e0
[X86][AVX512] Tag VFIXUPIMM instructions scheduler classes
RKSimon Dec 5, 2017
d45b450
[X86][AVX512] Cleanup VPCMP scheduler classes
RKSimon Dec 5, 2017
f071b97
[X86][AVX512] Tag VPCMP/VPCMPU instruction scheduler classes
RKSimon Dec 5, 2017
b8aa60d
[InstCombine] Don't crash on out of bounds shifts
igor-laevsky Dec 5, 2017
f5f5294
[XRay][docs] Document xray_mode and log registration API.
deanberris Dec 5, 2017
a327b4b
[X86][AVX512] Tag scalar CVT and CMP instruction scheduler classes
RKSimon Dec 5, 2017
f5eb5d5
[DAGCombine] isLegalNarrowLoad function (NFC)
sparker-arm Dec 5, 2017
ac5b667
[X86][AVX512] Cleanup bit logic scheduler classes
RKSimon Dec 5, 2017
dd0ef7d
Bail out of a SimplifyCFG switch table opt at undef values.
mikaelholmen Dec 5, 2017
ee90d36
[X86][AVX512] Add missing scalar CMPSS/CMPSD logic scheduler classes
RKSimon Dec 5, 2017
efd6852
[DAGCombine] Handle big endian correctly in CombineConsecutiveLoads
bjope Dec 5, 2017
cbe99db
[X86][AVX512] Tag VPMADD52/VPSADBW instruction scheduler classes
RKSimon Dec 5, 2017
ca2a2b3
[DAGCombine] Move AND nodes to multiple load leaves
sparker-arm Dec 5, 2017
263cd35
Add REQUIRES asserts in combine_loads_from_build_pair.ll
bjope Dec 5, 2017
03b74e4
[x86][AVX512] Lowering kunpack intrinsics to LLVM IR
Dec 5, 2017
427a627
[X86][AVX512] Drop some default NoItinerary arguments that aren't nee…
RKSimon Dec 5, 2017
4996301
[InstCombine] Additional test for PR35354, NFC.
alexey-bataev Dec 5, 2017
f3c0835
[X86][AVX512] Tag VNNIW instruction scheduler classes
RKSimon Dec 5, 2017
371257e
Delete temp file if rename fails.
espindola Dec 5, 2017
9a320d9
[PGO] detect infinite loop and form MST properly
david-xl Dec 5, 2017
314790b
[WebAssembly] Don't emit .import_global for the wasm target.
Dec 5, 2017
f07a1d4
[WebAssembly] Implement WASM_STACK_POINTER.
Dec 5, 2017
b0c5aec
[SelectionDAG] Remove unused method declaration.
topperc Dec 5, 2017
394c6e8
[SelectionDAG] Remove the code that handles SETCC with a scalar resul…
topperc Dec 5, 2017
0e002d4
Test commit.
Dec 5, 2017
05c71a9
[X86][X87] Tag FCMOV instruction scheduler classes
RKSimon Dec 5, 2017
0e19a2a
[ConstantRange] Support subtraction in makeGuaranteedNoWrapRegion.
Dec 5, 2017
2bfaf4d
[CVP] Remove some {s|u}sub.with.overflow checks.
Dec 5, 2017
30bcf2f
AMDGPU: Fix infinite loop with dbg_value
arsenm Dec 5, 2017
ec5581c
Simplify test.
espindola Dec 5, 2017
ca99fdb
[WebAssembly] Make stack-pointer imports mutable.
Dec 5, 2017
952471e
[X86][AVX512] Tag VPTRUNC/VPMOVSX/VPMOVZX instruction scheduler classes
RKSimon Dec 5, 2017
b7cbf75
[SystemZ] Validate shifted compare value in adjustForTestUnderMask
uweigand Dec 5, 2017
a2d30e9
Modify ModRefInfo values using static inline method abstractions [NFC].
alinas Dec 5, 2017
aa1ccb6
[X86][AVX512] Tag VPSLLDQ/VPSRLDQ instruction scheduler classes
RKSimon Dec 5, 2017
e33d953
Re-commit r319490 "XOR the frame pointer with the stack cookie when p…
zmodem Dec 5, 2017
dc79c64
AMDGPU: Fix SDWA crash on inline asm
arsenm Dec 5, 2017
67f8737
[DWARFv5] Emit v5 line table header.
pogo59 Dec 5, 2017
668022c
[X86][AVX512] Tag GATHER/SCATTER instruction scheduler classes
RKSimon Dec 5, 2017
60eb316
[ModRefInfo] Initialize ArgMask to MRI_NoModRef.
alinas Dec 5, 2017
6ba130a
[X86][AVX512] Tag BLENDM instruction scheduler classes
RKSimon Dec 5, 2017
555994d
[AArch64] Do not abort if overflow check does not use EQ or NE.
Dec 5, 2017
9f563b4
[SafepointIRVerifier] Allow deriving pointers from unrelocated base
annamthomas Dec 5, 2017
96cfeb3
[Orc] Add a SymbolStringPool data structure for efficient storage and…
lhames Dec 5, 2017
4a6bb53
[CMake] Use PRIVATE in target_link_libraries for executables
smeenai Dec 5, 2017
4f7feb4
Revert r319794: [PGO] detect infinite loop and form MST properly: me…
david-xl Dec 5, 2017
8bedc46
[Orc] (Hopefully) Fix a missing typedef.
lhames Dec 5, 2017
73a2d50
[SelectionDAG] Don't call GetWidenedVector for mask operands of MLOAD…
topperc Dec 5, 2017
e01b61f
[SelectionDAG] Don't promote mask operands of MGATHER and MLOAD to se…
topperc Dec 5, 2017
9d01325
[SelectionDAG] Don't promote mask when splitting mstore.
topperc Dec 5, 2017
3acab96
[SelectionDAG] Don't promote mask operand when widening mstore and ms…
topperc Dec 5, 2017
a2f5d23
[SelectionDAG] Don't promote the condition operand of VSELECT when pr…
topperc Dec 5, 2017
381f58e
[CodeView] Add support for content hashing CodeView type records.
Dec 5, 2017
0b3e8d4
Fix -Wmissing-braces error.
Dec 5, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 43 additions & 33 deletions cmake/config-ix.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -127,45 +127,55 @@ if(HAVE_LIBPTHREAD)
set(LLVM_PTHREAD_LIB ${CMAKE_THREAD_LIBS_INIT})
endif()

# Don't look for these libraries on Windows. Also don't look for them if we're
# using MSan, since uninstrumented third party code may call MSan interceptors
# like strlen, leading to false positives.
if( NOT PURE_WINDOWS AND NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
if (LLVM_ENABLE_ZLIB)
check_library_exists(z compress2 "" HAVE_LIBZ)
else()
set(HAVE_LIBZ 0)
endif()
# Skip libedit if using ASan as it contains memory leaks.
if (LLVM_ENABLE_LIBEDIT AND HAVE_HISTEDIT_H AND NOT LLVM_USE_SANITIZER MATCHES ".*Address.*")
check_library_exists(edit el_init "" HAVE_LIBEDIT)
else()
set(HAVE_LIBEDIT 0)
endif()
if(LLVM_ENABLE_TERMINFO)
set(HAVE_TERMINFO 0)
foreach(library tinfo terminfo curses ncurses ncursesw)
# Don't look for these libraries if we're using MSan, since uninstrumented third
# party code may call MSan interceptors like strlen, leading to false positives.
if(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
set(HAVE_LIBZ 0)
if(LLVM_ENABLE_ZLIB)
foreach(library z zlib_static zlib)
string(TOUPPER ${library} library_suffix)
check_library_exists(${library} setupterm "" HAVE_TERMINFO_${library_suffix})
if(HAVE_TERMINFO_${library_suffix})
set(HAVE_TERMINFO 1)
set(TERMINFO_LIBS "${library}")
check_library_exists(${library} compress2 "" HAVE_LIBZ_${library_suffix})
if(HAVE_LIBZ_${library_suffix})
set(HAVE_LIBZ 1)
set(ZLIB_LIBRARIES "${library}")
break()
endif()
endforeach()
else()
set(HAVE_TERMINFO 0)
endif()

find_library(ICONV_LIBRARY_PATH NAMES iconv libiconv libiconv-2 c)
set(LLVM_LIBXML2_ENABLED 0)
set(LIBXML2_FOUND 0)
if((LLVM_ENABLE_LIBXML2) AND ((CMAKE_SYSTEM_NAME MATCHES "Linux") AND (ICONV_LIBRARY_PATH) OR APPLE))
find_package(LibXml2)
if (LIBXML2_FOUND)
set(LLVM_LIBXML2_ENABLED 1)
include_directories(${LIBXML2_INCLUDE_DIR})
set(LIBXML2_LIBS "xml2")
# Don't look for these libraries on Windows.
if (NOT PURE_WINDOWS)
# Skip libedit if using ASan as it contains memory leaks.
if (LLVM_ENABLE_LIBEDIT AND HAVE_HISTEDIT_H AND NOT LLVM_USE_SANITIZER MATCHES ".*Address.*")
check_library_exists(edit el_init "" HAVE_LIBEDIT)
else()
set(HAVE_LIBEDIT 0)
endif()
if(LLVM_ENABLE_TERMINFO)
set(HAVE_TERMINFO 0)
foreach(library tinfo terminfo curses ncurses ncursesw)
string(TOUPPER ${library} library_suffix)
check_library_exists(${library} setupterm "" HAVE_TERMINFO_${library_suffix})
if(HAVE_TERMINFO_${library_suffix})
set(HAVE_TERMINFO 1)
set(TERMINFO_LIBS "${library}")
break()
endif()
endforeach()
else()
set(HAVE_TERMINFO 0)
endif()

find_library(ICONV_LIBRARY_PATH NAMES iconv libiconv libiconv-2 c)
set(LLVM_LIBXML2_ENABLED 0)
set(LIBXML2_FOUND 0)
if((LLVM_ENABLE_LIBXML2) AND ((CMAKE_SYSTEM_NAME MATCHES "Linux") AND (ICONV_LIBRARY_PATH) OR APPLE))
find_package(LibXml2)
if (LIBXML2_FOUND)
set(LLVM_LIBXML2_ENABLED 1)
include_directories(${LIBXML2_INCLUDE_DIR})
set(LIBXML2_LIBS "xml2")
endif()
endif()
endif()
endif()
Expand Down
4 changes: 2 additions & 2 deletions cmake/modules/AddLLVM.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -768,7 +768,7 @@ macro(add_llvm_executable name)
# libpthreads overrides some standard library symbols, so main
# executable must be linked with it in order to provide consistent
# API for all shared libaries loaded by this executable.
target_link_libraries(${name} ${LLVM_PTHREAD_LIB})
target_link_libraries(${name} PRIVATE ${LLVM_PTHREAD_LIB})
endif()
endmacro(add_llvm_executable name)

Expand Down Expand Up @@ -1093,7 +1093,7 @@ function(add_unittest test_suite test_name)
# libpthreads overrides some standard library symbols, so main
# executable must be linked with it in order to provide consistent
# API for all shared libaries loaded by this executable.
target_link_libraries(${test_name} gtest_main gtest ${LLVM_PTHREAD_LIB})
target_link_libraries(${test_name} PRIVATE gtest_main gtest ${LLVM_PTHREAD_LIB})

add_dependencies(${test_suite} ${test_name})
get_target_property(test_suite_folder ${test_suite} FOLDER)
Expand Down
6 changes: 3 additions & 3 deletions cmake/modules/LLVM-Config.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ macro(llvm_config executable)
endif()
endif()

target_link_libraries(${executable} LLVM)
target_link_libraries(${executable} PRIVATE LLVM)
endif()

explicit_llvm_config(${executable} ${link_components})
Expand All @@ -99,9 +99,9 @@ function(explicit_llvm_config executable)

llvm_map_components_to_libnames(LIBRARIES ${link_components})
get_target_property(t ${executable} TYPE)
if("x${t}" STREQUAL "xSTATIC_LIBRARY")
if(t STREQUAL "STATIC_LIBRARY")
target_link_libraries(${executable} INTERFACE ${LIBRARIES})
elseif("x${t}" STREQUAL "xSHARED_LIBRARY" OR "x${t}" STREQUAL "xMODULE_LIBRARY")
elseif(t STREQUAL "EXECUTABLE" OR t STREQUAL "SHARED_LIBRARY" OR t STREQUAL "MODULE_LIBRARY")
target_link_libraries(${executable} PRIVATE ${LIBRARIES})
else()
# Use plain form for legacy user.
Expand Down
4 changes: 2 additions & 2 deletions cmake/modules/LLVMExternalProjectUtils.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ function(llvm_ExternalProject_Add name source_dir)
foreach(prefix ${ARG_PASSTHROUGH_PREFIXES})
foreach(variableName ${variableNames})
if(variableName MATCHES "^${prefix}")
string(REPLACE ";" "," value "${${variableName}}")
string(REPLACE ";" "|" value "${${variableName}}")
list(APPEND PASSTHROUGH_VARIABLES
-D${variableName}=${value})
endif()
Expand Down Expand Up @@ -160,7 +160,7 @@ function(llvm_ExternalProject_Add name source_dir)
USES_TERMINAL_CONFIGURE 1
USES_TERMINAL_BUILD 1
USES_TERMINAL_INSTALL 1
LIST_SEPARATOR ,
LIST_SEPARATOR |
)

if(ARG_USE_TOOLCHAIN)
Expand Down
28 changes: 23 additions & 5 deletions docs/XRay.rst
Original file line number Diff line number Diff line change
Expand Up @@ -143,15 +143,25 @@ variable, where we list down the options and their defaults below.
| | | | instrumentation points |
| | | | before main. |
+-------------------+-----------------+---------------+------------------------+
| xray_naive_log | ``bool`` | ``false`` | Whether to install |
| | | | the naive log |
| | | | implementation. |
| xray_mode | ``const char*`` | ``""`` | Default mode to |
| | | | install and initialize |
| | | | before ``main``. |
+-------------------+-----------------+---------------+------------------------+
| xray_logfile_base | ``const char*`` | ``xray-log.`` | Filename base for the |
| | | | XRay logfile. |
+-------------------+-----------------+---------------+------------------------+
| xray_fdr_log | ``bool`` | ``false`` | Whether to install the |
| | | | Flight Data Recorder |
| xray_naive_log | ``bool`` | ``false`` | **DEPRECATED:** Use |
| | | | xray_mode=xray-basic |
| | | | instead. Whether to |
| | | | install the basic log |
| | | | the naive log |
| | | | implementation. |
+-------------------+-----------------+---------------+------------------------+
| xray_fdr_log | ``bool`` | ``false`` | **DEPRECATED:** Use |
| | | | xray_mode=xray-fdr |
| | | | instead. Whether to |
| | | | install the Flight |
| | | | Data Recorder |
| | | | (FDR) mode. |
+-------------------+-----------------+---------------+------------------------+

Expand Down Expand Up @@ -241,6 +251,14 @@ following API:
- ``__xray_set_log_impl(...)``: This function takes a struct of type
``XRayLogImpl``, which is defined in ``xray/xray_log_interface.h``, part of
the XRay compiler-rt installation.
- ``__xray_log_register_mode(...)``: Register a logging implementation against
a string Mode. The implementation is an instance of ``XRayLogImpl`` defined
in ``xray/xray_log_interface.h``.
- ``__xray_log_select_mode(...)``: Select the mode to install, associated with
a string Mode. Only implementations registered with
``__xray_log_register_mode(...)`` can be chosen with this function. When
successful, has the same effects as calling ``__xray_set_log_impl(...)`` with
the registered logging implementation.
- ``__xray_log_init(...)``: This function allows for initializing and
re-initializing an installed logging implementation. See
``xray/xray_log_interface.h`` for details, part of the XRay compiler-rt
Expand Down
2 changes: 1 addition & 1 deletion docs/XRayExample.rst
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ to enable XRay at application start. To do this, XRay checks the
$ ./bin/llc input.ll

# We need to set the XRAY_OPTIONS to enable some features.
$ XRAY_OPTIONS="patch_premain=true xray_naive_log=true" ./bin/llc input.ll
$ XRAY_OPTIONS="patch_premain=true xray_mode=xray-basic" ./bin/llc input.ll
==69819==XRay: Log file in 'xray-log.llc.m35qPB'

At this point we now have an XRay trace we can start analysing.
Expand Down
2 changes: 1 addition & 1 deletion examples/ParallelJIT/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ add_llvm_example(ParallelJIT
ParallelJIT.cpp
)

target_link_libraries(ParallelJIT ${LLVM_PTHREAD_LIB})
target_link_libraries(ParallelJIT PRIVATE ${LLVM_PTHREAD_LIB})
73 changes: 58 additions & 15 deletions include/llvm/Analysis/AliasAnalysis.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,19 +95,60 @@ enum AliasResult {
///
/// This is no access at all, a modification, a reference, or both
/// a modification and a reference. These are specifically structured such that
/// they form a two bit matrix and bit-tests for 'mod' or 'ref' work with any
/// of the possible values.
/// they form a two bit matrix and bit-tests for 'mod' or 'ref'
/// work with any of the possible values.

enum ModRefInfo {
/// The access neither references nor modifies the value stored in memory.
MRI_NoModRef = 0,
/// The access references the value stored in memory.
/// The access may reference the value stored in memory.
MRI_Ref = 1,
/// The access modifies the value stored in memory.
/// The access may modify the value stored in memory.
MRI_Mod = 2,
/// The access both references and modifies the value stored in memory.
MRI_ModRef = MRI_Ref | MRI_Mod
/// The access may reference and may modify the value stored in memory.
MRI_ModRef = MRI_Ref | MRI_Mod,
};

LLVM_NODISCARD inline bool isNoModRef(const ModRefInfo MRI) {
return MRI == MRI_NoModRef;
}
LLVM_NODISCARD inline bool isModOrRefSet(const ModRefInfo MRI) {
return MRI & MRI_ModRef;
}
LLVM_NODISCARD inline bool isModAndRefSet(const ModRefInfo MRI) {
return (MRI & MRI_ModRef) == MRI_ModRef;
}
LLVM_NODISCARD inline bool isModSet(const ModRefInfo MRI) {
return MRI & MRI_Mod;
}
LLVM_NODISCARD inline bool isRefSet(const ModRefInfo MRI) {
return MRI & MRI_Ref;
}

LLVM_NODISCARD inline ModRefInfo setRef(const ModRefInfo MRI) {
return ModRefInfo(MRI | MRI_Ref);
}
LLVM_NODISCARD inline ModRefInfo setMod(const ModRefInfo MRI) {
return ModRefInfo(MRI | MRI_Mod);
}
LLVM_NODISCARD inline ModRefInfo setModAndRef(const ModRefInfo MRI) {
return ModRefInfo(MRI | MRI_ModRef);
}
LLVM_NODISCARD inline ModRefInfo clearMod(const ModRefInfo MRI) {
return ModRefInfo(MRI & MRI_Ref);
}
LLVM_NODISCARD inline ModRefInfo clearRef(const ModRefInfo MRI) {
return ModRefInfo(MRI & MRI_Mod);
}
LLVM_NODISCARD inline ModRefInfo unionModRef(const ModRefInfo MRI1,
const ModRefInfo MRI2) {
return ModRefInfo(MRI1 | MRI2);
}
LLVM_NODISCARD inline ModRefInfo intersectModRef(const ModRefInfo MRI1,
const ModRefInfo MRI2) {
return ModRefInfo(MRI1 & MRI2);
}

/// The locations at which a function might access memory.
///
/// These are primarily used in conjunction with the \c AccessKind bits to
Expand Down Expand Up @@ -187,6 +228,15 @@ enum FunctionModRefBehavior {
FMRB_UnknownModRefBehavior = FMRL_Anywhere | MRI_ModRef
};

// Wrapper method strips bits significant only in FunctionModRefBehavior,
// to obtain a valid ModRefInfo. The benefit of using the wrapper is that if
// ModRefInfo enum changes, the wrapper can be updated to & with the new enum
// entry with all bits set to 1.
LLVM_NODISCARD inline ModRefInfo
createModRefInfo(const FunctionModRefBehavior FMRB) {
return ModRefInfo(FMRB & MRI_ModRef);
}

class AAResults {
public:
// Make these results default constructable and movable. We have to spell
Expand Down Expand Up @@ -520,14 +570,7 @@ class AAResults {
const Optional<MemoryLocation> &OptLoc) {
if (OptLoc == None) {
if (auto CS = ImmutableCallSite(I)) {
auto MRB = getModRefBehavior(CS);
if ((MRB & MRI_ModRef) == MRI_ModRef)
return MRI_ModRef;
if (MRB & MRI_Ref)
return MRI_Ref;
if (MRB & MRI_Mod)
return MRI_Mod;
return MRI_NoModRef;
return createModRefInfo(getModRefBehavior(CS));
}
}

Expand Down Expand Up @@ -570,7 +613,7 @@ class AAResults {

/// \brief Return information about whether a particular call site modifies
/// or reads the specified memory location \p MemLoc before instruction \p I
/// in a BasicBlock. A ordered basic block \p OBB can be used to speed up
/// in a BasicBlock. An ordered basic block \p OBB can be used to speed up
/// instruction ordering queries inside the BasicBlock containing \p I.
ModRefInfo callCapturesBefore(const Instruction *I,
const MemoryLocation &MemLoc, DominatorTree *DT,
Expand Down
2 changes: 1 addition & 1 deletion include/llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ bool InstructionSelector::executeMatchTable(
return false;

for (const auto &MMO : State.MIs[InsnID]->memoperands())
if (isAtLeastOrStrongerThan(MMO->getOrdering(), Ordering))
if (!isStrongerThan(Ordering, MMO->getOrdering()))
if (handleReject() == RejectAndGiveUp)
return false;
break;
Expand Down
24 changes: 0 additions & 24 deletions include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -571,30 +571,6 @@ class MachineIRBuilder {
MachineInstrBuilder buildStore(unsigned Val, unsigned Addr,
MachineMemOperand &MMO);

/// Build and insert `Res<def> = G_ATOMIC_LOAD Addr, MMO`.
///
/// Loads the value stored at \p Addr. Puts the result in \p Res.
///
/// \pre setBasicBlock or setMI must have been called.
/// \pre \p Res must be a generic virtual register.
/// \pre \p Addr must be a generic virtual register with pointer type.
///
/// \return a MachineInstrBuilder for the newly created instruction.
MachineInstrBuilder buildAtomicLoad(unsigned Res, unsigned Addr,
MachineMemOperand &MMO);

/// Build and insert `G_ATOMIC_STORE Val, Addr, MMO`.
///
/// Stores the value \p Val to \p Addr.
///
/// \pre setBasicBlock or setMI must have been called.
/// \pre \p Val must be a generic virtual register.
/// \pre \p Addr must be a generic virtual register with pointer type.
///
/// \return a MachineInstrBuilder for the newly created instruction.
MachineInstrBuilder buildAtomicStore(unsigned Val, unsigned Addr,
MachineMemOperand &MMO);

/// Build and insert `Res0<def>, ... = G_EXTRACT Src, Idx0`.
///
/// \pre setBasicBlock or setMI must have been called.
Expand Down
3 changes: 2 additions & 1 deletion include/llvm/CodeGen/ISDOpcodes.h
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,8 @@ namespace ISD {
/// BUILD_PAIR - This is the opposite of EXTRACT_ELEMENT in some ways.
/// Given two values of the same integer value type, this produces a value
/// twice as big. Like EXTRACT_ELEMENT, this can only be used before
/// legalization.
/// legalization. The lower part of the composite value should be in
/// element 0 and the upper part should be in element 1.
BUILD_PAIR,

/// MERGE_VALUES - This node takes multiple discrete operands and returns
Expand Down
Loading