diff options
| author | Tom Stellard <thomas.stellard@amd.com> | 2013-11-18 19:43:38 +0000 | 
|---|---|---|
| committer | Tom Stellard <thomas.stellard@amd.com> | 2013-11-18 19:43:38 +0000 | 
| commit | 44248e0f631beec23db16fa62ddfd799492ea3ff (patch) | |
| tree | e7e188660c679c4a9770c3162c38630e32f25e86 /lib | |
| parent | ef37e453c407675ab5934d2f6bcec706b7810878 (diff) | |
| download | external_llvm-44248e0f631beec23db16fa62ddfd799492ea3ff.zip external_llvm-44248e0f631beec23db16fa62ddfd799492ea3ff.tar.gz external_llvm-44248e0f631beec23db16fa62ddfd799492ea3ff.tar.bz2  | |
R600: Fix a crash in the AMDILCFGStrucurizer
The ifPatternMatch() function was not correctly reporting the number
of matches in some cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195030 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/Target/R600/AMDILCFGStructurizer.cpp | 13 | 
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/Target/R600/AMDILCFGStructurizer.cpp b/lib/Target/R600/AMDILCFGStructurizer.cpp index beaaba8..507570f 100644 --- a/lib/Target/R600/AMDILCFGStructurizer.cpp +++ b/lib/Target/R600/AMDILCFGStructurizer.cpp @@ -1005,13 +1005,14 @@ int AMDGPUCFGStructurizer::ifPatternMatch(MachineBasicBlock *MBB) {      return 0;    assert(isCondBranch(BranchMI)); +  int NumMatch = 0;    MachineBasicBlock *TrueMBB = getTrueBranch(BranchMI); -  serialPatternMatch(TrueMBB); -  ifPatternMatch(TrueMBB); +  NumMatch += serialPatternMatch(TrueMBB); +  NumMatch += ifPatternMatch(TrueMBB);    MachineBasicBlock *FalseMBB = getFalseBranch(MBB, BranchMI); -  serialPatternMatch(FalseMBB); -  ifPatternMatch(FalseMBB); +  NumMatch += serialPatternMatch(FalseMBB); +  NumMatch += ifPatternMatch(FalseMBB);    MachineBasicBlock *LandBlk;    int Cloned = 0; @@ -1040,7 +1041,7 @@ int AMDGPUCFGStructurizer::ifPatternMatch(MachineBasicBlock *MBB) {      && isSameloopDetachedContbreak(FalseMBB, TrueMBB)) {      LandBlk = *TrueMBB->succ_begin();    } else { -    return handleJumpintoIf(MBB, TrueMBB, FalseMBB); +    return NumMatch + handleJumpintoIf(MBB, TrueMBB, FalseMBB);    }    // improveSimpleJumpinfoIf can handle the case where landBlk == NULL but the @@ -1068,7 +1069,7 @@ int AMDGPUCFGStructurizer::ifPatternMatch(MachineBasicBlock *MBB) {    numClonedBlock += Cloned; -  return 1 + Cloned; +  return 1 + Cloned + NumMatch;  }  int AMDGPUCFGStructurizer::loopendPatternMatch() {  | 
