Skip to content

DialectConversion.cpp doesn't compile on 32-bit x86 #44112

@DimitryAndric

Description

@DimitryAndric
Bugzilla Link 44767
Resolution FIXED
Resolved on Feb 06, 2020 02:26
Version unspecified
OS All
Blocks #43900
CC @zmodem,@jpienaar,@River707

Extended Description

While building 10.0.0 rc1 for FreeBSD on 32-bit x86 (aka i386-freebsd), I got the following compile error in mlir:

/home/dim/llvm/10.0.0/rc1/llvm-project/mlir/lib/Transforms/DialectConversion.cpp:787:67: error: non-constant-expression cannot be narrowed from type 'unsigned int' to 'Region::iterator::difference_type' (aka 'int') in initializer list [-Wc++11-narrowing]
blockActions.push_back(BlockAction::getMove(&block, {&region, position}));
^~~~~~~~
/home/dim/llvm/10.0.0/rc1/llvm-project/mlir/lib/Transforms/DialectConversion.cpp:787:67: note: insert an explicit cast to silence this issue
blockActions.push_back(BlockAction::getMove(&block, {&region, position}));
^~~~~~~~
static_cast<difference_type>( )
1 error generated.

This is because BlockPosition::position is not of type 'unsigned', but 'Region::iterator::difference_type'.

Likely fix:

diff --git a/mlir/lib/Transforms/DialectConversion.cpp b/mlir/lib/Transforms/DialectConversion.cpp
index 3f202c2a95b..bf79266dc8b 100644
--- a/mlir/lib/Transforms/DialectConversion.cpp
+++ b/mlir/lib/Transforms/DialectConversion.cpp
@@ -783,7 +783,7 @@ void ConversionPatternRewriterImpl::notifyRegionIsBeingInlinedBefore(
Region &region, Region &parent, Region::iterator before) {
for (auto &pair : llvm::enumerate(region)) {
Block &block = pair.value();

  • unsigned position = pair.index();
  • Region::iterator::difference_type position = pair.index();
    blockActions.push_back(BlockAction::getMove(&block, {&region, position}));
    }
    }

Metadata

Metadata

Assignees

Labels

bugzillaIssues migrated from bugzillamlir:coreMLIR Core Infrastructure

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions