Skip to content

Commit

Permalink
[SYCLomatic] Fix the regression of __constant__ migration when migrat…
Browse files Browse the repository at this point in the history
…ing multi files together (#318)


Signed-off-by: Jiang, Zhiwei <zhiwei.jiang@intel.com>
  • Loading branch information
zhiweij1 authored Oct 24, 2022
1 parent 6211d5f commit 8d73753
Show file tree
Hide file tree
Showing 31 changed files with 27 additions and 35 deletions.
9 changes: 8 additions & 1 deletion clang/include/clang/Tooling/Core/Replacement.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,14 @@ enum class ConstantFlagType : int {
Default = 0,
Host = 1,
Device = 2,
HostDevice = 3
/// HostDevice means this constant flag is used in both host code and device code.
/// It has been processed by the AST matcher step and all the related replacement
/// or warning has been generated yet.
HostDevice = 3,
/// HostDeviceInOnePass means in PPCallback step, the tool detected this constant
/// flag is used in both host code and device code. But it has not been processed
/// in AST matcher step yet.
HostDeviceInOnePass = 4
};
enum class HelperFileEnum : unsigned int;
}
Expand Down
24 changes: 18 additions & 6 deletions clang/lib/DPCT/ASTTraversal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -357,9 +357,17 @@ void IncludesCallbacks::MacroExpands(const Token &MacroNameTok,
if (auto TM = DpctGlobalInfo::getInstance().findConstantMacroTMInfo(Loc)) {
TM->setLineBeginOffset(getOffsetOfLineBegin(Loc, SM));
if (MI->getNumTokens() == 0) {
TM->setConstantFlag(dpct::ConstantFlagType::Host);
if (TM->getConstantFlag() == dpct::ConstantFlagType::Default ||
TM->getConstantFlag() == dpct::ConstantFlagType::Host)
TM->setConstantFlag(dpct::ConstantFlagType::Host);
else
TM->setConstantFlag(dpct::ConstantFlagType::HostDeviceInOnePass);
} else {
TM->setConstantFlag(dpct::ConstantFlagType::Device);
if (TM->getConstantFlag() == dpct::ConstantFlagType::Default ||
TM->getConstantFlag() == dpct::ConstantFlagType::Device)
TM->setConstantFlag(dpct::ConstantFlagType::Device);
else
TM->setConstantFlag(dpct::ConstantFlagType::HostDeviceInOnePass);
}
}
}
Expand Down Expand Up @@ -10081,7 +10089,8 @@ bool MemVarRule::currentIsDevice(const VarDecl *MemVar,
for (auto &TM : S) {
if (TM == nullptr)
continue;
if (TM->getConstantFlag() == dpct::ConstantFlagType::Device &&
if ((TM->getConstantFlag() == dpct::ConstantFlagType::Device ||
TM->getConstantFlag() == dpct::ConstantFlagType::HostDeviceInOnePass) &&
TM->getLineBeginOffset() == OffsetOfLineBegin) {
TM->setIgnoreTM(true);
// current __constant__ variable used in device, using
Expand All @@ -10094,7 +10103,8 @@ bool MemVarRule::currentIsDevice(const VarDecl *MemVar,
auto &M = FileInfo->getRepls()->getReplMap();
bool RemoveWarning = false;
for (auto &R : M) {
if (R.second->getConstantFlag() == dpct::ConstantFlagType::Host &&
if ((R.second->getConstantFlag() == dpct::ConstantFlagType::Host ||
R.second->getConstantFlag() == dpct::ConstantFlagType::HostDeviceInOnePass) &&
R.second->getConstantOffset() == TM->getConstantOffset()) {
// using flag and the offset of __constant__ to link
// R(dcpt::constant_memery) and R(reomving __constant__) from
Expand Down Expand Up @@ -10193,7 +10203,8 @@ bool MemVarRule::currentIsHost(const VarDecl *VD, std::string VarName) {
for (auto &TM : S) {
if (TM == nullptr)
continue;
if (TM->getConstantFlag() == dpct::ConstantFlagType::Host &&
if ((TM->getConstantFlag() == dpct::ConstantFlagType::Host ||
TM->getConstantFlag() == dpct::ConstantFlagType::HostDeviceInOnePass) &&
TM->getLineBeginOffset() == OffsetOfLineBegin) {
// current __constant__ variable used in host, using OffsetOfLineBegin
// link the R(reomving __constant__) and here
Expand All @@ -10204,7 +10215,8 @@ bool MemVarRule::currentIsHost(const VarDecl *VD, std::string VarName) {
return false;
auto &M = FileInfo->getRepls()->getReplMap();
for (auto &R : M) {
if (R.second->getConstantFlag() == dpct::ConstantFlagType::Device &&
if ((R.second->getConstantFlag() == dpct::ConstantFlagType::Device ||
R.second->getConstantFlag() == dpct::ConstantFlagType::HostDeviceInOnePass) &&
R.second->getConstantOffset() == TM->getConstantOffset()) {
// using flag and the offset of __constant__ to link previous
// execution of previous is device, current is host:
Expand Down
1 change: 1 addition & 0 deletions clang/lib/DPCT/MigrationAction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ void DpctToolAction::runPass(PassKind Pass) {

StaticsInfo::printReplacements(Transforms, Context);
}
Transforms.clear();
}
if (Pass == PassKind::PK_Analysis) {
int RetJmp = 0;
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/d_dh_constant_db.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir d_dh_constant_db
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/d_dh_constant_db_win.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir d_dh_constant_db_win
// RUN: cd d_dh_constant_db_win
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/d_hd_constant_db.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir d_hd_constant_db
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/d_hd_constant_db_win.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir d_hd_constant_db_win
// RUN: cd d_hd_constant_db_win
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/dh_constant_db.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir dh_constant_db
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/dh_constant_db_win.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir dh_constant_db_win
// RUN: cd dh_constant_db_win
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/dh_d_constant_db.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir dh_d_constant_db
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/dh_d_constant_db_win.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir dh_d_constant_db_win
// RUN: cd dh_d_constant_db_win
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/dh_h_constant_db.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir dh_h_constant_db
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/dh_h_constant_db_win.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir dh_h_constant_db_win
// RUN: cd dh_h_constant_db_win
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/dhd_constant_db.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir dhd_constant_db
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/dhd_constant_db_win.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir dhd_constant_db_win
// RUN: cd dhd_constant_db_win
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/dhh_constant_db.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir dhh_constant_db
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/dhh_constant_db_win.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir dhh_constant_db_win
// RUN: cd dhh_constant_db_win
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/h_dh_constant_db.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir h_dh_constant_db
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/h_dh_constant_db_win.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir h_dh_constant_db_win
// RUN: cd h_dh_constant_db_win
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/h_hd_constant_db.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir h_hd_constant_db
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/h_hd_constant_db_win.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir h_hd_constant_db_win
// RUN: cd h_hd_constant_db_win
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/hd_constant_db.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir hd_constant_db
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/hd_constant_db_win.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir hd_constant_db_win
// RUN: cd hd_constant_db_win
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/hd_d_constant_db.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir hd_d_constant_db
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/hd_d_constant_db_win.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir hd_d_constant_db_win
// RUN: cd hd_d_constant_db_win
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/hd_h_constant_db.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir hd_h_constant_db
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/hd_h_constant_db_win.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir hd_h_constant_db_win
// RUN: cd hd_h_constant_db_win
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/hdd_constant_db.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir hdd_constant_db
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/hdd_constant_db_win.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir hdd_constant_db_win
// RUN: cd hdd_constant_db_win
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/hdh_constant_db.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir hdh_constant_db
Expand Down
1 change: 0 additions & 1 deletion clang/test/dpct/hdh_constant_db_win.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// UNSUPPORTED: -linux-
// UNSUPPORTED: -windows-
// RUN: cd %T
// RUN: mkdir hdh_constant_db_win
// RUN: cd hdh_constant_db_win
Expand Down

0 comments on commit 8d73753

Please sign in to comment.