You can compile the code twice, first with
$ gcc -O0 -S -o yourfile_o0.s
Then with:
$ gcc -O3 -S -o yourfile_o3.s
Then you can diff get two resulting assembly files:
$ diff -u yourfile_o0.s yourfile_o3.s $ vim -d yourfile_o0.s yourfile_o3.s $ emacs --eval '(ediff "yourfile_o0.s" "yourfile_o3.s")'
source share