Only enable inlining of static functions. As a result, when patching a static function, all its callers need to be patches as well. Detect paths that trigger erroneous or undefined behavior due to dereferencing a null pointer. Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap. This flag is enabled by default at -O2 and higher and depends on -fdelete-null-pointer-checks also being enabled.
This is not currently enabled, but may be enabled by -O2 in the future. Perform forward store motion on trees. Perform sparse conditional bit constant propagation on trees and propagate pointer alignment information. This pass only operates on local scalar variables and is enabled by default at -O1 and higher, except for -Og.
It requires that -ftree-ccp is enabled. Perform sparse conditional constant propagation CCP on trees. This pass only operates on local scalar variables and is enabled by default at -O and higher. Propagate information about uses of a value up the definition chain in order to simplify the definitions. For example, this pass strips sign operations if the sign of a value never matters. The flag is enabled by default at -O and higher. This pass is enabled by default at -O1 and higher, except for -Og. Perform conversion of simple initializations in a switch to initializations from a scalar array.
Look for identical code sequences. When found, replace one with a jump to the other. This optimization is known as tail merging or cross jumping. The compilation time in this pass can be limited using max-tail-merge-comparisons parameter and max-tail-merge-iterations parameter. Perform dead code elimination DCE on trees.
Perform conditional dead code elimination DCE for calls to built-in functions that may set errno but are otherwise free of side effects. This flag is enabled by default at -O2 and higher if -Os is not also specified. This also performs jump threading to reduce jumps to jumps.
Perform dead store elimination DSE on trees. A dead store is a store into a memory location that is later overwritten by another store without any intervening loads. In this case the earlier store can be deleted. Perform loop header copying on trees. This is beneficial since it increases effectiveness of code motion optimizations. It also saves one jump. It is not enabled for -Os , since it usually increases code size. Perform loop optimizations on trees. Perform loop nest optimizations. To use this code transformation, GCC has to be configured with --with-isl to enable the Graphite loop transformation infrastructure.
Enable the identity transformation for graphite. For every SCoP we generate the polyhedral representation and transform it back to gimple. Some minimal optimizations are also performed by the code generator isl, like index splitting and dead code elimination in loops. Enable the isl based loop nest optimizer. This is a generic loop nest optimizer based on the Pluto optimization algorithms. It calculates a loop structure optimized for data-locality and parallelism. This option is experimental. Use the Graphite data dependence analysis to identify loops that can be parallelized.
Parallelize all the loops that can be analyzed to not contain loop carried dependences without checking that it is profitable to parallelize the loops. While transforming the program out of the SSA representation, attempt to reduce copying by coalescing versions of different user-defined variables, instead of just compiler temporaries. This may severely limit the ability to debug an optimized program compiled with -fno-var-tracking-assignments.
In the negated form, this flag prevents SSA coalescing of user variables. This option is enabled by default if optimization is enabled, and it does very little otherwise. Attempt to transform conditional jumps in the innermost loops to branch-less equivalents. The intent is to remove control-flow from the innermost loops in order to improve the ability of the vectorization pass to handle these loops. This is enabled by default if vectorization is enabled.
This flag can improve cache performance on big loop bodies and allow further loop optimizations, like parallelization or vectorization, to take place. For example, the loop. Perform loop distribution of patterns that can be code generated with calls to a library. This flag is enabled by default at -O3 , and by -fprofile-use and -fauto-profile. This pass distributes the initialization loops and generates a call to memset zero. Perform loop interchange outside of graphite. This flag can improve cache performance on loop nest and allow further loop optimizations, like vectorization, to take place.
Apply unroll and jam transformations on feasible loops. In a loop nest this unrolls the outer loop by some factor and fuses the resulting multiple inner loops. Perform loop invariant motion on trees. This pass moves only invariants that are hard to handle at RTL level function calls, operations that expand to nontrivial sequences of insns. With -funswitch-loops it also moves operands of conditions that are invariant out of the loop, so that we can use just trivial invariantness analysis in loop unswitching.
The pass also includes store motion. Create a canonical counter for number of iterations in loops for which determining number of iterations requires complicated analysis. Later optimizations then may determine the number easily. Useful especially in connection with unrolling. Perform final value replacement. If a variable is modified in a loop in such a way that its value when exiting the loop can be determined using only its initial value and the number of loop iterations, replace uses of the final value by such a computation, provided it is sufficiently cheap.
This reduces data dependencies and may allow further simplifications. Perform induction variable optimizations strength reduction, induction variable merging and induction variable elimination on trees. This is only possible for loops whose iterations are independent and can be arbitrarily reordered. The optimization is only profitable on multiprocessor machines, for loops that are CPU-intensive, rather than constrained e.
This option implies -pthread , and thus is only supported on targets that have support for -pthread. Perform function-local points-to analysis on trees. This flag is enabled by default at -O1 and higher, except for -Og. Perform scalar replacement of aggregates. This pass replaces structure references with scalars to prevent committing structures to memory too early. Perform merging of narrow stores to consecutive memory addresses. This pass merges contiguous stores of immediate values narrower than a word into fewer wider stores to reduce the number of instructions.
This is enabled by default at -O2 and higher as well as -Os. This is enabled by default at -O and higher. Perform straight-line strength reduction on trees. This recognizes related expressions involving multiplications and replaces them by less expensive calculations when possible. Perform vectorization on trees. This flag enables -ftree-loop-vectorize and -ftree-slp-vectorize if not explicitly specified. Perform loop vectorization on trees. This flag is enabled by default at -O3 and by -ftree-vectorize , -fprofile-use , and -fauto-profile.
Perform basic block vectorization on trees. Alter the cost model used for vectorization. Alter the cost model used for vectorization of loops marked with the OpenMP simd directive. All values of model have the same meaning as described in -fvect-cost-model and by default a cost model defined with -fvect-cost-model is used.
Perform Value Range Propagation on trees. This is similar to the constant propagation pass, but instead of values, ranges of values are propagated. This allows the optimizers to remove unnecessary range checks like array bound checks and null pointer checks. This is enabled by default at -O2 and higher. Null pointer check elimination is only done if -fdelete-null-pointer-checks is enabled. Split paths leading to loop backedges. This can improve dead code elimination and common subexpression elimination. This is enabled by default at -O2 and above. Enables expression of values of induction variables in later iterations of the unrolled loop using the value in the first iteration.
This breaks long dependency chains, thus improving efficiency of the scheduling passes. A combination of -fweb and CSE is often sufficient to obtain the same effect. However, that is not reliable in cases where the loop body is more complicated than a single basic block. It also does not work at all on some architectures due to restrictions in the CSE pass. With this option, the compiler creates multiple copies of some local variables when unrolling a loop, which can result in superior code.
Inline parts of functions. Perform predictive commoning optimization, i. This option is enabled at level -O3. If supported by the target machine, generate instructions to prefetch memory to improve the performance of loops that access large arrays. This option may generate better or worse code; results are highly dependent on the structure of loops within the source code. Do not substitute constants for known return value of formatted output functions such as sprintf , snprintf , vsprintf , and vsnprintf but not printf of fprintf.
This transformation allows GCC to optimize or even eliminate branches based on the known return value of these functions called with arguments that are either constant, or whose values are known to be in a range that makes determining the exact return value possible. For example, when -fprintf-return-value is in effect, both the branch and the body of the if statement but not the call to snprint can be optimized away when i is a bit or smaller integer because the return value is guaranteed to be at most 8.
The -fprintf-return-value option relies on other optimizations and yields best results with -O2 and above. It works in tandem with the -Wformat-overflow and -Wformat-truncation options. The -fprintf-return-value option is enabled by default. Disable any machine-specific peephole optimizations. The difference between -fno-peephole and -fno-peephole2 is in how they are implemented in the compiler; some targets use one, some use the other, a few use both. GCC uses heuristics to guess branch probabilities if they are not provided by profiling feedback -fprofile-arcs.
These heuristics are based on the control flow graph. The default is -fguess-branch-probability at levels -O , -O2 , -O3 , -Os. Reorder basic blocks in the compiled function in order to reduce number of taken branches and improve code locality. Use the specified algorithm for basic block reordering. In addition to reordering basic blocks in the compiled function, in order to reduce number of taken branches, partitions hot and cold basic blocks into separate sections of the assembly and. When -fsplit-stack is used this option is not enabled by default to avoid linker errors , but may be enabled explicitly if using a working linker.
Reorder functions in the object file in order to improve code locality. This is implemented by using special subsections. Reordering is done by the linker so object file format must support named sections and linker must place them in a reasonable way. Allow the compiler to assume the strictest aliasing rules applicable to the language being compiled. In particular, an object of one type is assumed never to reside at the same address as an object of a different type, unless the types are almost the same.
A character type may alias any other type. Even with -fstrict-aliasing , type-punning is allowed, provided the memory is accessed through the union type. So, the code above works as expected. See Structures unions enumerations and bit-fields implementation. However, this code might not:. Similarly, access by taking the address, casting the resulting pointer and dereferencing the result has undefined behavior, even if the cast uses a union type, e.
The -fstrict-aliasing option is enabled at levels -O2 , -O3 , -Os. Align the start of functions to the next power-of-two greater than n , skipping up to m -1 bytes. This ensures that at least the first m bytes of the function can be fetched by the CPU without crossing an n -byte alignment boundary. The second pair of n2: If m2 is not specified, it defaults to n2. Some assemblers only support this flag when n is a power of two; in that case, it is rounded up.
If n is not specified or is zero, use a machine-dependent default. The maximum allowed n option value is If this option is enabled, the compiler tries to avoid unnecessarily overaligning functions. It attempts to instruct the assembler to align by the amount specified by -falign-functions , but not to skip more bytes than the size of the function. Parameters of this option are analogous to the -falign-functions option.
If -falign-loops or -falign-jumps are applicable and are greater than this value, then their values are used instead. Align loops to a power-of-two boundary. If the loops are executed many times, this makes up for any execution of the dummy padding instructions. Align branch targets to a power-of-two boundary, for branch targets where the targets can only be reached by jumping.
In this case, no dummy operations need be executed. This option is left for compatibility reasons. Do not reorder top-level functions, variables, and asm statements. Output them in the same order that they appear in the input file. When this option is used, unreferenced static variables are not removed.
This option is intended to support existing code that relies on a particular ordering. For new code, it is better to use attributes when possible. Additionally -fno-toplevel-reorder implies -fno-section-anchors. Constructs webs as commonly used for register allocation purposes and assign each web individual pseudo register.
This allows the register allocation pass to operate on pseudos directly, but also strengthens several other optimization passes, such as CSE, loop optimizer and trivial dead code remover. Assume that the current compilation unit represents the whole program being compiled. This option should not be used in combination with -flto.
Instead relying on a linker plugin should provide safer and more precise information. This option runs the standard link-time optimizer. When the object files are linked together, all the function bodies are read from these ELF sections and instantiated as if they had been part of the same translation unit. To use the link-time optimizer, -flto and optimization options should be specified at compile time and during the final link. It is recommended that you compile all the files participating in the same link with the same options and also specify those options at link time.
This means, for example, that the inliner is able to inline functions in bar. The above generates bytecode for foo. The important thing to keep in mind is that to enable link-time optimizations you need to use the GCC driver to perform the link step. GCC automatically performs link-time optimization if any of the objects involved were compiled with the -flto command-line option.
You can always override the automatic decision to do link-time optimization by passing -fno-lto to the link command. To make whole program optimization effective, it is necessary to make certain whole program assumptions. The compiler needs to know what functions and variables can be accessed by libraries and runtime outside of the link-time optimized unit. When supported by the linker, the linker plugin see -fuse-linker-plugin passes information to the compiler about used and externally visible symbols. When the linker plugin is not available, -fwhole-program should be used to allow the compiler to make these assumptions, which leads to more aggressive optimization decisions.
When a file is compiled with -flto without -fuse-linker-plugin , the generated object file is larger than a regular object file because it contains GIMPLE bytecodes and the usual final code see -ffat-lto-objects. This means that object files with LTO information can be linked as normal object files; if -fno-lto is passed to the linker, no interprocedural optimizations are applied.
Note that when -fno-fat-lto-objects is enabled the compile stage is faster but you cannot perform a regular, non-LTO link on them. When producing the final binary, GCC only applies link-time optimizations to those files that contain bytecode. GCC automatically selects which files to optimize in LTO mode and which files to link without further processing.
Generally, options specified at link time override those specified at compile time, although in some cases GCC attempts to infer link-time options from the settings used to compile the input files. If you do not specify an optimization level option -O at link time, then GCC uses the highest optimization level used when compiling the object files. Note that it is generally ineffective to specify an optimization level option only at link time and not at compile time, for two reasons.
First, compiling without optimization suppresses compiler passes that gather information needed for effective optimization at link time. Second, some early optimization passes can be performed only at compile time and not at link time. There are some code generation flags preserved by GCC when generating bytecodes, as they need to be used during the final link.
LEIN - collection 02 | Modern Wedding Dressing — LEIN
Currently, the following options and their settings are taken from the first object file that explicitly specifies them: Certain ABI-changing flags are required to match in all compilation units, and trying to override this at link time with a conflicting value is ignored. This includes options such as -freg-struct-return and -fpcc-struct-return. Other options such as -ffp-contract , -fno-strict-overflow , -fwrapv , -fno-trapv or -fno-strict-aliasing are passed through to the link stage and merged conservatively for conflicting translation units.
You can override them at link time. If LTO encounters objects with C linkage declared with incompatible types in separate translation units to be linked together undefined behavior according to ISO C99 6. The behavior is still undefined at run time. Similar diagnostics may be raised for other languages. Another feature of LTO is that it is possible to apply interprocedural optimizations on files written in different languages:. In general, when mixing languages in LTO mode, you should use the same link command options as when mixing languages in a regular non-LTO compilation. Those commands require that ar , ranlib and nm have been compiled with plugin support.
At link time, use the flag -fuse-linker-plugin to ensure that the library participates in the LTO optimization process:. In order to make a static library suitable for both LTO optimization and usual linkage, compile its object files with -flto -ffat-lto-objects. Link-time optimizations do not require the presence of the whole program to operate.
If the program does not require any symbols to be exported, it is possible to combine -flto and -fwhole-program to allow the interprocedural optimizers to use more aggressive assumptions which may lead to improved optimization opportunities. Use of -fwhole-program is not needed when linker plugin is active see -fuse-linker-plugin. The current implementation of LTO makes no attempt to generate bytecode that is portable between different types of hosts.
The bytecode files are versioned and there is a strict version check, so bytecode files generated in one version of GCC do not work with an older or newer version of GCC. If you specify the optional n , the optimization and code generation done at link time is executed in parallel using n parallel jobs by utilizing an installed make program.
- PhDissertation 15.
- Jenne-jeno, A Love Story.
- Adventure Bowhunter: Tom Mirandas Quest for the Super Slam of North American Big Game;
- A context for the last Neandertals of interior Iberia: Los Casares cave revisited.
- The Secret to Teen Power.
- Personal transformation.
The environment variable MAKE may be used to override the program used. The default value for n is 1. This is useful when the Makefile calling GCC is already executing in parallel. Specify the partitioning algorithm used by the link-time optimizer. This option specifies the level of compression used for intermediate language written to LTO object files, and is only meaningful in conjunction with LTO mode -flto.
Valid values are 0 no compression to 9 maximum compression. Values outside this range are clamped to either 0 or 9. If the option is not given, a default balanced compression setting is used. Enables the use of a linker plugin during link-time optimization. This option relies on plugin support in the linker, which is available in gold or in GNU ld 2. This improves the quality of optimization by exposing more code to the link-time optimizer. This information specifies what symbols can be accessed externally by non-LTO object or during dynamic linking. Resulting code quality improvements on binaries and shared libraries that use hidden visibility are similar to -fwhole-program.
See -flto for a description of the effect of this flag and how to use it. Fat LTO objects are object files that contain both the intermediate language and the object code. This makes them usable for both LTO linking and normal linking. This option is effective only when compiling with -flto and is ignored at link time. It requires a linker with linker plugin support for basic functionality.
Additionally, nm , ar and ranlib need to support linker plugins to allow a full-featured build environment capable of building static libraries etc. GCC provides the gcc-ar , gcc-nm , gcc-ranlib wrappers to pass the right options to these tools. With non fat LTO makefiles need to be modified to use them. Note that modern binutils provide plugin auto-load mechanism. After register allocation and post-register allocation instruction splitting, identify arithmetic instructions that compute processor flags similar to a comparison operation based on that arithmetic.
If possible, eliminate the explicit comparison operation. This pass only applies to certain targets that cannot explicitly represent the comparison operation before register allocation is complete. After register allocation and post-register allocation instruction splitting, perform a copy-propagation pass to try to reduce scheduling dependencies and occasionally eliminate the copy. Profiles collected using an instrumented binary for multi-threaded programs may be inconsistent due to missed counter updates.
When this option is specified, GCC uses heuristics to correct or smooth out such inconsistencies. By default, GCC emits an error message when an inconsistent profile is detected. Enable profile feedback-directed optimizations, and the following optimizations, many of which are generally profitable only with profile feedback available:.
Before you can use this option, you must first generate profiling information. See Instrumentation Options , for information about the -fprofile-generate option. By default, GCC emits an error message if the feedback profiles do not match the source code. Note this may result in poorly optimized code. Additionally, by default, GCC also emits a warning message if the feedback profiles do not exist see -Wmissing-profile. If path is specified, GCC looks at the path to find the profile feedback data files. Enable sampling-based feedback-directed optimizations, and the following optimizations, many of which are generally profitable only with profile feedback available:.
If omitted, it defaults to fbdata. For more information, see https: You must also supply the unstripped binary for your program to this tool. The following options control compiler behavior regarding floating-point arithmetic. These options trade off between speed and correctness. All must be specifically enabled.
Do not store floating-point variables in registers, and inhibit other options that might change whether a floating-point value is taken from a register or memory. This option prevents undesirable excess precision on machines such as the where the floating registers of the keep more precision than a double is supposed to have. Similarly for the x86 architecture. For most programs, the excess precision does only good, but a few programs rely on the precise definition of IEEE floating point. Use -ffloat-store for such programs, after modifying them to store all pertinent intermediate computations into variables.
This option allows further control over excess precision on machines where floating-point operations occur in a format with more precision or range than the IEEE standard and interchange floating-point types. It may, however, yield faster code for programs that do not require the guarantees of these specifications. Do not set errno after calling math functions that are executed with a single instruction, e. On Darwin systems, the math library never sets errno. There is therefore no reason for the compiler to consider the possibility that it might, and -fno-math-errno is the default.
When used at link time, it may include libraries or startup files that change the default FPU control word or other similar optimizations. Enables -fno-signed-zeros , -fno-trapping-math , -fassociative-math and -freciprocal-math. Allow re-association of operands in series of floating-point operations. May also reorder floating-point comparisons and thus may not be used when ordered comparisons are required.
This option requires that both -fno-signed-zeros and -fno-trapping-math be in effect. For Fortran the option is automatically enabled when both -fno-signed-zeros and -fno-trapping-math are in effect. Allow the reciprocal of a value to be used instead of dividing by the value if this enables optimizations. Note that this loses precision and increases the number of flops operating on the value. Allow optimizations for floating-point arithmetic that ignore the signedness of zero.
Compile code assuming that floating-point operations cannot generate user-visible traps. These traps include division by zero, overflow, underflow, inexact result and invalid operation. This option requires that -fno-signaling-nans be in effect. Disable transformations and optimizations that assume default floating-point rounding behavior. This is round-to-zero for all floating point to integer conversions, and round-to-nearest for all other arithmetic truncations.
This option should be specified for programs that change the FP rounding mode dynamically, or that may be executed with a non-default rounding mode. This option disables constant folding of floating-point expressions at compile time which may be affected by rounding mode and arithmetic transformations that are unsafe in the presence of sign-dependent rounding modes. This option is experimental and does not currently guarantee to disable all GCC optimizations that are affected by rounding mode.
Setting this option disables optimizations that may change the number of exceptions visible with signaling NaNs. This option implies -ftrapping-math. This option is experimental and does not currently guarantee to disable all GCC optimizations that affect signaling NaN behavior. The default is -ffp-int-builtin-inexact , allowing the exception to be raised. This option does nothing unless -ftrapping-math is in effect.
Treat floating-point constants as single precision instead of implicitly converting them to double-precision constants. When enabled, this option states that a range reduction step is not needed when performing complex division. The default is -fno-cx-limited-range , but is enabled by -ffast-math. Nevertheless, the option applies to all languages. Complex multiplication and division follow Fortran rules. The following options control optimizations that may improve performance, but are not enabled by any -O options.
This section includes experimental options that may produce broken code. After running a program compiled with -fprofile-arcs see Instrumentation Options , you can compile it a second time using -fbranch-probabilities , to improve optimizations based on the number of times each branch was taken. When a program compiled with -fprofile-arcs exits, it saves arc execution counts to a file called sourcename. The information in this data file is very dependent on the structure of the generated code, so you must use the same source code and the same optimization options for both compilations.
These can be used to improve optimization. Currently, they are only used in one place: If combined with -fprofile-arcs , it adds code so that some data about values of expressions in the program is gathered. With -fbranch-probabilities , it reads back the data gathered from profiling values of expressions for usage in optimizations. Enabled by -fprofile-generate , -fprofile-use , and -fauto-profile. Function reordering based on profile instrumentation collects first time of execution of a function and orders these functions in ascending order.
If combined with -fprofile-arcs , this option instructs the compiler to add code to gather information about values of expressions. With -fbranch-probabilities , it reads back the data gathered and actually performs the optimizations based on them. Currently the optimizations include specialization of division operations using the knowledge about the value of the denominator. Attempt to avoid false dependencies in scheduled code by making use of registers left over after register allocation. This optimization most benefits processors with lots of registers.
Performs a target dependent pass over the instruction stream to schedule instructions of same type together because target machine can execute them more efficiently if they are adjacent to each other in the instruction flow. Perform tail duplication to enlarge superblock size. This transformation simplifies the control flow of the function allowing other optimizations to do a better job. Unroll loops whose number of iterations can be determined at compile time or upon entry to the loop.
It also turns on complete loop peeling i. This option makes code larger, and may or may not make it run faster. Unroll all loops, even if their number of iterations is uncertain when the loop is entered. This usually makes programs run more slowly. Peels loops for which there is enough information that they do not roll much from profile feedback or static analysis.
Enables the loop invariant motion pass in the RTL loop optimizer. Enabled at level -O1 and higher, except for -Og. Move branches with loop invariant conditions out of the loop, with duplicates of the loop on both branches modified according to result of the condition. Place each function or data item into its own section in the output file if the target supports arbitrary sections. Use these options on systems where the linker can perform optimizations to improve locality of reference in the instruction space.
Most systems using the ELF object format have linkers with such optimizations. The performance impact varies. Together with a linker garbage collection linker --gc-sections option these options may lead to smaller statically-linked executables after stripping. Only use these options when there are significant benefits from doing so.
When you specify these options, the assembler and linker create larger object and executable files and are also slower. These options affect code generation. They prevent optimizations by the compiler and assembler using relative locations inside a translation unit since the locations are unknown until link time. An example of such an optimization is relaxing calls to short call instructions.
The use of target registers can typically be exposed only during reload, thus hoisting loads out of loops and doing inter-block scheduling needs a separate optimization pass. In some places, GCC uses various constants to control the amount of optimization that is done.
For example, GCC does not inline functions that contain more than a certain number of instructions. You can control some of these constants on the command line using the --param option. The names of specific parameters, and the meaning of the values, are tied to the internals of the compiler, and are subject to change without notice in future releases.
In each case, the value is an integer. The allowable choices for name are:. When branch is predicted to be taken with probability lower than this threshold in percent , then it is considered well predictable. RTL if-conversion tries to remove conditional branches around a block and replace them with conditionally executed instructions. This parameter gives the maximum number of instructions in a block which should be considered for if-conversion.
The compiler will also use other heuristics to decide whether if-conversion is likely to be profitable. RTL if-conversion will try to remove conditional branches around a block and replace them with conditionally executed instructions. These parameters give the maximum permissible cost for the sequence that would be generated by if-conversion depending on whether the branch is statically determined to be predictable or not.
The maximum number of incoming edges to consider for cross-jumping. Increasing values mean more aggressive optimization, making the compilation time increase with probably small improvement in executable size. The minimum number of instructions that must be matched at the end of two blocks before cross-jumping is performed on them.
This value is ignored in the case where all instructions in the block being cross-jumped from are matched. The maximum code size expansion factor when copying basic blocks instead of jumping. The expansion is relative to a jump instruction. The maximum number of instructions to duplicate to a block that jumps to a computed goto.
Only computed jumps at the end of a basic blocks with no more than max-goto-duplication-insns are unfactored. The maximum number of instructions to consider when looking for an instruction to fill a delay slot. If more than this arbitrary number of instructions are searched, the time savings from filling the delay slot are minimal, so stop searching. Increasing values mean more aggressive optimization, making the compilation time increase with probably small improvement in execution time.
When trying to fill delay slots, the maximum number of instructions to consider when searching for a block with valid live register information. Increasing this arbitrarily chosen value means more aggressive optimization, increasing the compilation time. This parameter should be removed when the delay slot code is rewritten to maintain the control-flow graph. The approximate maximum amount of memory that can be allocated in order to perform the global common subexpression elimination optimization.
If more memory than specified is required, the optimization is not done. If the ratio of expression insertions to deletions is larger than this value for any expression, then RTL PRE inserts or removes the expression and thus leaves partially redundant computations in the instruction stream. The maximum number of pending dependencies scheduling allows before flushing the current state and starting over. Large functions with few branches or calls can create excessively large lists which needlessly consume memory and resources. The maximum number of backtrack attempts the scheduler should make when modulo scheduling a loop.
Larger values can exponentially increase compilation time. Several parameters control the tree inliner used in GCC. When you use -finline-functions included in -O3 , a lot of functions that would otherwise not be considered for inlining by the compiler are investigated. To those functions, a different more restrictive limit compared to functions declared inline can be applied. The limit specifying really large functions. For functions larger than this limit after inlining, inlining is constrained by --param large-function-growth.
This parameter is useful primarily to avoid extreme compilation time caused by non-linear algorithms used by the back end. Specifies maximal growth of large function caused by inlining in percents. For example, parameter value limits large function growth to 2. The limit specifying large translation unit. Growth caused by inlining of units larger than this limit is limited by --param inline-unit-growth. For small units this might be too tight.
For example, consider a unit consisting of function A that is inline and B that just calls A three times. For very large units consisting of small inlineable functions, however, the overall unit growth limit is needed to avoid exponential explosion of code size. Thus for smaller units, the size is increased to --param large-unit-insns before applying --param inline-unit-growth. Specifies maximal overall growth of the compilation unit caused by inlining. For example, parameter value 20 limits unit growth to 1.
Cold functions either marked cold via an attribute or by profile feedback are not accounted into the unit size. Specifies maximal overall growth of the compilation unit caused by interprocedural constant propagation. For example, parameter value 10 limits unit growth to 1. The limit specifying large stack frames.
While inlining the algorithm is trying to not grow past this limit too much. Specifies maximal growth of large stack frames caused by inlining in percents. For example, parameter value limits large stack frame growth to 11 times the original size. Specifies the maximum number of instructions an out-of-line copy of a self-recursive inline function can grow into by performing recursive inlining. For functions not declared inline, recursive inlining happens only when -finline-functions included in -O3 is enabled; --param max-inline-insns-recursive-auto applies instead.
For functions not declared inline, recursive inlining happens only when -finline-functions included in -O3 is enabled; --param max-inline-recursive-depth-auto applies instead. Recursive inlining is profitable only for function having deep recursion in average and can hurt for function having little recursion depth by increasing the prologue size or complexity of function body to other optimizers. When profile feedback is available see -fprofile-generate the actual recursion depth can be guessed from the probability that function recurses via a given call expression. This parameter limits inlining only to call expressions whose probability exceeds the given threshold in percents.
Specify growth that the early inliner can make. In effect it increases the amount of inlining for code having a large abstraction penalty. Limit of iterations of the early inliner. This basically bounds the number of nested indirect calls the early inliner can resolve. Deeper chains are still handled by late inlining. A parameter to control whether to use function internal id in profile database lookup. If the value is 0, the compiler uses an id that is based on function assembler name and filename, which makes old profile data more tolerant to source changes such as function reordering etc.
The minimum number of iterations under which loops are not vectorized when -ftree-vectorize is used. The number of iterations after vectorization needs to be greater than the value specified by this option to allow vectorization. Scaling factor in calculation of maximum distance an expression can be moved by GCSE optimizations.
This is currently supported only in the code hoisting pass. The bigger the ratio, the more aggressive code hoisting is with simple expressions, i. Specifying 0 disables hoisting of simple expressions. Cost, roughly measured as the cost of a single typical machine instruction, at which GCSE optimizations do not constrain the distance an expression can travel. The lesser the cost, the more aggressive code hoisting is. Specifying 0 allows all expressions to travel unrestricted distances. The depth of search in the dominator tree for expressions to hoist. This is used to avoid quadratic behavior in hoisting algorithm.
The value of 0 does not limit on the search, but may slow down compilation of huge functions. The maximum amount of similar bbs to compare a bb with. This is used to avoid quadratic behavior in tree tail merging. The maximum amount of iterations of the pass over the function. This is used to limit compilation time in tree tail merging.
The maximum number of instructions that a loop may have to be unrolled. If a loop is unrolled, this parameter also determines how many times the loop code is unrolled. The maximum number of instructions biased by probabilities of their execution that a loop may have to be unrolled. The maximum number of instructions that a loop may have to be peeled. If a loop is peeled, this parameter also determines how many times the loop code is peeled. Bound on number of candidates for induction variables, below which all candidates are considered for each use in induction variable optimizations.
If there are more candidates than this, only the most relevant ones are considered to avoid quadratic time complexity. If the number of candidates in the set is smaller than this value, always try to remove unnecessary ivs from the set when adding a new one. Maximum size in bytes of objects tracked bytewise by dead store elimination.
Larger values may result in larger compilation times. Maximum number of queries into the alias oracle per store. Larger values result in larger compilation times and may result in more removed dead stores. Bound on size of expressions used in the scalar evolutions analyzer. Large expressions slow the analyzer. Bound on the complexity of the expressions in the scalar evolutions analyzer.
Complex expressions slow the analyzer. Charcoal remains collected for radiocarbon dating below the deer scapula. For Los Casares-Seno A sequence, 5 pollen spectra were analyzed and 22 taxa were identified. To facilitate description and interpretation of the pollen diagram with respect to vegetational changes, two Local Pollen Assemblage Zones LPAZs were established Fig These zones denote significant changes in the pollen composition and represent major changes in vegetation. The second axis PCA After analysis of the samples containing microfaunal remains, assemblages identified at Los Casares-Seno A are mainly composed of small mammals, although some bone fragments of fish, amphibian, reptile, and bird are present, albeit scarce and bad preserved.
The small mammals are species of the orders Chiroptera bats , Eulipotyphla insectivores , Lagomorpha rabbits and Rodentia mice , although the three first Orders are very poorly represented. Note that some medium-sized rodents are described in the large mammal section see 4. Specimens are grouped in 25 taxa S , the majority of which were determined to the species level. Percentage of identified taxa per stratigraphic layer.
The species of bats is Myotis Myotis gr. Insectivores are also represented by a single species, the hedgehog Erinaceus uropaeus , a molar of which was found in layer c. Rodents are the most represent taxa, both in species and in MNI. There are 12 species, three of which are extinct: Pliomys lenki , Allocricetus bursae , and Hystrix sp.
The rest, including Eliomys quercinus , Apodemus sp. M1s of Myotis sp. M3s of Arvicola sapidus. M1d of Allocricetus bursae. The scale bar in each figure represents 1mm, except for figure G, where it is 2mm. Note that some authors classify A. We consider that the species C. Charcoal preserved at the site is scarce and remains were scattered throughout the excavated area in levels b and c. However, most of these charcoals come from layer a5, defined as a Holocene intrusion, and hence they have no relevance for studying Middle Paleolithic environments Fig In general terms, since amount of charcoal remains recovered at this site is very low, results, compiled in Table 4 , should be considered carefully.
Samples of levels c and b show a very low taxonomic diversity, since Scots pine type Pinus t. In level c some remains could only be assigned to Coniferae due to the small size of the remains. Concerning level a5, in addition to pine, several angiosperms have been identified: Deciduous , holm-kermes oak Quercus sp.
Evergreen , Leguminosae and an unidentifiable angiosperm. A total of phytoliths corresponding to 20 different morphotypes were identified in the samples, of which phytoliths corresponded to c1, to c2 and only 7 to c3. Due to the low amounts of phytoliths found in the latter, this sample was not included in the study. Samples c1 and c2 showed an abundant presence of phytoliths from the Poaceae grass family with Short cell rondels are common in the C 3 photosynthetic Pooideae grass subfamily, which is common in the Mediterranean area and characteristic of a temperate and humid climate Twiss et al.
Short cell saddles Fig 25B characteristic of the C 4 Chloridoid grass subfamily and common in drier and warmer environments were also noticed but in lower amounts around 2. Other grass morphotypes representing different plants parts such as leaves bulliforms, crenates, etc. Fig 25C as well as the inflorescence elongates echinate, dendritic, papillae, etc.
Fig 25D were also recognized in the samples. Characteristic sedge Cyperaceae phytoliths were noted and represented between 1. Attribution of phytolith morphotypes to plant taxa, plant parts and types of vegetation is shown. Pictures were taken at x. A Rondel short cell; characteristic of Pooideae grass subfamily; B Saddle short cell characteristic of the Chlorodoideae grass subfamily; C Crenate; phytolith characteristic of Pooideae grass subfamily Gramineae ; D Elongate echinate from inflorescence of Poaceae Gramineae. Phytoliths from arboreal woody taxa, most probably dicotyledonous plants, were identified in both samples Nevertheless we cannot disregard the presence of conifers, since some morphotypes such as blocky and tracheids may be found in both groups [ 56 ] Table 6.
In general terms, both phytolith assemblages are very similar and show a predominance of grasses, especially of the Pooideae grass subfamily C 3 and to a lesser extent of the Chloridoideae grass subfamily C 4. Morphological identification also shows the presence of plants belonging to the Cyperaceae family, as well as woody plants Dicotyledonous and possibly Coniferae. This arboreal presence is even more significant considering that phytolith production in grasses is substantially higher than in woody taxa up to twenty times higher , especially in Mediterranean-Alpine environments [ 61 , 96 , 97 ].
A detailed taxonomic and taphonomic analysis of macrofaunal remains has only been possible for level c. Level b has yielded just 52 remains, of which only 8 could be identified as Oryctolagus cuniculus. Juvenile and prime adult; I: The low presence of undetermined material in the latter compared to the new assemblages Table 7 suggest that an artificial selection was made during the excavation process, most probably due to an absence of sediment wet-screening. Concerning carnivores, both assemblages show an equivalent abundant sample Table 7. Together with a higher presence of cranial remains in the old assemblage see below , this evidence suggests that data from the two assemblages should be presented separately Table 7 and Table F in S1 Appendix.
However, since it is clear that both assemblages come from the same stratigraphic context and they both present similar taxonomic and taphonomic profiles, these limited recording biases did not prevent us of considering results together. It shows a high taxonomic diversity, with Iberian ibex as the most represented herbivore species, but also including large bovids, horses, wild asses, deers, roe deers, chamois and wild boars. Among carnivores, the most abundant groups are hyenids and ursids, but canids and felids are also well represented Table 7.
Considering MNI, animals typical of rocky environments, such as Iberian ibex and chamois, are the most relevant, followed by deer. As for carnivores, bear is the most represented with 4 individuals Table 8. Mortality patterns show that adult individuals dominate the faunal assemblage, both for carnivores and herbivores. Infant or juvenile-prime adults individuals have only been identified for Iberian ibex, chamois, deer and large bovid Table 8. Skeletal profiles for level c are biased by the low number of remains recorded for most animal species, with only lagomorphs being above remains.
Concerning level d, skeletal profiles, dominated by teeth, are not considered representative due to the low amount of available faunal remains Table G in S1 Appendix. Trampling affects to 2. Therefore, impact of these processes on the faunal representation is not relevant. Carnivore action has been also recorded in level c, but not in a prominent way considering that bones recording tooth marks are scarce in most taxa Table 9. However, it is very likely that carnivores were responsible for the disappearance of several osseous portions as showed by 1 the mentioned teeth marks, 2 the presence of corrosion marks caused by digestive processes in some lagomorph bones, 3 the relative high amount of carnivores in the assemblage and 4 the absence of axial bones, such as ribs and vertebrae, coupled with the predominance of dense bones, such as teeth or lower appendicular limb bones.
In the bone assemblage of layer d no carnivore alterations have been observed. Concerning human activity, although no percussion marks have been observed in layer c, a limited number of cut marks has been recorded on remains corresponding to Iberian ibex, rabbit and wild ass Table 9. While these marks denote some kind of human action on some animal species, they are not abundant enough to propose any conclusion in terms of economic behavior or subsistence strategies.
No evidence of human action has been recorded on the faunal assemblage of layer d. In sum, faunal assemblages of Los Casares-Seno A can be considered as produced basically by carnivore action, and only sporadically by humans in layer c. Despite the low quantity of artefacts found at the site, it is noteworthy the high proportion of products corresponding to the consumption and abandonment stage No elements have been related to the initialization phase. This predominance of consumption products is even higher when considering only artefacts made on flint Furthermore, most of these products are not simply retouched flakes, but formal tools, especially sidescrapers.
All blanks are flakes except for one sidescraper on blade and one raw blade, both produced on flint. Retouched products, highly dominated by sidescrapers Table 10 , are mostly configured on blanks produced by recurrent centripetal Levallois methods as shown by centripetal scars on dorsal surfaces and facetted platforms Fig Sidescrapers 1,3,4 6—7 , denticulate 2 and point 5. Item 7 is a sidescraper recycled into a core. All these features suggest that the lithic assemblage preserved in level c of Los Casares-Seno A, undoubtedly reflecting a typical Middle Paleolithic technology, is mostly related to consumption activities.
No knapping processes, besides some recycling or maintenance tasks, were developed at this part of the cave, which was perhaps focused on specialized activities as shown by the high presence of sidescrapers and other domestic tools. Concerning level b, only one flint flake was recovered during fieldworks.
Although this finding suggests that previous contentions that this layer was sterile [ 14 ] were probably wrong, it does not suffice to make any chrono-cultural assignment for it. Micromorphological analyses have shown compelling evidence for site formation processes of the Seno A deposit. Level d0 represents differentially crystallised stalagmitic crusts and flowstones several cm thick and accumulated by chemical precipitation over a long period of time. Sediment composition and fabric of levels c and b suggest that they originate from an interplay of different transport and deposition processes within Seno A.
Subsurface flow in the vadose zone of the cave system and possibly infiltration of fines through cracks has accumulated diverse carbonate and siliclastic mineral grains including well-rounded limestone boulders, siliceous gravel or phyllosilicate clay. Hence, in all layers except of b2, subaqueous deposition is not clearly indicated. The contribution of roof-fall during accumulation of levels c to r was probably limited, because few angular to subangular limestone fragments were found.
In the grey layers of level a3 limited roof-fall is included. The small rock fragments disintegrate leaving a clayey loam with reprecipitated calcite grains behind. This weathering product probably formed in water-filled basins of the cave floor. During sediment accumulation of levels c, b0 and r, considerable zoogenic inputs of bat guano and carnivore coprolites occurred. In addition, bone constitutes a major component of most levels, but its origin may be related to both animals and humans. Charcoal is related to anthropogenic input, while the low numbers of charcoal in sediments from sediments below level a4 may at least partly be related to microbial degradation.
Postdepositional processes include corrosion and mechanical disintegration of limestone fragments and calcite grains. This shows, that both partial leaching of carbonates and precipitation of secondary carbonates occurred, with stronger intensities in the lower part of the sequence, probably related to a longer period of time encompassed with sediments of level c. Besides calcitic pedofeatures, few other types of pedofeatures were detected.
Overall, few indicators of post-depositional mixing by sediment dwelling animals were detected in thin section. A prominent feature in the studied thin section is the preservation of sediment boundaries showing accumulation of small charcoal fragments or manganese precipitates at the former surface or remnants of small sedimentary crusts of fine materials. The often high degree of compaction directly underneath these sediment interfaces or in whole layers clearly point to trampling effects during or after the accumulation of the layers.
This is very obvious in sediments from the current cave floor down to level c1. The sequence thus clearly shows good preservation of layering, except of in its lower part archeological level c which neither shows clear evidence of mixing such as burrows nor of preservation of former surfaces, compacted parts or primary deposition by running water.
In sum, micromorphological features support the field distinction between dark or light grey sediments of levels r to a4, and the reddish-brown deposits of levels b0 to c. The sediment sequence in Seno A is well-stratified, particularly in the upper part down to above level c where remnants of several former trampled cave floors are preserved as indicated by characteristic sediment features. Mixing across boundaries between archeological levels was therefore very limited and hence the deposit can be considered as mostly in situ , at least in analyzed samples.
The intensity of post-depositional changes including carbonate leaching and precipitation as well as precipitation of phosphate is higher in level c and b0 than in the upper levels, probably related to a longer time of exposure to this kind of diagenetic changes. Despite problems experienced with collagen-depleted bones, two independent chronometric methods place the Neandertal occupation of the Seno A within the middle-advanced stages of MIS 3.
As the U-series ages obtained for layer d0 flowstone provide a terminus post quem of c. This chronology, which is also consistent with biostratigraphic data provided by micromammal analysis, places the Middle Paleolithic occupation of Los Casares cave-Seno A within the final stages of the Neandertal presence in interior Iberia as currently documented.
Although no reliable chronometric evidence is available for layer b, and its archeological content is uncertain and non-diagnostic, paleoenvironmental data gathered at this layer provide useful insights into its potential age and implications, as it will be discussed below. Taken together, pollen, microvertebrates, charcoal and phyotlith data firmly point to a relatively temperate and humid interval within MIS 3 for level c. The presence of taxa such as Acer , Tilia , Salix , Alnus , Pistacia terebinthus , Fraxinus and deciduous Quercus in pollen samples collected in this level indicates a relatively forested Pyrenean oak landscape enriched in mesophilous trees and shrubs with some black pines [ 98 ].
The contention that central Iberia contained deciduous oak populations during glacial stages [ 99 ] is supported by our results, at least for MIS 3. In this sense, the study area can be considered as a glacial refuge for deciduous oaks and other Late Pleistocene temperate taxa, probably associated with higher water availability along river valleys, as has been reported for other nearby sites during MIS 2 [ ].
Concerning the microvertebrates, the presence of forest-dwelling taxa, such as Sciurus vulgaris and Apodemus , Mediterranean species such as Eliomys quercinus and Hystrix sp. The absence of cold-indicator taxa in this level, such as the snow and tundra voles, is also of relevance here. Evidence shown by proxies reflecting a more anthropogenic input into the site is in agreement with the pollen and microvertebrate results. Phytolith data gathered at level c also point to humid and warm environments, as shown by the high presence of Pooideae and Chloridoideae grass subfamilies and woody plants such as dicotyledonous, which are indicative of woodland landscapes and grassland or shrubs areas [ 59 — 60 , 65 , 96 ].
Although charcoal data have been limited to the presence of Pinus t. Despite the scarcity of archeological or paleontological sites yielding paleoenvironmental data assigned to MIS 3 in interior Iberia, a good parallel for the paleoecological framework reconstructed at Los Casares can be found at Zarzamora Cave Segovia. This site, very close to the northern foothills of the Central System range, is also dominated by Quercus and presents a micromammal assemblage reflecting temperate and humid conditions [ ].
In the southern part of the Central System range, the MIS 5 site of Camino, in Pinilla del Valle [ 52 , ] also shows similar micromammal assemblages, albeit including some cold-indicators taxa which are absent in Los Casares-Seno A level c. Taking together paleoenvironmental and chronometric evidence, layer c of Los Casares cave-Seno A is most probably correlated with Greenland Interstadial 11, starting at However, overlying layer b shows a very different paleoenvironment composition, pointing to a later phase probably correlated with subsequent stadial phases.
It thus demonstrates the climatic variability within the MIS 3 in inland Iberia, and suggests the existence of relatively open black pine woodlands with some holm oak stands, grasslands and an abundant shrub cover of broom communities and juniper [ , ]. This is consistent with microfaunal evidence, as seen in the reduction in the number of taxa identified in level b with respect to c.
Also, the disappearance of forest-dwelling taxa that were present in level c, such as Sciurus vulgaris and Apodemus species, and of Mediterranean indicators such as the dormice, Eliomys quercinus , or the wood mouse, most probably record an increasingly colder climate in layer b. In this context, survival of species such as Arvicola sapidus and Iberomys cabrerae , both related to humid habitats [ ], is best explained considering that they were probably less affected by climatic stress than the Woodland-Mediterranean indicators [ 54 , ].
Despite four radiocarbon attempts, there is no reliable chronometric evidence for layer b, which yielded only 52 macrofaunal remains and a single non-diagnostic flake. However, given chronometric results for levels c and d0, coupled with the paleoenvironmental and geochemical evidence described above, it is very likely that level b corresponds to a stadial phase following GI 11 as recorded in layer c. On this matter, the presence in layer b of the rodent species Pliomys lenki , which went extinct during the Late Pleistocene, points to a MIS 3 chronology.
While the last appearance datum LAD of this species in northern Iberia is around 14 ka cal BP [ ], its presence in the central and southern regions of the peninsula, although not radiometrically dated at the sites of Cova Negra [ ] and Carihuela [ ], suggest a LAD within MIS 3 [ ]. Therefore, the most parsimonious interpretation is that layer b is of MIS 3 age, and most probably not much more recent than layer c, as also supported by sedimentological and geochemical data.
A subsequent hypothesis is that layer b indeed reflects the final stages of Neandertal presence in Los Casares, occurring sometime between c. However, given the scarce archeological content of layer b, some further reflections on this hypothesis will be made below. More recently, some authors have argued for a Neandertal survival south of the Ebro basin until at least c.
Considering that dates for the appearance of the Proto-Aurignacian in the north of Iberia are well established around 42 ka cal BP [ 8 , ], a millennial coexistence between Neandertals and Modern Humans at the peninsular scale was accepted by most researchers until recently.
However, in the very last years, new research focusing on the chronometric evidence [ 9 , 28 ], and especially on new radiocarbon-dating projects based on ultra-filtration pretreatment of bone samples [ 6 , 29 ], have questioned the late Neandertal survival model, thus supporting previous criticisms already raised by some scholars [ — ]. This is a relevant proposal, since it contradicts decades of acceptance of the late Neandertal survival hypothesis as the paradigmatic model.
However, the hypothesis of a not-so-late Neandertal population breakdown south of the Ebro basin has already received some criticism [ 26 — 27 ]. Both in the Mediterranean and Atlantic southern coasts of Iberia, some sites still suggest a post ka cal BP chronology for the last Neandertal presence at the peninsula.
If these late survival cases are accepted, it would imply that Neandertals were present in the southern Iberian coasts at least until c. Since this chronology contradicts current trend suggested by the last chronometric investigations, research on this topic should be kept in the realm of hypothesis and theory building for now.
Considering the Iberian interior territories, the strongest evidences supporting a late Neandertal survival have been unquestionably refuted. At Jarama VI rockshelter Guadalajara , the latest Mousterian occupation, previously radiocarbon dated between c. Since none of these sites have provided any date younger than 42 ka cal BP Fig 29 , the hypothesis of a not-so-late breakdown of Neandertal populations in Iberia remains unchallenged in the interior regions of the peninsula.
Sites having yielded reliable chronometric dates are shown in black. Sites with uncertain results are numbered in red. For complete dating results and methods see [ 6 , 9 , 30 , , — , , ]. Radiocarbon dates were calibrated using OxCal 4. However, an important shortcoming faced by any study dealing with population dynamics in the Late Pleistocene of interior Iberia is the poor quantity and quality of the geoarcheological, paleoenvironmental and chronometric data available.
This issue has been acknowledged in recent chronometric research [ 6 , 9 ], and is most probably due to 1 a lack of research projects in interior Iberia compared to the coastal regions, and 2 the difficulties of locating open-air sites, potentially much more common than cave archives in the Spanish Meseta [ 16 , — ]. In fact, there are three sites that could still suggest a post ka cal BP chronology for Middle Paleolithic contexts in the Spanish plateau. However, these measurements were obtained by the conventional radiocarbon method, and hence a new chronometric program is required before the proposed dates can be considered to be reliable.
However, the excavators of this site cast doubt on these results suggesting that the proposed dates, which contradict geomorphological data, are most probably underestimates [ ]. However, in addition to the high standard deviation of this measurement, and the fact that the date must be considered a terminus ante quem for human activity, a full discussion of methods and results of chronometric research conducted at this site is still to be published. In short, although some uncertainties must be acknowledged when dealing with the Iberian interior territories, no strong chronometric evidence supporting a post ka cal BP survival can be currently attested in them.
In fact, Neandertals occupying the deep interior of Los Casares cave at c. This evidence does not support a late survival of Neandertals in the Iberian interior, but rather suggests a not-so-late disappearance of this human group from these territories, roughly coincident with the proposed chronology for this process in northern Iberia [ 6 , 8 , ]. However, although limited to a single flake and 52 faunal remains with no signs of human action, evidence gathered from layer b of Los Casares-Seno A must be also considered in this discussion. Paleoenvironmental data recorded in this layer show a cold and arid environment most probably correlating with GS 11, GS 10 or H4 c.
Yet, since this is a hypothesis based on scarce empirical evidence, it cannot be used to support a late survival of Neandertals in interior Iberia. Given the still poor record gathered at this layer, and in general the scarce data available for discussing human-environment interactions in the Iberian interior during the Late Pleistocene, these reflections should be taken as working hypotheses to be tested with future research.
In any case, independent of whether layer b represents a late Neandertal presence at Los Casares or just an arid and cold episode devoid of human occupation a question that remains open given that only one flake was recorded at this layer , the current record in interior Iberia shows a pattern in which little or no evidence for a Middle Paleolithic presence is registered after 42 ka cal BP.
If we accept the late persistence of Neandertals in at least some of the southern coastal sites that are currently claimed to reflect Middle Paleolithic occupations until at least c. The exact timing of this potential population movement is a question that needs further research. Notwithstanding, since no Upper Paleolithic occupations have been attested in inland Iberia until c. The breakdown of Neandertal populations in the Iberian interior is best explained as an abandonment of the area due to climatic deterioration or some other internal factor.
This suggest that climate change could have been an important factor contributing to the final demise of the Neandertals [ , — ]. Los Casares cave is a classic site for the study of the Middle Paleolithic settlement of inland Iberia. Despite its relevance in the last quarter of the 20 th century, data on this site was of little use for current research due to a prolonged period of scientific inactivity.
New stratigraphic, micromorphological, chronometric, paleoenvironmental, archeozoological and technological data provided in this study have changed this situation. Los Casares cave has emerged as a relevant multi-proxy archive for studying human-environment interactions and population dynamics at the end of the Middle Paleolithic in the Iberian interior.
Evidence discussed in this paper supports a breakdown of the Neandertal settlement system in inland Iberia around 42 ka cal BP or slightly later, and suggests that this could be related to an abandonment of the interior highlands of the Meseta due to climate deterioration. The last Neandertals of Iberia are thus only found in the southern coastal areas of the peninsula, where a post ka cal BP survival of Middle Paleolithic contexts has not been falsified. Although evidence discussed in this paper represents a significant advance on these topics, the geoarcheological, paleoecological and chronometric record in the Iberian interior are still too weak to allow for theory building at the regional level, despite significant progress in the recent past.
It is our contention that further fieldwork on the under-investigated interior regions of the Iberian Peninsula will substantially change—again—models on population dynamics in Iberia and southwest Europe during this critical period of human prehistory. Until then, unbiased data gathering and hypothesis testing remain crucial.
Rapidshare Download Audio Books Phdissertation Compilation 02 Pdf
On epistemic grounds, far from the classic Kuhnian scenario of rapid and definitive paradigmatic shift—which is rarely verified—, it is our contention that the current scientific situation on the problem of Neandertal disappearance in Iberia should be best considered as a not-so-fast process of data accumulation and hypotheses proposal that should eventually lead to a new big picture on the issue. Whether this picture will be totally different to previously accepted one, slightly different, or even in consonance, is a question that remains open despite great advances in the last years.
Only more fieldwork including excavation of new sites , data gathering not only chronometric, but also stratigraphic, paleoenvironmental and archeological , and problem-oriented research, will eventually lead to still not definitive, but increasingly better, scientific answers. Ongoing investigations in a handful of sites in the interior regions of Iberia, albeit limited to the foothills of the Central System range, the Madrid basin and the Atapuerca area, will hopefully contribute to that end [ , , , , ].
Ariane Burke kindly revised some parts of the text. We thank two anonymous reviewers and the editor for their insightful comments. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. National Center for Biotechnology Information , U. Published online Jul Author information Article notes Copyright and License information Disclaimer. The authors have declared that no competing interests exist. Received Mar 26; Accepted Jun This is an open access article distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited.
This article has been cited by other articles in PMC. Supporting tables on micromorphology and archeozoology and taphonomy. Abstract Introduction and objectives Although the Iberian Peninsula is a key area for understanding the Middle to Upper Paleolithic transition and the demise of the Neandertals, valuable evidence for these debates remains scarce and problematic in its interior regions.
Results and discussion The sediment sequence reveals a mostly in situ archeological deposit containing evidence of both Neandertal activity and carnivore action in level c, dated to 44,—42, calendar years ago. Introduction The Iberian Peninsula has long been considered a crucial scenario for the Middle to Upper Paleolithic transition and the replacement of Neandertals by Modern Humans [ 1 — 6 ].
Open in a separate window. Regional setting of Los Casares. Regional and local setting Los Casares is a southwest-oriented cave eroded in a limestone-dolomite cliff corresponding to the Muschelkalk lithostratigraphic unit Middle Triassic Fig 1B. Local setting of Los Casares. View of the Seno A chamber prior to our fieldwork. Materials and methods Permits and repositories All necessary permits were obtained for the described study, which complied with all relevant regulations.
Excavation, stratigraphy and sampling Previous work at the Seno A conducted by I. Micromorphology For micromorphology, five sediment monoliths were extracted from the upper part of the sequence at different excavation areas, covering layers r to c2. Thin section scans of the flowstone of d0 at profile 3R under plain polarized light A and crossed polarizers B.
Radiocarbon dating From level b, two charcoal fragments and two faunal bones were selected for radiocarbon dating. Archeozoology and taphonomy 52 faunal remains from level b, 1, from level c and 85 from level d were subject to zooarcheological and taphonomic analyses at the Prehistory Department of the Complutense University of Madrid. Lithic technology Besides one single flint flake collected in layer b, all lithic artefacts recovered at Los Casares-Seno A come from level c. Stratigraphic position of two dated charcoals is shown. Thin section scans from profile 3R including microstratigraphic subdivision of archeological levels and presumed former surfaces of the cave floor, compacted by trampling.
Selected areas of thin sections scanned under PPL and XPL conditions for illustration of some stratigraphic details on a larger scale. Table 2 Radiocarbon dates obtained on charcoal samples collected at of Los Casares cave-Seno A deposit. Location of charcoal sample COL Microvertebrates After analysis of the samples containing microfaunal remains, assemblages identified at Los Casares-Seno A are mainly composed of small mammals, although some bone fragments of fish, amphibian, reptile, and bird are present, albeit scarce and bad preserved.
Level r a5 b c Fishes 0 0 0 2 Reptiles and amphibians 0 0 1 9 Birds 0 4 4 10 Chiroptera indet. Distribution of small vertebrates identified in Los Casares cave-Seno A. Selected specimens from level c of Los Casares cave-Seno A. Wood charcoal Charcoal preserved at the site is scarce and remains were scattered throughout the excavated area in levels b and c. Layer c b a5 Unidentifiable angiosperm 1 Coniferae 6 3 Fraxinus sp.
Phytoliths A total of phytoliths corresponding to 20 different morphotypes were identified in the samples, of which phytoliths corresponded to c1, to c2 and only 7 to c3. Table 5 Main phytolith results. Microphotographs of phytoliths identified at level c Los Casares cave-Seno A. Macrovertebrates A detailed taxonomic and taphonomic analysis of macrofaunal remains has only been possible for level c.
Table 9 Main bone alterations documented in level c. Note that stage I Initialization is totally absent. Table 10 Technological categories with respect to lithic raw materials identified at level c of Los Casares cave-Seno A. Technological categories Flint Quartzite Total Raw flake 4 4 9.
Mousterian lithic artefacts from level c of Los Casares cave-Seno A. Discussion Site formation processes Micromorphological analyses have shown compelling evidence for site formation processes of the Seno A deposit. Chronological and paleoenvironmental framework Despite problems experienced with collagen-depleted bones, two independent chronometric methods place the Neandertal occupation of the Seno A within the middle-advanced stages of MIS 3. Correlation of radiocarbon calibrated date COL Final remarks Los Casares cave is a classic site for the study of the Middle Paleolithic settlement of inland Iberia.
Supporting information S1 Appendix Supporting tables on micromorphology and archeozoology and taphonomy. PDF Click here for additional data file. Data Availability All relevant data are within the paper and its Supporting Information files. Neandertal acculturation in Western Europe? A critical review of the evidence and its interpretation. A mosaic of change: The Neandertal-modern human meeting in Iberia: When Neanderthals and Modern Humans Met.
Pego do Diabo Loures, Portugal: Dating the emergence of anatomical modernity in westernmost Eurasia. Radiocarbon dating casts doubt on the late chronology of the Middle to Upper Palaeolithic transition in southern Iberia. Late survival of Neanderthals at the southernmost extreme of Europe. Current issues in late Middle Palaeolithic chronology: New assessments from Northern Iberia. Puig y Larraz C. Tomo II, segunda serie. Las cuevas de los Casares y de la Hoz.
Figuras antropomorfas en la cueva de Los Casares Guadalajara. La cueva de los Casares, Riba de Saelices, Guadalajara. Regreso a la Cueva de Los Casares Guadalajara. La Huella del Pasado. Testing population hiatuses in the Late Pleistocene of Central Iberia: New U-series results for the speleogenesis and the Palaeolithic archaeology of the Almonda karstic system Torres Novas, Portugal. The transition in southern Iberia: Insights from paleoclimatology and the Early Upper Palaeolithic. New evidence of early Neanderthal disappearance in the Iberian Peninsula.
The timing and spatiotemporal patterning of Neanderthal disappearance. Re-use and recycling processes in the Lower and Middle Paleolithic contexts of the central Iberian Peninsula. Soil Science Society of America; International Journal of Mass Spectrometry. Ivanovich M, Harmon RS. Oxford University Press; Scholz D, Hoffmann D. Improvements in Th dating, Th and U half-life values, and U-Th isotopic measurements by multi-collector inductively coupled plasma mass spectrometry. Earth Planet Sci Lett. Bronk Ramsey C, Lee S. Recent and planned developments of the program OxCal.
Pinus nigra Spanish black pine as the dominant species of the last glacial pinewoods in south-western to central Iberia: Illinois State Museum; Environmental and climatic context of Neanderthal occupation in southwestern Europe during MIS3 inferred from the small-vertebrate assemblages. Mode of occupation of Tabun Cave, Mt. Carmel Israel, during the Mousterian period: A study of the sediments and the phytoliths. International code for phytolith nomenclature 1.
Barboni D, Bremond L. Phytoliths of East African grasses: An assessment of their environmental and taxonomic significance based on floristic data. The Phytolith Archaeological Record: Morphometric analysis of phytoliths: A new tool to improve efficiency in the management and exchange of information on phytoliths. Phytoliths types and type-frequencies in subalpine-alpin plant species of the European Alps.
New Jersey Sea Grant Annual Report 1978-1986
Neanderthal use of plants and past vegetation reconstruction at the Middle Paleolithic site of Abrigo de la Quebrada Chelva, Valencia, Spain. Taphonomy of phytoliths and macroplants in different soils from Olduvai Gorge Tanzania and the application to Plio-Pleistocene palaeoanthropological samples. Madella M, Lancelotti C. Relative abundance of skeletal specimens and taphonomic analysis of vertebrate remains.