1 + 2 == 3
1 | 2 == 3
но
1 + 3 == 4
1 | 3 == 3
ибо 1 | 3 - это поразрядное ИЛИ, то есть берём в двоичной 01 и 11, и в результате ставим те разряды в 1, для которых у хотя бы одного аргумента на том же месте стоит 1, и получается снова 11 (т.е. 3 в десятичной).
ваш примерМожете проверить значение константы как-то так: echo(XHPROF_FLAGS_CPU);
Обычно флаги задаются степенями двойки: 1, 2, 4, 8, 16 и т.д., поэтому их можно складывать через + и обычно это не является ошибкой, но по-хорошему правильнее использовать | для флагов.