https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114596
--- Comment #5 from sandra at gcc dot gnu.org --- Tobias, it looks to me like you missed the connection between the first half of item (1) in 7.3 (I'm still looking at the 5.2 spec): "Each trait selector for which the corresponding trait appears in the construct trait set in the OpenMP context is given the value 2**(p−1) where p is the position of the corresponding trait, cp, in the context construct trait set..." And this part of section 7.1: "Specifically, the ordering of the set of constructs is c1 , ... , cN , where c1 is the construct at the outermost nesting level and cN is the construct at the innermost nesting level." So, the outermost construct has the *lowest* position and *lowest* score. In this case, the "teams" construct is outermost, has p=1, and contributes 2**0 to the score. And to get the highest score for the duplicated construct traits, it should prefer the innermost ones. Re the adding one to the final score, that is also explicit in the spec, item 6 at the very end of section 7.3.