2. Let this function compile using **x86-64****clang** and **gcc** (latest versions) for different optimization levels (compiler options) **-O0**, **-O1**, **-O2**, and analyze the assembly output. Observe how the assembly code changes with optimization.
2. Let this function compile using **x86-64****clang** and **gcc** (latest versions) for different optimization levels (compiler options or flags) **-O0**, **-O1**, **-O2**, and analyze the assembly output. Observe how the assembly code changes with optimization.
3. Switch to **arm gcc** and repeat the compilation and comparision for different levels of optimization. Observe how the assembly code for **x86-64** differs to that of **ARM**.