Synthesis usally comprises of the following : 1> Read library, 2> read hdl (analyze & elaborate) and then we do compile.
Clocks are usally defined in SDC or some constraint file. You will not need this constraint file unless you reach the compile phase.
After doing synthesis we analyze the reports for timing, area and congestion etc.. because if these cannot be met in the synthesis phase then later it would be more challenge. Now, in order to infer that we have to ensure that DC/RTL compiler has optimized the design.(compile) As we know that any optimization requires constraints hence we have to specify clocks and additional constraints like output_delay, input_delay, set_drive, set_load etc...
In case you do not want to add clocks and just want to optimize few paths, then you can use set_max_delay/set_min_delay and do it.
However, note that without the clock definitions you cannot even do report_timing and synthesis wihtout STA is handicapped.
Ro9ty