Should have changed the subject line...
Hongbin is right. Running your test case gives:
$ polly-opt -polly-detect -analyze /tmp/test.ll -debug-only=polly-detect
Checking region: entry => <Function Return>
Top level region is invalid
Checking region: for.cond2 => for.end8
Condition in BB 'for.cond2' neither constant nor an icmp
Did you try this test case on the open source version of Polly? In case you want to support this code in the open source version of Polly, the way to go is pretty simple. You first enhance -polly-detect to allow boolean operations like 'and' and 'or'. You then change TempScop and ScopInfo to support those. The changes are pretty straightforward. You just need to keep track of a list of conditions and then and/or the conditions with isl when generating the iteration space.