# [Charcoal], 56 bytes

    WS⊞υιP⪫υ¶W⊕⌕⪪HIO>^<v¹KK¿‹ι⁴¿⁼⊖ι﹪φ²⎚M✳⊗φ«≔ιφ✳⊗φψ»≔KKθ⎚⁼θψ

[Try it online!][TIO-l2a8x6sh] Link is to verbose version of code. Takes input as a list of newline-terminated strings and outputs `-` if the program does not halt, nothing if it halts. Explanation:

    WS⊞υιP⪫υ¶

Input the instructions and print them to the canvas without moving the cursor.

    W⊕⌕⪪HIO>^<v¹KK

While the character under the cursor is a valid instruction:

    ¿‹ι⁴

If this was an intersection-type character, then...

    ¿⁼⊖ι﹪φ²⎚

... if this intersection should halt the program than clear the canvas, causing the loop to exit, ...

    M✳⊗φ

... otherwise move on through the intersection.

    «≔ιφ✳⊗φψ»

Otherwise, update the direction, replace the current character with a null marker and move in the new direction.

    ≔KKθ⎚⁼θψ

Output whether the cursor landed on a null marker, indicating an infinite loop.

[Charcoal]: https://github.com/somebody1234/Charcoal
[TIO-l2a8x6sh]: https://tio.run/##bY9BS8QwEIXPm18ReppAPKx4aymIddmKyxb2Kgu1nW4HY9I2SUXE317T3aqXhVzy3nxv3lRtOVSmVNP00ZJCDrnuvDu4gfQJhOCFty14yUnEbOeVoy44Dp4M6VmOXnQkgvUHVwO@o3ZYw4Z0DYdOkYNom@/TYzJGkq@F5AXiW8gO6dRweEZrgSS/W/6PvS@VhQz/oyhAO1N7ZaCR/HYmHxSWA4iYo7IYzBEhowErR0ZDZvyrClwj5m7niS@2ureWTnpe1QR1VZwPuQpJ/hkmvtlCXPpK3gfxdy@74EvZfiZEPE1pno5sTPYJ26ZHFt50M6of "Charcoal – Try It Online"