Angel Heart
(1987)

Louis Cypher (Robert DeNiro) hired private detective Harold Angel to find singer Johnny Favorite, who disappeared years ago. Angel finally discovers that he himself IS Johnny Favorite!

Johnny Favorite, an evil, ambitious man, had sold his soul to Lucifer, the Devil, to become rich and famous. Favorite thought he had found a way to trick Lucifer and avoid going to Hell. He carried out a black magic ritual in which he killed the real Harold Angel, ate Harold Angel's heart, and assumed Harold Angel's identity. Johnny Favorite hoped Lucifer would never be able to find him or claim his soul if he inhabited someone' else's body.

Ever since then, the soul of Johnny Favorite has inhabited a body that looked like Harold Angel. Most of the time, Harold Angel himself didn't know Johnny Favorite was inside him- but occasionally, Johnny Favorite would take control and commit murders to protect himself. All of the people who were dying during the investigation were killed by Harold Angel, during the times when Johnny Favorite was in control.

However, Lucifer was not fooled. "Lewis Cypher" (which sounds like Lucifer) is the Devil himself, and he put Harold Angel on the case to force Angel to see who he really was.

Angel realizes that he killed many people, including Evangeline (Lisa Bonet), who was actually Johnny Favorite's own daughter. HE goes back to the hotel where he left Evangeline. The police are waiting there, beside Evangeline's dead body, and they tell him "You're going to burn for this."

Angel replie, "I know. In Hell." In the very last scene, Angel is seen in an elevator going down. This probably means he's been executed for murder, and is symbolically going down to Hell for his sins. 

Thanks John L.!

IMDB